aboutsummaryrefslogtreecommitdiff
path: root/contrib/microsoft.direct3d.d3d12.1.618.4
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/microsoft.direct3d.d3d12.1.618.4')
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/.signature.p7sbin0 -> 25733 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE-CODE.txt21
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE.txt158
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/Microsoft.Direct3D.D3D12.nuspec18
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/README.md310
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/[Content_Types].xml19
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/_rels/.rels5
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml38
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props9
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets35
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dllbin0 -> 4818976 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdbbin0 -> 8605696 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dllbin0 -> 2758176 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exebin0 -> 2472008 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdbbin0 -> 3133440 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2781184 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dllbin0 -> 5065800 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdbbin0 -> 9506816 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exebin0 -> 730656 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdbbin0 -> 1339392 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dllbin0 -> 3967520 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdbbin0 -> 11415552 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dllbin0 -> 2182216 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exebin0 -> 1885728 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdbbin0 -> 3477504 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2879488 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dllbin0 -> 4268064 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdbbin0 -> 9277440 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exebin0 -> 625736 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdbbin0 -> 1503232 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dllbin0 -> 4821536 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdbbin0 -> 9170944 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dllbin0 -> 2718280 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exebin0 -> 2433048 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdbbin0 -> 3346432 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2838528 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dllbin0 -> 4932632 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdbbin0 -> 10055680 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exebin0 -> 727112 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdbbin0 -> 1396736 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp2634
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h36890
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl7016
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h899
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl101
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h977
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl291
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl119
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h4280
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl1860
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h495
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h10726
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl3818
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h1133
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl991
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h998
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl195
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h36
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h193
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h1162
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h2072
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h12
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h1718
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h128
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h105
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h612
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h1227
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h2570
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h144
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl139
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp2601
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/distributable files.txt5
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/icon.pngbin0 -> 11908 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/package/services/metadata/core-properties/20c8cfa303e54def8eaf74afbcdc6295.psmdcp9
74 files changed, 86769 insertions, 0 deletions
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/.signature.p7s b/contrib/microsoft.direct3d.d3d12.1.618.4/.signature.p7s
new file mode 100644
index 0000000..a310c26
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/.signature.p7s
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE-CODE.txt b/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE-CODE.txt
new file mode 100644
index 0000000..63447fd
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE-CODE.txt
@@ -0,0 +1,21 @@
1Copyright (c) Microsoft Corporation.
2
3MIT License
4
5Permission is hereby granted, free of charge, to any person obtaining a copy
6of this software and associated documentation files (the "Software"), to deal
7in the Software without restriction, including without limitation the rights
8to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9copies of the Software, and to permit persons to whom the Software is
10furnished to do so, subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21SOFTWARE. \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE.txt b/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE.txt
new file mode 100644
index 0000000..de7d649
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/LICENSE.txt
@@ -0,0 +1,158 @@
1MICROSOFT SOFTWARE LICENSE TERMS
2
3MICROSOFT DIRECTX
4
5These license terms are an agreement between you and Microsoft
6Corporation (or one of its affiliates). They apply to the software named
7above and any Microsoft services or software updates (except to the
8extent such services or updates are accompanied by new or additional
9terms, in which case those different terms apply prospectively and do
10not alter your or Microsoft’s rights relating to pre-updated software or
11services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS
12BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS.
13
14INSTALLATION AND USE RIGHTS.
15
16General. 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.
17
18Included 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.
19
20Microsoft 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.
21
22Third 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.
23
24DATA.
25
26Data 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.
27
28Processing 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.
29
30DISTRIBUTABLE 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.
31
32Distribution Rights. The code and test files described below are distributable if included with the software.
33
34Distributables. You may copy and distribute the object code form of the software listed in the distributables file list in the software; and
35
36Third 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.
37
38Distribution Requirements. For any code you distribute, you must:
39
40add significant primary functionality to it in your applications;
41
42i. require distributors and external end users to agree to terms that protect it and Microsoft at least as much as this agreement; and
43
44ii. 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.
45
46Distribution Restrictions. You may not:
47
48use 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.
49
50SCOPE 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):
51
52work around any technical limitations in the software that only allow you to use it in certain ways;
53
54reverse 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;
55
56remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;
57
58use the software in any way that is against the law or to create or propagate malware; or
59
60share, 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.
61
62EXPORT 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.
63
64SUPPORT 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.
65
66UPDATES. 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.
67
68ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software.
69
70APPLICABLE 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.
71
72CONSUMER 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:
73
74a. Australia. You have statutory guarantees under the Australian
75 Consumer Law and nothing in this agreement is intended to affect
76 those rights.
77
78b. Canada. If you acquired this software in Canada, you may stop
79 receiving updates by turning off the automatic update feature,
80 disconnecting your device from the Internet (if and when you
81 re-connect to the Internet, however, the software will resume
82 checking for and installing updates), or uninstalling the software.
83 The product documentation, if any, may also specify how to turn off
84 updates for your specific device or software.
85
86c. Germany and Austria.
87
88 i. Warranty. The properly licensed software will perform substantially
89 as described in any Microsoft materials that accompany the software.
90 However, Microsoft gives no contractual guarantee in relation to the
91 licensed software.
92
93 ii. Limitation of Liability. In case of intentional conduct, gross
94 negligence, claims based on the Product Liability Act, as well as, in
95 case of death or personal or physical injury, Microsoft is liable
96 according to the statutory law.
97
98Subject 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.
99
100DISCLAIMER 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.
101
102LIMITATION 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.
103
104This limitation applies to (a) anything related to the software,
105services, content (including code) on third party Internet sites, or
106third party applications; and (b) claims for breach of contract,
107warranty, guarantee, or condition; strict liability, negligence, or
108other tort; or any other claim; in each case to the extent permitted by
109applicable law.
110
111It also applies even if Microsoft knew or should have known about the
112possibility of the damages. The above limitation or exclusion may not
113apply to you because your state, province, or country may not allow the
114exclusion or limitation of incidental, consequential, or other damages.
115
116Please note: As this software is distributed in Canada, some of the
117clauses in this agreement are provided below in French.
118
119Remarque: Ce logiciel étant distribué au Canada, certaines des clauses
120dans ce contrat sont fournies ci-dessous en français.
121
122EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert «
123tel quel ». Toute utilisation de ce logiciel est à votre seule risque et
124péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez
125bénéficier de droits additionnels en vertu du droit local sur la
126protection des consommateurs, que ce contrat ne peut modifier. La ou
127elles sont permises par le droit locale, les garanties implicites de
128qualité marchande, d’adéquation à un usage particulier et d’absence de
129contrefaçon sont exclues.
130
131LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES
132DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une
133indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $
134US. Vous ne pouvez prétendre à aucune indemnisation pour les autres
135dommages, y compris les dommages spéciaux, indirects ou accessoires et
136pertes de bénéfices.
137
138Cette limitation concerne:
139
140• tout ce qui est relié au logiciel, aux services ou au contenu (y
141compris le code) figurant sur des sites Internet tiers ou dans des
142programmes tiers; et
143
144• les réclamations au titre de violation de contrat ou de garantie, ou
145au titre de responsabilité stricte, de négligence ou d’une autre faute
146dans la limite autorisée par la loi en vigueur.
147
148Elle s’applique également, même si Microsoft connaissait ou devrait
149connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas
150l’exclusion ou la limitation de responsabilité pour les dommages
151indirects, accessoires ou de quelque nature que ce soit, il se peut que
152la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre
153égard.
154
155EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques.
156Vous pourriez avoir d’autres droits prévus par les lois de votre pays.
157Le présent contrat ne modifie pas les droits que vous confèrent les lois
158de votre pays si celles-ci ne le permettent pas.
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/Microsoft.Direct3D.D3D12.nuspec b/contrib/microsoft.direct3d.d3d12.1.618.4/Microsoft.Direct3D.D3D12.nuspec
new file mode 100644
index 0000000..c625e1f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/Microsoft.Direct3D.D3D12.nuspec
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="utf-8"?>
2<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
3 <metadata>
4 <id>Microsoft.Direct3D.D3D12</id>
5 <version>1.618.4</version>
6 <title>Microsoft.Direct3D.D3D12</title>
7 <authors>Microsoft</authors>
8 <owners>Direct3D,Microsoft</owners>
9 <requireLicenseAcceptance>false</requireLicenseAcceptance>
10 <license type="file">LICENSE.txt</license>
11 <licenseUrl>https://aka.ms/deprecateLicenseUrl</licenseUrl>
12 <icon>icon.png</icon>
13 <projectUrl>https://aka.ms/directx12agility</projectUrl>
14 <description>DirectX 12 Agility SDK</description>
15 <copyright>© Microsoft Corporation. All rights reserved.</copyright>
16 <tags>DirectX Direct3D D3D12 Direct3D12 DirectX12 Agility</tags>
17 </metadata>
18</package> \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/README.md b/contrib/microsoft.direct3d.d3d12.1.618.4/README.md
new file mode 100644
index 0000000..a56d65e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/README.md
@@ -0,0 +1,310 @@
1# DirectX 12 Agility SDK Redistributable NuGet Package
2
3This package contains a copy of the DirectX 12 Agility SDK redistributable runtime and its associated development headers.
4
5For help getting started and other information for the Agility SDK, please see:
6
7https://aka.ms/directx12agility
8
9The included licenses apply to the following files:
10
11- **LICENSE.txt** : applies to all files under `build/native/bin/`
12- **LICENSE-CODE.txt** : applies to all files under `build/native/include/`
13
14## Changelog
15
16### Version 1.618.4:
17
18- Fix for broken behavior when using AddToStateObject and driver is newer than those that existed during 1.618 initial release (i.e. must be DDI version 119+)
19
20- Debug layer validation fix: Simultaneous access texture with common layout supports render target access; Skip layout validation when undefined layout is used as both before and after layouts.
21
22### Version 1.618.3:
23- Runtime regression fix: Creating resources in state D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE with custom heap properties validated L0 and L1 in backwards order. Apps hitting this incorrect stricter validation even if they didn't use new AgilitySDK just by using PIX which uses latest SDK, hence it looks like PIX regressed. At least one developer also hit this bug directly.
24
25- Debug layer validation regression fix (no runtime impact): New compute and work graph dispatch grid size validation incorrectly validated against the mesh shader's 2^22 limit everywhere. Compute dispatch has no spec limit, and the limit for work graphs is 2^24-1 groups.
26
27- Fixes an issue where, only with the debug layer enabled, recording ProcessFrames command in ID3D12VideoCommandList fails in the Close() method with E_INVALIDARG
28
29### Version 1.618.2:
30- Correctly enable SODB capture for advanced shader delivery
31- Add ID3D12StateObjectDatabase for programmatic SODB generation
32- Add D3D12StateObjectCompiler 'merge' command
33
34### Version 1.618.1:
35- StateObjectCompiler binaries added to the AgilitySDK NuGet
36
37### Version 1.618.0:
38_Golden Ratio edition_
39
40- Advanced Shader Delivery
41- Application Specific Driver States
42- Video features
43 - D3D12_Video_Encoding_HEVC_ReferenceListExtension
44 - D3D12_Video_Encoding_LowerResolution_2Pass
45 - PSNR stats added to: D3D12_Video_Encoding_Stats_Metadata
46 - D3D12 Video encode subregion
47 - D3D12 Video encode output stats (per block QP, per block SATD, per block bit allocation)
48 - D3D12 Video encode GPU texture input QP map
49 - D3D12 Video encode GPU texture/CPU buffer Dirty maps/rects
50 - D3D12 Video encode GPU texture/CPU buffer motion vector hints
51 - D3D12 Video Encode Spatial Adaptive Rate Control Quantization
52- Recreate at GPUVA
53- Tight Alignment
54
55
56### Version 1.717.1:
57
58- Debug Layer fixes:
59 - Enhanced Barrier placed resource validation fix for false errors
60 - For D3D12_BARRIER_SUBRESOURCE_RANGE, the Debug Layer was not handling the NumMipLevels=0 special case (treat IndexOrFirstMipLevel as a subresource index)
61 - Debug Layer updated to notice that RD/DS initialization can be accomplished by RenderPass Clear/Discard
62 - GPU based validation (GBV) fix:
63 - Fix for incorrect texture state/layout validation in cases where GBV needed to insert LOD calculation
64
65### Version 1.616.1:
66
67- Runtime fix: D3D12EnableExperimentalFeatures() was allowing D3D12ExperimentalShaderModels
68 - This made it look like Shader Model 6.9 could work even though it's only supported in the 1.717.x preview
69 - Now asking for D3D12ExperimentalShaderModels returns E_NOINTERFACE.
70- Debug Layer fixes:
71 - Enhanced Barrier placed resource validation fix for false errors
72 - For D3D12_BARRIER_SUBRESOURCE_RANGE, the Debug Layer was not handling the NumMipLevels=0 special case (treat IndexOrFirstMipLevel as a subresource index)
73 - Debug Layer updated to notice that RD/DS initialization can be accomplished by RenderPass Clear/Discard
74- GPU based validation (GBV):
75 - Fix for incorrect texture state/layout validation in cases where GBV needed to insert LOD calculation
76
77### Version 1.717.0
78- Everything in 1.616.0 plus:
79- Shader Model 6.9 preview, adding:
80 - Cooperative Vectors
81 - Shader Execution Reordering
82 - Support for RayQuery using Opacity Micromaps
83 - Normal TraceRay doens't require SM 6.9, so the 1.616.0 release works for it
84- D3D Video Encoding updates
85
86In this preview, mesh nodes is disabled, but could return in a future preview and/or retail release.
87
88### Version 1.616.0
89- Release Opacity Micromap support
90 - Just missing RayQuery+OMM suport that needs Shader Model 6.9 which is in the above preview
91- Tier 4 Tiled Resources
92
93### Version 1.716.1
94- Fix meta command validation
95- Add Raw UAV/SRV validation for tight aligned buffers
96- Fix a bug where AlignmentRestriction hint wasn’t being passed to drivers
97- Fix placed resource initialization validation bug related to plane validation
98- Fix a bug where GBV patching will crash when initializing if the caller didn’t request a debug info parser
99
100### Version 1.716.0
101- Application Specific Driver State
102- RecreateAt GPUVA
103- Runtime Bypass
104- Shader hash bypass
105- Tight Alignment of Resources
106- Multiple video features
107 - Encode subregion notifications
108 - Encode output stats
109 - Encode GPU texture input map
110 - Encode GPU texture/CPU buffer dirty maps/rects
111 - Encode GPU texture/CPU buffer motion vector hints
112
113In this preview, mesh nodes is disabled, but could return in a future preview and/or retail release.
114
115### Verision 1.615.0
116- Shader hash bypass officially supports applications opting to bypass shader hash validation
117
118### Version 1.715.0
119- Preview of mesh nodes in work graphs
120
121### Version 1.714.0
122- Preview release of DirectSR
123 - Supports both native and built-in Super Resolution techniques ("variants")
124
125### Version 1.614.0
126- Enabled R9G9B9E5_SHAREDEXP format for Render Target and Unordered Access Views
127
128### Version 1.613.3
129
130- Same as 1.613.2, with minor updates shown at the end of this list:
131- Work Graphs
132- Generic Programs in State objects
133- Shader Model 6.8
134 - Work Graphs support
135 - Start Vertex/Instance Location
136 - Wave Size Range
137 - Expanded Comparison Sampling
138- GPU Upload Heaps (requires preview or future OS, or current OS in developer mode)
139- Incrementing Constants in ExecuteIndirect
140- Minor updates for .3:
141 - Honor root signature associations added to export in collections when the export is imported into generic program in an executable state object.
142 - Propagate root signatures to exports that have bindings and no root signatures within the scope of a generic program, like what happens with PSOs.
143 - Other generic programs related bug fixes, additional validation and optimizations.
144 - For state objects, minor fixes to subobject association logic in edge cases involving collections to more precisely match spec wording.
145 - GPU Upload Heaps can now be used with a current OS in developer mode, in addition to preview and future OS that don't require developer mode.
146
147### Version 1.613.2
148
149- Same as 1.613.1, with minor updates shown at the end of this list:
150- Work Graphs
151- Generic Programs in State objects
152- Shader Model 6.8
153 - Work Graphs support
154 - Start Vertex/Instance Location
155 - Wave Size Range
156 - Expanded Comparison Sampling
157- GPU Upload Heaps (requires preview or future OS)
158- Incrementing Constants in ExecuteIndirect
159- Minor updates for .2:
160 - Close validation hole: Prevent use of features in incompatible state object types, such as defining generic program components (like rast state) in a raytracing pipeline.
161 - Debug layer fixes around lifetime management of program identifiers (e.g. the handles for the new generic programs)
162 - ExecuteIndirect validation was too strict: buffer size only needs to be big enough for the number of commands * stride, _minus the unused space at end of last command_
163
164### Version 1.613.1
165
166- Same as 1.613.0, with minor updates shown at the end of this list:
167- Work Graphs
168- Generic Programs in State objects
169- Shader Model 6.8
170 - Work Graphs support
171 - Start Vertex/Instance Location
172 - Wave Size Range
173 - Expanded Comparison Sampling
174- GPU Upload Heaps (requires preview or future OS)
175- Incrementing Constants in ExecuteIndirect
176- Minor updates for .1:
177 - In d3d12.h: missing const on input pointer members: D3D12_NODE_CPU_INPUT.pRecords and D3D12_MULTI_NODE_CPU_INPUT.pNodeInputs
178 - Debug layer validation fixes for D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT
179 - Some missing validation for generic programs (to line up with existing PSO path)
180 - Allow generic programs or work graphs only in executable state objects, not collections
181
182### Version 1.613.0
183
184- Work Graphs
185- Generic Programs in State objects
186- Shader Model 6.8
187 - Work Graphs support
188 - Start Vertex/Instance Location
189 - Wave Size Range
190 - Expanded Comparison Sampling
191- GPU Upload Heaps (requires preview or future OS)
192- Incrementing Constants in ExecuteIndirect
193
194### Version 1.611.1
195
196* Make pContext mutable in ID3D12InfoQueue1::RegisterMessageCallback.
197* Fix Linux build issue.
198* Legacy transitions into/out-of UAV state includes D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE,
199 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO and
200 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE. This only applies to buffer barriers.
201* Fix enhanced barrier SYNC_DRAW being incompatible with ACCESS_RENDER_TARGET
202* Improve enhanced barrier validation for raytracing acceleration data structures
203
204### Version 1.611.0
205
206* Video AV1 Encode release
207
208### Version 1.610.3
209
210- Fix regression introduced in 1.608.0 as part of independent front/back stencil support.
211 If an app used the stencil mask in a way that only affected back facing geometry (even
212 using the old depth stencil desc that had just a single mask for front/back),
213 the D3D runtime would incorrectly set the stencil mask to 0 on certain drivers. Specifically
214 drivers older than the timeframe of the 1.608.0 release (Nov 2022).
215
216### Version 1.610.2
217
218- Minor fix for Non-Normalized Sampling: The 610 release had some stale logic
219 that left Non-Normalized Sampling in "prerelease" mode, so it appeared as not available.
220
221### Version 1.610.1
222
223- Minor fix for RenderPasses: The 610 release had some stale logic
224 that left RenderPasses in "prerelease" mode, so it appeared as not available.
225
226### Version 1.610.0
227
228- Updated RenderPass support for tile based rendering GPUs
229- Several minor features for improved compatibility with Vulkan
230 - Non-normalized sampling
231 - Mismatched render target dimensions
232 - Sample-frequency pixel shaders with no RTV/DSV
233 - And a handful of even more minor features.
234 - Fixes a regression introduced in 1.608.0 where the stencil mask could get cleared
235 when specifying it in a way that only affected the back-facing geometry
236
237### Version 1.608.3
238
239- Fixed state corruption causing incorrect programmable sample positions validation during ExecuteCommandList
240- Address incorrect Enhanced Barriers simultaneous-access validation
241- Fix incorrect Enhanced Barriers sync/access validation
242- Add missing string conversion for D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW
243
244### Version 1.608.0
245
246* Enhanced Barriers release
247* Independent front/back stencil refs and masks
248* Triangle fans
249* Dynamic depth bias and IB strip cut
250
251### Version 1.706.4 (preview)
252
253- Fixes a device creation failure on WARP (Microsoft Basic Render) in Windows Server 2022.
254
255### Version 1.606.4
256
257- Fixes a device creation failure on WARP (Microsoft Basic Render) in Windows Server 2022.
258
259### Version 1.706.3 (preview)
260
261- Enhanced Barriers Preview 2 with GBV support
262- Adds `ID3D12DebugCommandList3::AssertTextureLayout` and ` ID3D12DebugCommandQueue1::AssertResourceAccess` methods. 
263- Independent Front/Back Stencil Refs and Masks 
264- Triangle fans are back
265
266### Version 1.606.3
267
268New features:
269
270- Shader Model 6.7.
271- d3dconfig: settings import/export.
272- d3dconfig: option to allow application control over storage filters
273- DRED: 'markers only breadcrumbs' stores breadcrumbs only for PIX markers and events.
274
275Bug fixes:
276
277- Various debug layer stability fixes.
278
279### Version 1.602.0
280
281New features:
282
283- Relaxed buffer/texture copy alignment
284- Support for copying between different dimensions of textures
285- Delayed input layout and vertex buffer alignment validation
286- Negative height viewports flip y-axis intepretation
287- Alpha/InvAlpha blend factors
288
289Bugfixes
290
291- Fixes a crash using GBV with shader patch mode TRACKING_ONLY.
292- Fixes false debug validation output resulting from depth slice state being confused with stencil slice state.
293- Fixes a bug causing promoted COPY_DEST to not decay back to COMMON.
294- Report live objects when encountering device removed from a kernel memory failure.
295
296### Version 1.600.10
297
298Fixes threading bug (intermittent crash) in runtime for apps doing multithreaded creation of raytracing state objects.
299
300Ideally this fix would have been made in isolation on top of the previous SDK release. Unfortunately this was not possible due to build infrastructure changes - hopefully a one-time issue. What this means is that this SDK's runtime reflects the current state of the D3D12 codebase including code churn unrelated to the bug fix, such as support for preview features that are disabled here and exposed in a separate preview SDK branch. Even though preview features are disabled, the codebase is still different. So there is some risk of bugs/regressions that have not been noticed yet in internal testing. In particular there is a reasonable chance that the churn in the debug layer codebase might yield some debug validation issues, but there could be issues lurking in the runtime as well. If you report any issues you observe to us, we will try to address them with a follow-up SDK release.
301
302Whether you choose to use this bugfix release, with its extra code churn of no value to you, really boils down to how important the specific fix is to you (if at all), and perhaps how much capacity you have to do test this combination of runtime and your app.
303
304### Version 1.4.10
305
306Fixes a debug layer issue where some ResourceBarrier calls transitioning DEPTH_READ to DEPTH_WRITE were dropped
307
308### Version 1.4.9
309
310Contains support for DirectX 12 Ultimate and Shader Model 6.6 \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/[Content_Types].xml b/contrib/microsoft.direct3d.d3d12.1.618.4/[Content_Types].xml
new file mode 100644
index 0000000..8714729
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/[Content_Types].xml
@@ -0,0 +1,19 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
3 <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
4 <Default Extension="psmdcp" ContentType="application/vnd.openxmlformats-package.core-properties+xml" />
5 <Default Extension="h" ContentType="application/octet" />
6 <Default Extension="txt" ContentType="application/octet" />
7 <Default Extension="md" ContentType="application/octet" />
8 <Default Extension="pdb" ContentType="application/octet" />
9 <Default Extension="exe" ContentType="application/octet" />
10 <Default Extension="idl" ContentType="application/octet" />
11 <Default Extension="png" ContentType="application/octet" />
12 <Default Extension="props" ContentType="application/octet" />
13 <Default Extension="dll" ContentType="application/octet" />
14 <Default Extension="xml" ContentType="application/octet" />
15 <Default Extension="cpp" ContentType="application/octet" />
16 <Default Extension="targets" ContentType="application/octet" />
17 <Default Extension="hpp" ContentType="application/octet" />
18 <Default Extension="nuspec" ContentType="application/octet" />
19</Types> \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/_rels/.rels b/contrib/microsoft.direct3d.d3d12.1.618.4/_rels/.rels
new file mode 100644
index 0000000..7bdf2d6
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/_rels/.rels
@@ -0,0 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
3 <Relationship Type="http://schemas.microsoft.com/packaging/2010/07/manifest" Target="/Microsoft.Direct3D.D3D12.nuspec" Id="RE1C776F5B20ED38F" />
4 <Relationship Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="/package/services/metadata/core-properties/20c8cfa303e54def8eaf74afbcdc6295.psmdcp" Id="R01041A9D9CC91894" />
5</Relationships> \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml
new file mode 100644
index 0000000..aa7f8cc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml
@@ -0,0 +1,38 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Rule
3 Name="Microsoft_Direct3D_D3D12"
4 DisplayName="D3D12 NuGet"
5 Order="70"
6 PageTemplate="generic"
7 Description="Options for the Microsoft.Direct3D.D3D12 NuGet Package"
8 xmlns="http://schemas.microsoft.com/build/2009/properties">
9
10 <Rule.Categories>
11 <Category Name="General" DisplayName="General" />
12 </Rule.Categories>
13
14 <Rule.DataSource>
15 <DataSource Persistence="ProjectFile" Label="Globals" />
16 </Rule.DataSource>
17
18 <StringProperty Name="Microsoft_Direct3D_D3D12_D3D12SDKPath"
19 DisplayName="D3D12SDKPath"
20 Description="Specify the exe relative D3D12SDKPath export to modify the copy destination for d3d12core.dll etc."
21 Category="General" />
22
23 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipLibraryCopy"
24 DisplayName="Disable Library Copy"
25 Description="Disables copying D3D12Core.dll and D3D12Core.pdb into the project output directory."
26 Category="General" />
27
28 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipDebugLayerCopy"
29 DisplayName="Disable Debug Layer Copy"
30 Description="Disables copying D3D12SDKLayers.dll and D3D12SDKLayers.pdb into the project output directory. This 'debug layer' is used for development only."
31 Category="General" />
32
33 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipIncludeDir"
34 DisplayName="Disable Include Directory"
35 Description="Disables appending the package's include folder as an additional include directory."
36 Category="General" />
37
38</Rule>
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props
new file mode 100644
index 0000000..3add946
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <PropertyGroup Condition="'$(Microsoft_Direct3D_D3D12_D3D12SDKPath)' == ''">
4 <Microsoft_Direct3D_D3D12_D3D12SDKPath>.\D3D12\</Microsoft_Direct3D_D3D12_D3D12SDKPath>
5 </PropertyGroup>
6 <ItemGroup>
7 <PropertyPageSchema Include="$(MSBuildThisFileDirectory)Microsoft.Direct3D.D3D12.Rules.Project.xml"/>
8 </ItemGroup>
9</Project> \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets
new file mode 100644
index 0000000..c41a7fc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets
@@ -0,0 +1,35 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemDefinitionGroup Condition="'$(Microsoft_Direct3D_D3D12_SkipIncludeDir)' != 'true'">
4 <ClCompile>
5 <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include;$(MSBuildThisFileDirectory)include\d3dx12;$(MSBuildThisFileDirectory);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
6 </ClCompile>
7
8 </ItemDefinitionGroup>
9 <PropertyGroup>
10 <DirectXPlatform Condition="'$(PlatformTarget)' == 'x64' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' != 'true')">x64</DirectXPlatform>
11 <DirectXPlatform Condition="'$(PlatformTarget)' == 'x86' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' == 'true')">win32</DirectXPlatform>
12 <DirectXPlatform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' != 'true'">x64</DirectXPlatform>
13 <DirectXPlatform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' == 'true'">win32</DirectXPlatform>
14 <DirectXPlatform Condition="'$(DirectXPlatform)' == ''">$(PlatformTarget)</DirectXPlatform>
15 </PropertyGroup>
16
17 <ItemGroup>
18 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12Core.dll" Condition="'$(Microsoft_Direct3D_D3D12_SkipLibraryCopy)' != 'true'">
19 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
20 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
21 </Content>
22 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12Core.pdb" Condition="'$(Microsoft_Direct3D_D3D12_SkipLibraryCopy)' != 'true'">
23 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
24 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
25 </Content>
26 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12SDKLayers.dll" Condition="'$(Microsoft_Direct3D_D3D12_SkipDebugLayerCopy)' != 'true'">
27 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
28 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
29 </Content>
30 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12SDKLayers.pdb" Condition="'$(Microsoft_Direct3D_D3D12_SkipDebugLayerCopy)' != 'true'">
31 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
32 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
33 </Content>
34 </ItemGroup>
35</Project>
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll
new file mode 100644
index 0000000..080b83b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb
new file mode 100644
index 0000000..1e4b9fa
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..bb7e11f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..aab2df3
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..ecc6fe1
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..35b75f3
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll
new file mode 100644
index 0000000..37ab56c
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..68f9cec
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe
new file mode 100644
index 0000000..607260d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb
new file mode 100644
index 0000000..30deae9
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll
new file mode 100644
index 0000000..4cb995e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb
new file mode 100644
index 0000000..91cf0c4
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..c509b53
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..9b9ef4d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..859e16a
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..99300ee
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll
new file mode 100644
index 0000000..9814661
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..ed90270
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe
new file mode 100644
index 0000000..15ec768
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb
new file mode 100644
index 0000000..15bde0e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll
new file mode 100644
index 0000000..b3aae9c
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb
new file mode 100644
index 0000000..cae08e5
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..75a3b29
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..fd3c433
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..236d325
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..f548755
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll
new file mode 100644
index 0000000..96577dc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..cfb1bf7
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe
new file mode 100644
index 0000000..462ff91
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb
new file mode 100644
index 0000000..7089f46
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp
new file mode 100644
index 0000000..b951454
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp
@@ -0,0 +1,2634 @@
1#pragma once
2//*********************************************************
3//
4// Copyright (c) Microsoft Corporation.
5// Licensed under the MIT License (MIT).
6//
7//*********************************************************
8//
9// High Level Goals
10//
11// - Serve as the runtime/DDI representation for all D3D11 tokenized code,
12// for all classes of programs, including pixel program, vertex program,
13// geometry program, etc.
14//
15// - Any information that HLSL needs to give to drivers is encoded in
16// this token format in some form.
17//
18// - Enable common tools and source code for managing all tokenizable
19// program formats.
20//
21// - Support extensible token definitions, allowing full customizations for
22// specific program classes, while maintaining general conventions for all
23// program models.
24//
25// - Binary backwards compatible with D3D10. Any token name that was originally
26// defined with "D3D10" in it is unchanged; D3D11 only adds new tokens.
27//
28// ----------------------------------------------------------------------------
29//
30// Low Level Feature Summary
31//
32// - DWORD based tokens always, for simplicity
33// - Opcode token is generally a single DWORD, though there is a bit indicating
34// if extended information (extra DWORD(s)) are present
35// - Operand tokens are a completely self contained, extensible format,
36// with scalar and 4-vector data types as first class citizens, but
37// allowance for extension to n-component vectors.
38// - Initial operand token identifies register type, register file
39// structure/dimensionality and mode of indexing for each dimension,
40// and choice of component selection mechanism (i.e. mask vs. swizzle etc).
41// - Optional additional extended operand tokens can defined things like
42// modifiers (which are not needed by default).
43// - Operand's immediate index value(s), if needed, appear as subsequent DWORD
44// values, and if relative addressing is specified, an additional completely
45// self contained operand definition appears nested in the token sequence.
46//
47// ----------------------------------------------------------------------------
48
49#include <winapifamily.h>
50
51#pragma region Application Family
52#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
53
54// ----------------------------------------------------------------------------
55// Version Token (VerTok)
56//
57// [07:00] minor version number (0-255)
58// [15:08] major version number (0-255)
59// [31:16] D3D10_SB_TOKENIZED_PROGRAM_TYPE
60//
61// ----------------------------------------------------------------------------
62
63typedef enum D3D10_SB_TOKENIZED_PROGRAM_TYPE
64{
65 D3D10_SB_PIXEL_SHADER = 0,
66 D3D10_SB_VERTEX_SHADER = 1,
67 D3D10_SB_GEOMETRY_SHADER = 2,
68
69 // D3D11 Shaders
70 D3D11_SB_HULL_SHADER = 3,
71 D3D11_SB_DOMAIN_SHADER = 4,
72 D3D11_SB_COMPUTE_SHADER = 5,
73
74 // Subset of D3D12 Shaders where this field is referenced by runtime
75 // Entries from 6-12 are unique to state objects
76 // (e.g. library, callable and raytracing shaders)
77 D3D12_SB_MESH_SHADER = 13,
78 D3D12_SB_AMPLIFICATION_SHADER = 14,
79
80 D3D11_SB_RESERVED0 = 0xFFF0
81} D3D10_SB_TOKENIZED_PROGRAM_TYPE;
82
83#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK 0xffff0000
84#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT 16
85
86// DECODER MACRO: Retrieve program type from version token
87#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE(VerTok) ((D3D10_SB_TOKENIZED_PROGRAM_TYPE)(((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT))
88
89#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK 0x000000f0
90#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT 4
91#define D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK 0x0000000f
92
93// DECODER MACRO: Retrieve major version # from version token
94#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION(VerTok) (((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)
95// DECODER MACRO: Retrieve minor version # from version token
96#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION(VerTok) ((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK)
97
98// ENCODER MACRO: Create complete VerTok
99#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN(ProgType,MajorVer,MinorVer) ((((ProgType)<<D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)|\
100 ((((MajorVer)<<D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK))|\
101 ((MinorVer)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK))
102
103// ----------------------------------------------------------------------------
104// Length Token (LenTok)
105//
106// Always follows VerTok
107//
108// [31:00] Unsigned integer count of number of
109// DWORDs in program code, including version
110// and length tokens. So the minimum value
111// is 0x00000002 (if an empty program is ever
112// valid).
113//
114// ----------------------------------------------------------------------------
115
116// DECODER MACRO: Retrieve program length
117#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(LenTok) (LenTok)
118// ENCODER MACRO: Create complete LenTok
119#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(Length) (Length)
120#define MAX_D3D10_SB_TOKENIZED_PROGRAM_LENGTH (0xffffffff)
121
122// ----------------------------------------------------------------------------
123// Opcode Format (OpcodeToken0)
124//
125// [10:00] D3D10_SB_OPCODE_TYPE
126// if( [10:00] == D3D10_SB_OPCODE_CUSTOMDATA )
127// {
128// Token starts a custom-data block. See "Custom-Data Block Format".
129// }
130// else // standard opcode token
131// {
132// [23:11] Opcode-Specific Controls
133// [30:24] Instruction length in DWORDs including the opcode token.
134// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
135// contains extended opcode token.
136// }
137//
138// ----------------------------------------------------------------------------
139
140typedef enum D3D10_SB_OPCODE_TYPE {
141 D3D10_SB_OPCODE_ADD ,
142 D3D10_SB_OPCODE_AND ,
143 D3D10_SB_OPCODE_BREAK ,
144 D3D10_SB_OPCODE_BREAKC ,
145 D3D10_SB_OPCODE_CALL ,
146 D3D10_SB_OPCODE_CALLC ,
147 D3D10_SB_OPCODE_CASE ,
148 D3D10_SB_OPCODE_CONTINUE ,
149 D3D10_SB_OPCODE_CONTINUEC ,
150 D3D10_SB_OPCODE_CUT ,
151 D3D10_SB_OPCODE_DEFAULT ,
152 D3D10_SB_OPCODE_DERIV_RTX ,
153 D3D10_SB_OPCODE_DERIV_RTY ,
154 D3D10_SB_OPCODE_DISCARD ,
155 D3D10_SB_OPCODE_DIV ,
156 D3D10_SB_OPCODE_DP2 ,
157 D3D10_SB_OPCODE_DP3 ,
158 D3D10_SB_OPCODE_DP4 ,
159 D3D10_SB_OPCODE_ELSE ,
160 D3D10_SB_OPCODE_EMIT ,
161 D3D10_SB_OPCODE_EMITTHENCUT ,
162 D3D10_SB_OPCODE_ENDIF ,
163 D3D10_SB_OPCODE_ENDLOOP ,
164 D3D10_SB_OPCODE_ENDSWITCH ,
165 D3D10_SB_OPCODE_EQ ,
166 D3D10_SB_OPCODE_EXP ,
167 D3D10_SB_OPCODE_FRC ,
168 D3D10_SB_OPCODE_FTOI ,
169 D3D10_SB_OPCODE_FTOU ,
170 D3D10_SB_OPCODE_GE ,
171 D3D10_SB_OPCODE_IADD ,
172 D3D10_SB_OPCODE_IF ,
173 D3D10_SB_OPCODE_IEQ ,
174 D3D10_SB_OPCODE_IGE ,
175 D3D10_SB_OPCODE_ILT ,
176 D3D10_SB_OPCODE_IMAD ,
177 D3D10_SB_OPCODE_IMAX ,
178 D3D10_SB_OPCODE_IMIN ,
179 D3D10_SB_OPCODE_IMUL ,
180 D3D10_SB_OPCODE_INE ,
181 D3D10_SB_OPCODE_INEG ,
182 D3D10_SB_OPCODE_ISHL ,
183 D3D10_SB_OPCODE_ISHR ,
184 D3D10_SB_OPCODE_ITOF ,
185 D3D10_SB_OPCODE_LABEL ,
186 D3D10_SB_OPCODE_LD ,
187 D3D10_SB_OPCODE_LD_MS ,
188 D3D10_SB_OPCODE_LOG ,
189 D3D10_SB_OPCODE_LOOP ,
190 D3D10_SB_OPCODE_LT ,
191 D3D10_SB_OPCODE_MAD ,
192 D3D10_SB_OPCODE_MIN ,
193 D3D10_SB_OPCODE_MAX ,
194 D3D10_SB_OPCODE_CUSTOMDATA ,
195 D3D10_SB_OPCODE_MOV ,
196 D3D10_SB_OPCODE_MOVC ,
197 D3D10_SB_OPCODE_MUL ,
198 D3D10_SB_OPCODE_NE ,
199 D3D10_SB_OPCODE_NOP ,
200 D3D10_SB_OPCODE_NOT ,
201 D3D10_SB_OPCODE_OR ,
202 D3D10_SB_OPCODE_RESINFO ,
203 D3D10_SB_OPCODE_RET ,
204 D3D10_SB_OPCODE_RETC ,
205 D3D10_SB_OPCODE_ROUND_NE ,
206 D3D10_SB_OPCODE_ROUND_NI ,
207 D3D10_SB_OPCODE_ROUND_PI ,
208 D3D10_SB_OPCODE_ROUND_Z ,
209 D3D10_SB_OPCODE_RSQ ,
210 D3D10_SB_OPCODE_SAMPLE ,
211 D3D10_SB_OPCODE_SAMPLE_C ,
212 D3D10_SB_OPCODE_SAMPLE_C_LZ ,
213 D3D10_SB_OPCODE_SAMPLE_L ,
214 D3D10_SB_OPCODE_SAMPLE_D ,
215 D3D10_SB_OPCODE_SAMPLE_B ,
216 D3D10_SB_OPCODE_SQRT ,
217 D3D10_SB_OPCODE_SWITCH ,
218 D3D10_SB_OPCODE_SINCOS ,
219 D3D10_SB_OPCODE_UDIV ,
220 D3D10_SB_OPCODE_ULT ,
221 D3D10_SB_OPCODE_UGE ,
222 D3D10_SB_OPCODE_UMUL ,
223 D3D10_SB_OPCODE_UMAD ,
224 D3D10_SB_OPCODE_UMAX ,
225 D3D10_SB_OPCODE_UMIN ,
226 D3D10_SB_OPCODE_USHR ,
227 D3D10_SB_OPCODE_UTOF ,
228 D3D10_SB_OPCODE_XOR ,
229 D3D10_SB_OPCODE_DCL_RESOURCE , // DCL* opcodes have
230 D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER , // custom operand formats.
231 D3D10_SB_OPCODE_DCL_SAMPLER ,
232 D3D10_SB_OPCODE_DCL_INDEX_RANGE ,
233 D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY ,
234 D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE ,
235 D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT ,
236 D3D10_SB_OPCODE_DCL_INPUT ,
237 D3D10_SB_OPCODE_DCL_INPUT_SGV ,
238 D3D10_SB_OPCODE_DCL_INPUT_SIV ,
239 D3D10_SB_OPCODE_DCL_INPUT_PS ,
240 D3D10_SB_OPCODE_DCL_INPUT_PS_SGV ,
241 D3D10_SB_OPCODE_DCL_INPUT_PS_SIV ,
242 D3D10_SB_OPCODE_DCL_OUTPUT ,
243 D3D10_SB_OPCODE_DCL_OUTPUT_SGV ,
244 D3D10_SB_OPCODE_DCL_OUTPUT_SIV ,
245 D3D10_SB_OPCODE_DCL_TEMPS ,
246 D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP ,
247 D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS ,
248
249// -----------------------------------------------
250
251 // This marks the end of D3D10.0 opcodes
252 D3D10_SB_OPCODE_RESERVED0,
253
254// ---------- DX 10.1 op codes---------------------
255
256 D3D10_1_SB_OPCODE_LOD,
257 D3D10_1_SB_OPCODE_GATHER4,
258 D3D10_1_SB_OPCODE_SAMPLE_POS,
259 D3D10_1_SB_OPCODE_SAMPLE_INFO,
260
261// -----------------------------------------------
262
263 // This marks the end of D3D10.1 opcodes
264 D3D10_1_SB_OPCODE_RESERVED1,
265
266// ---------- DX 11 op codes---------------------
267 D3D11_SB_OPCODE_HS_DECLS , // token marks beginning of HS sub-shader
268 D3D11_SB_OPCODE_HS_CONTROL_POINT_PHASE , // token marks beginning of HS sub-shader
269 D3D11_SB_OPCODE_HS_FORK_PHASE , // token marks beginning of HS sub-shader
270 D3D11_SB_OPCODE_HS_JOIN_PHASE , // token marks beginning of HS sub-shader
271
272 D3D11_SB_OPCODE_EMIT_STREAM ,
273 D3D11_SB_OPCODE_CUT_STREAM ,
274 D3D11_SB_OPCODE_EMITTHENCUT_STREAM ,
275 D3D11_SB_OPCODE_INTERFACE_CALL ,
276
277 D3D11_SB_OPCODE_BUFINFO ,
278 D3D11_SB_OPCODE_DERIV_RTX_COARSE ,
279 D3D11_SB_OPCODE_DERIV_RTX_FINE ,
280 D3D11_SB_OPCODE_DERIV_RTY_COARSE ,
281 D3D11_SB_OPCODE_DERIV_RTY_FINE ,
282 D3D11_SB_OPCODE_GATHER4_C ,
283 D3D11_SB_OPCODE_GATHER4_PO ,
284 D3D11_SB_OPCODE_GATHER4_PO_C ,
285 D3D11_SB_OPCODE_RCP ,
286 D3D11_SB_OPCODE_F32TOF16 ,
287 D3D11_SB_OPCODE_F16TOF32 ,
288 D3D11_SB_OPCODE_UADDC ,
289 D3D11_SB_OPCODE_USUBB ,
290 D3D11_SB_OPCODE_COUNTBITS ,
291 D3D11_SB_OPCODE_FIRSTBIT_HI ,
292 D3D11_SB_OPCODE_FIRSTBIT_LO ,
293 D3D11_SB_OPCODE_FIRSTBIT_SHI ,
294 D3D11_SB_OPCODE_UBFE ,
295 D3D11_SB_OPCODE_IBFE ,
296 D3D11_SB_OPCODE_BFI ,
297 D3D11_SB_OPCODE_BFREV ,
298 D3D11_SB_OPCODE_SWAPC ,
299
300 D3D11_SB_OPCODE_DCL_STREAM ,
301 D3D11_SB_OPCODE_DCL_FUNCTION_BODY ,
302 D3D11_SB_OPCODE_DCL_FUNCTION_TABLE ,
303 D3D11_SB_OPCODE_DCL_INTERFACE ,
304
305 D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT ,
306 D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT ,
307 D3D11_SB_OPCODE_DCL_TESS_DOMAIN ,
308 D3D11_SB_OPCODE_DCL_TESS_PARTITIONING ,
309 D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE ,
310 D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR ,
311 D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT ,
312 D3D11_SB_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT ,
313
314 D3D11_SB_OPCODE_DCL_THREAD_GROUP ,
315 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED ,
316 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW ,
317 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED,
318 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW,
319 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED,
320 D3D11_SB_OPCODE_DCL_RESOURCE_RAW ,
321 D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED ,
322 D3D11_SB_OPCODE_LD_UAV_TYPED ,
323 D3D11_SB_OPCODE_STORE_UAV_TYPED ,
324 D3D11_SB_OPCODE_LD_RAW ,
325 D3D11_SB_OPCODE_STORE_RAW ,
326 D3D11_SB_OPCODE_LD_STRUCTURED ,
327 D3D11_SB_OPCODE_STORE_STRUCTURED ,
328 D3D11_SB_OPCODE_ATOMIC_AND ,
329 D3D11_SB_OPCODE_ATOMIC_OR ,
330 D3D11_SB_OPCODE_ATOMIC_XOR ,
331 D3D11_SB_OPCODE_ATOMIC_CMP_STORE ,
332 D3D11_SB_OPCODE_ATOMIC_IADD ,
333 D3D11_SB_OPCODE_ATOMIC_IMAX ,
334 D3D11_SB_OPCODE_ATOMIC_IMIN ,
335 D3D11_SB_OPCODE_ATOMIC_UMAX ,
336 D3D11_SB_OPCODE_ATOMIC_UMIN ,
337 D3D11_SB_OPCODE_IMM_ATOMIC_ALLOC ,
338 D3D11_SB_OPCODE_IMM_ATOMIC_CONSUME ,
339 D3D11_SB_OPCODE_IMM_ATOMIC_IADD ,
340 D3D11_SB_OPCODE_IMM_ATOMIC_AND ,
341 D3D11_SB_OPCODE_IMM_ATOMIC_OR ,
342 D3D11_SB_OPCODE_IMM_ATOMIC_XOR ,
343 D3D11_SB_OPCODE_IMM_ATOMIC_EXCH ,
344 D3D11_SB_OPCODE_IMM_ATOMIC_CMP_EXCH ,
345 D3D11_SB_OPCODE_IMM_ATOMIC_IMAX ,
346 D3D11_SB_OPCODE_IMM_ATOMIC_IMIN ,
347 D3D11_SB_OPCODE_IMM_ATOMIC_UMAX ,
348 D3D11_SB_OPCODE_IMM_ATOMIC_UMIN ,
349 D3D11_SB_OPCODE_SYNC ,
350
351 D3D11_SB_OPCODE_DADD ,
352 D3D11_SB_OPCODE_DMAX ,
353 D3D11_SB_OPCODE_DMIN ,
354 D3D11_SB_OPCODE_DMUL ,
355 D3D11_SB_OPCODE_DEQ ,
356 D3D11_SB_OPCODE_DGE ,
357 D3D11_SB_OPCODE_DLT ,
358 D3D11_SB_OPCODE_DNE ,
359 D3D11_SB_OPCODE_DMOV ,
360 D3D11_SB_OPCODE_DMOVC ,
361 D3D11_SB_OPCODE_DTOF ,
362 D3D11_SB_OPCODE_FTOD ,
363
364 D3D11_SB_OPCODE_EVAL_SNAPPED ,
365 D3D11_SB_OPCODE_EVAL_SAMPLE_INDEX ,
366 D3D11_SB_OPCODE_EVAL_CENTROID ,
367
368 D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT ,
369
370 D3D11_SB_OPCODE_ABORT ,
371 D3D11_SB_OPCODE_DEBUG_BREAK ,
372
373// -----------------------------------------------
374
375 // This marks the end of D3D11.0 opcodes
376 D3D11_SB_OPCODE_RESERVED0,
377
378 D3D11_1_SB_OPCODE_DDIV,
379 D3D11_1_SB_OPCODE_DFMA,
380 D3D11_1_SB_OPCODE_DRCP,
381
382 D3D11_1_SB_OPCODE_MSAD,
383
384 D3D11_1_SB_OPCODE_DTOI,
385 D3D11_1_SB_OPCODE_DTOU,
386 D3D11_1_SB_OPCODE_ITOD,
387 D3D11_1_SB_OPCODE_UTOD,
388
389// -----------------------------------------------
390
391 // This marks the end of D3D11.1 opcodes
392 D3D11_1_SB_OPCODE_RESERVED0,
393
394 D3DWDDM1_3_SB_OPCODE_GATHER4_FEEDBACK,
395 D3DWDDM1_3_SB_OPCODE_GATHER4_C_FEEDBACK,
396 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_FEEDBACK,
397 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_C_FEEDBACK,
398 D3DWDDM1_3_SB_OPCODE_LD_FEEDBACK,
399 D3DWDDM1_3_SB_OPCODE_LD_MS_FEEDBACK,
400 D3DWDDM1_3_SB_OPCODE_LD_UAV_TYPED_FEEDBACK,
401 D3DWDDM1_3_SB_OPCODE_LD_RAW_FEEDBACK,
402 D3DWDDM1_3_SB_OPCODE_LD_STRUCTURED_FEEDBACK,
403 D3DWDDM1_3_SB_OPCODE_SAMPLE_L_FEEDBACK,
404 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_LZ_FEEDBACK,
405
406 D3DWDDM1_3_SB_OPCODE_SAMPLE_CLAMP_FEEDBACK,
407 D3DWDDM1_3_SB_OPCODE_SAMPLE_B_CLAMP_FEEDBACK,
408 D3DWDDM1_3_SB_OPCODE_SAMPLE_D_CLAMP_FEEDBACK,
409 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_CLAMP_FEEDBACK,
410
411 D3DWDDM1_3_SB_OPCODE_CHECK_ACCESS_FULLY_MAPPED,
412
413// -----------------------------------------------
414
415 // This marks the end of WDDM 1.3 opcodes
416 D3DWDDM1_3_SB_OPCODE_RESERVED0,
417
418 D3D10_SB_NUM_OPCODES // Should be the last entry
419} D3D10_SB_OPCODE_TYPE;
420
421#define D3D10_SB_OPCODE_TYPE_MASK 0x00007ff
422// DECODER MACRO: Retrieve program opcode
423#define DECODE_D3D10_SB_OPCODE_TYPE(OpcodeToken0) ((D3D10_SB_OPCODE_TYPE)((OpcodeToken0)&D3D10_SB_OPCODE_TYPE_MASK))
424// ENCODER MACRO: Create the opcode-type portion of OpcodeToken0
425#define ENCODE_D3D10_SB_OPCODE_TYPE(OpcodeName) ((OpcodeName)&D3D10_SB_OPCODE_TYPE_MASK)
426
427#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK 0x7f000000
428#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT 24
429// DECODER MACRO: Retrieve instruction length
430// in # of DWORDs including the opcode token(s).
431// The range is 1-127.
432#define DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)>> D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)
433
434// ENCODER MACRO: Store instruction length
435// portion of OpcodeToken0, in # of DWORDs
436// including the opcode token(s).
437// Valid range is 1-127.
438#define ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(Length) (((Length)<<D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)
439#define MAX_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH 127
440
441#define D3D10_SB_INSTRUCTION_SATURATE_MASK 0x00002000
442// DECODER MACRO: Check OpcodeToken0 to see if an instruction
443// is to saturate the result [0..1]
444// This flag is indicated by one of the bits in the
445// opcode specific control range.
446#define DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_INSTRUCTION_SATURATE_MASK)
447// ENCODER MACRO: Encode in OpcodeToken0 if instruction is to saturate the result.
448#define ENCODE_D3D10_SB_INSTRUCTION_SATURATE(bSat) (((bSat)!=0)?D3D10_SB_INSTRUCTION_SATURATE_MASK:0)
449
450// Boolean test for conditional instructions such as if (if_z or if_nz)
451// This is part of the opcode specific control range.
452typedef enum D3D10_SB_INSTRUCTION_TEST_BOOLEAN
453{
454 D3D10_SB_INSTRUCTION_TEST_ZERO = 0,
455 D3D10_SB_INSTRUCTION_TEST_NONZERO = 1
456} D3D10_SB_INSTRUCTION_TEST_BOOLEAN;
457#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK 0x00040000
458#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT 18
459
460// DECODER MACRO: For an OpcodeToken0 for requires either a
461// zero or non-zero test, determine which test was chosen.
462#define DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(OpcodeToken0) ((D3D10_SB_INSTRUCTION_TEST_BOOLEAN)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)>>D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT))
463// ENCODER MACRO: Store "zero" or "nonzero" in the opcode
464// specific control range of OpcodeToken0
465#define ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(Boolean) (((Boolean)<<D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)
466
467// Precise value mask (bits 19-22)
468// This is part of the opcode specific control range.
469// It's 1 bit per-channel of the output, for instructions with multiple
470// output operands, it applies to that component in each operand. This
471// uses the components defined in D3D10_SB_COMPONENT_NAME.
472#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK 0x00780000
473#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT 19
474
475// DECODER MACRO: this macro extracts from OpcodeToken0 the 4 component
476// (xyzw) mask, as a field of D3D10_SB_4_COMPONENT_[X|Y|Z|W] flags.
477#define DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)>>D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT))
478// ENCODER MACRO: Given a set of
479// D3D10_SB_OPERAND_4_COMPONENT_[X|Y|Z|W] values
480// or'd together, encode them in OpcodeToken0.
481#define ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(ComponentMask) (((ComponentMask)<<D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)
482
483// resinfo instruction return type
484typedef enum D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE
485{
486 D3D10_SB_RESINFO_INSTRUCTION_RETURN_FLOAT = 0,
487 D3D10_SB_RESINFO_INSTRUCTION_RETURN_RCPFLOAT = 1,
488 D3D10_SB_RESINFO_INSTRUCTION_RETURN_UINT = 2
489} D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE;
490
491#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
492#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT 11
493
494// DECODER MACRO: For an OpcodeToken0 for the resinfo instruction,
495// determine the return type.
496#define DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT))
497// ENCODER MACRO: Encode the return type for the resinfo instruction
498// in the opcode specific control range of OpcodeToken0
499#define ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)
500
501// sync instruction flags
502#define D3D11_SB_SYNC_THREADS_IN_GROUP 0x00000800
503#define D3D11_SB_SYNC_THREAD_GROUP_SHARED_MEMORY 0x00001000
504#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GROUP 0x00002000
505#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GLOBAL 0x00004000
506#define D3D11_SB_SYNC_FLAGS_MASK 0x00007800
507
508// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
509#define DECODE_D3D11_SB_SYNC_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_SYNC_FLAGS_MASK)
510
511// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
512#define ENCODE_D3D11_SB_SYNC_FLAGS(Flags) ((Flags)&D3D11_SB_SYNC_FLAGS_MASK)
513
514#define D3D10_SB_OPCODE_EXTENDED_MASK 0x80000000
515#define D3D10_SB_OPCODE_EXTENDED_SHIFT 31
516// DECODER MACRO: Determine if the opcode is extended
517// by an additional opcode token. Currently there are no
518// extended opcodes.
519#define DECODE_IS_D3D10_SB_OPCODE_EXTENDED(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_OPCODE_EXTENDED_MASK)>> D3D10_SB_OPCODE_EXTENDED_SHIFT)
520// ENCODER MACRO: Store in OpcodeToken0 whether the opcode is extended
521// by an additional opcode token.
522#define ENCODE_D3D10_SB_OPCODE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPCODE_EXTENDED_MASK:0)
523
524// ----------------------------------------------------------------------------
525// Extended Opcode Format (OpcodeToken1)
526//
527// If bit31 of an opcode token is set, the
528// opcode has an additional extended opcode token DWORD
529// directly following OpcodeToken0. Other tokens
530// expected for the opcode, such as the operand
531// token(s) always follow
532// OpcodeToken0 AND OpcodeToken1..n (extended
533// opcode tokens, if present).
534//
535// [05:00] D3D10_SB_EXTENDED_OPCODE_TYPE
536// [30:06] if([05:00] == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS)
537// {
538// This custom opcode contains controls for SAMPLE.
539// [08:06] Ignored, 0.
540// [12:09] U texel immediate offset (4 bit 2's comp) (0 default)
541// [16:13] V texel immediate offset (4 bit 2's comp) (0 default)
542// [20:17] W texel immediate offset (4 bit 2's comp) (0 default)
543// [30:14] Ignored, 0.
544// }
545// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM )
546// {
547// [10:06] D3D10_SB_RESOURCE_DIMENSION
548// [22:11] When dimension is D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER this holds the buffer stride, otherwise 0
549// [30:23] Ignored, 0.
550// }
551// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE )
552// {
553// [09:06] D3D10_SB_RESOURCE_RETURN_TYPE for component X
554// [13:10] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
555// [17:14] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
556// [21:18] D3D10_SB_RESOURCE_RETURN_TYPE for component W
557// [30:22] Ignored, 0.
558// }
559// else
560// {
561// [30:04] Ignored, 0.
562// }
563// [31] 0 normally. 1 there is another extended opcode. Any number
564// of extended opcode tokens can be chained. It is possible that some extended
565// opcode tokens could include multiple DWORDS - that is defined
566// on a case by case basis.
567//
568// ----------------------------------------------------------------------------
569typedef enum D3D10_SB_EXTENDED_OPCODE_TYPE
570{
571 D3D10_SB_EXTENDED_OPCODE_EMPTY = 0,
572 D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS = 1,
573 D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM = 2,
574 D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE = 3,
575} D3D10_SB_EXTENDED_OPCODE_TYPE;
576#define D3D11_SB_MAX_SIMULTANEOUS_EXTENDED_OPCODES 3
577
578#define D3D10_SB_EXTENDED_OPCODE_TYPE_MASK 0x0000003f
579
580// DECODER MACRO: Given an extended opcode
581// token (OpcodeToken1), figure out what type
582// of token it is (from D3D10_SB_EXTENDED_OPCODE_TYPE enum)
583// to be able to interpret the rest of the token's contents.
584#define DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE(OpcodeToken1) ((D3D10_SB_EXTENDED_OPCODE_TYPE)((OpcodeToken1)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK))
585
586// ENCODER MACRO: Store extended opcode token
587// type in OpcodeToken1.
588#define ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE(ExtOpcodeType) ((ExtOpcodeType)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK)
589
590typedef enum D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD
591{
592 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_U = 0,
593 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_V = 1,
594 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_W = 2,
595} D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD;
596#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK (3)
597#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord) (9+4*((Coord)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK))
598#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord) (0x0000000f<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))
599
600// DECODER MACRO: Given an extended opcode token
601// (OpcodeToken1), and extended token type ==
602// D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS, determine the immediate
603// texel address offset for u/v/w (D3D10_SB_ADDRESS_OFFSET_COORD)
604// This macro returns a (signed) integer, by sign extending the
605// decoded 4 bit 2's complement immediate value.
606#define DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,OpcodeToken1) ((((OpcodeToken1)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))>>(D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))))
607
608// ENCODER MACRO: Store the immediate texel address offset
609// for U or V or W Coord (D3D10_SB_ADDRESS_OFFSET_COORD) in an extended
610// opcode token (OpcodeToken1) that has extended opcode
611// type == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS (opcode type encoded separately)
612// A 2's complement number is expected as input, from which the LSB 4 bits are extracted.
613#define ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,ImmediateOffset) (((ImmediateOffset)<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))
614
615#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK 0x000007C0
616#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT 6
617
618// DECODER MACRO: Given an extended resource declaration token,
619// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the resource dimension
620// (D3D10_SB_RESOURCE_DIMENSION enum)
621#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(OpcodeTokenN) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT))
622
623// ENCODER MACRO: Store resource dimension
624// (D3D10_SB_RESOURCE_DIMENSION enum) into a
625// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
626#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)
627
628#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK 0x007FF800
629#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT 11
630
631// DECODER MACRO: Given an extended resource declaration token for a structured buffer,
632// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the structure stride
633// (12-bit unsigned integer)
634#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(OpcodeTokenN) (((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)
635
636// ENCODER MACRO: Store resource dimension structure stride
637// (12-bit unsigned integer) into a
638// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
639#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(Stride) (((Stride)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)
640
641#define D3D10_SB_RESOURCE_RETURN_TYPE_MASK 0x0000000f
642#define D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS 0x00000004
643#define D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT 6
644
645// DECODER MACRO: Get the resource return type for component (0-3) from
646// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
647#define DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(OpcodeTokenN, Component) \
648 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((OpcodeTokenN) >> \
649 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
650
651// ENCODER MACRO: Generate a resource return type for a component in an extended
652// resource delcaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
653#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(ReturnType, Component) \
654 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))
655
656// ----------------------------------------------------------------------------
657// Custom-Data Block Format
658//
659// DWORD 0 (CustomDataDescTok):
660// [10:00] == D3D10_SB_OPCODE_CUSTOMDATA
661// [31:11] == D3D10_SB_CUSTOMDATA_CLASS
662//
663// DWORD 1:
664// 32-bit unsigned integer count of number
665// of DWORDs in custom-data block,
666// including DWORD 0 and DWORD 1.
667// So the minimum value is 0x00000002,
668// meaning empty custom-data.
669//
670// Layout of custom-data contents, for the various meta-data classes,
671// not defined in this file.
672//
673// ----------------------------------------------------------------------------
674
675typedef enum D3D10_SB_CUSTOMDATA_CLASS
676{
677 D3D10_SB_CUSTOMDATA_COMMENT = 0,
678 D3D10_SB_CUSTOMDATA_DEBUGINFO,
679 D3D10_SB_CUSTOMDATA_OPAQUE,
680 D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER,
681 D3D11_SB_CUSTOMDATA_SHADER_MESSAGE,
682 D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9,
683} D3D10_SB_CUSTOMDATA_CLASS;
684
685#define D3D10_SB_CUSTOMDATA_CLASS_MASK 0xfffff800
686#define D3D10_SB_CUSTOMDATA_CLASS_SHIFT 11
687// DECODER MACRO: Find out what class of custom-data is present.
688// The contents of the custom-data block are defined
689// for each class of custom-data.
690#define DECODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataDescTok) ((D3D10_SB_CUSTOMDATA_CLASS)(((CustomDataDescTok)&D3D10_SB_CUSTOMDATA_CLASS_MASK)>>D3D10_SB_CUSTOMDATA_CLASS_SHIFT))
691// ENCODER MACRO: Create complete CustomDataDescTok
692#define ENCODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataClass) (ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_CUSTOMDATA)|(((CustomDataClass)<<D3D10_SB_CUSTOMDATA_CLASS_SHIFT)&D3D10_SB_CUSTOMDATA_CLASS_MASK))
693
694// ----------------------------------------------------------------------------
695// Instruction Operand Format (OperandToken0)
696//
697// [01:00] D3D10_SB_OPERAND_NUM_COMPONENTS
698// [11:02] Component Selection
699// if([01:00] == D3D10_SB_OPERAND_0_COMPONENT)
700// [11:02] = Ignored, 0
701// else if([01:00] == D3D10_SB_OPERAND_1_COMPONENT
702// [11:02] = Ignored, 0
703// else if([01:00] == D3D10_SB_OPERAND_4_COMPONENT
704// {
705// [03:02] = D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
706// if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE)
707// {
708// [07:04] = D3D10_SB_OPERAND_4_COMPONENT_MASK
709// [11:08] = Ignored, 0
710// }
711// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE)
712// {
713// [11:04] = D3D10_SB_4_COMPONENT_SWIZZLE
714// }
715// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE)
716// {
717// [05:04] = D3D10_SB_4_COMPONENT_NAME
718// [11:06] = Ignored, 0
719// }
720// }
721// else if([01:00] == D3D10_SB_OPERAND_N_COMPONENT)
722// {
723// Currently not defined.
724// }
725// [19:12] D3D10_SB_OPERAND_TYPE
726// [21:20] D3D10_SB_OPERAND_INDEX_DIMENSION:
727// Number of dimensions in the register
728// file (NOT the # of dimensions in the
729// individual register or memory
730// resource being referenced).
731// [24:22] if( [21:20] >= D3D10_SB_OPERAND_INDEX_1D )
732// D3D10_SB_OPERAND_INDEX_REPRESENTATION for first operand index
733// else
734// Ignored, 0
735// [27:25] if( [21:20] >= D3D10_SB_OPERAND_INDEX_2D )
736// D3D10_SB_OPERAND_INDEX_REPRESENTATION for second operand index
737// else
738// Ignored, 0
739// [30:28] if( [21:20] == D3D10_SB_OPERAND_INDEX_3D )
740// D3D10_SB_OPERAND_INDEX_REPRESENTATION for third operand index
741// else
742// Ignored, 0
743// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
744// contains extended operand description.
745//
746// ----------------------------------------------------------------------------
747
748// Number of components in data vector referred to by operand.
749typedef enum D3D10_SB_OPERAND_NUM_COMPONENTS
750{
751 D3D10_SB_OPERAND_0_COMPONENT = 0,
752 D3D10_SB_OPERAND_1_COMPONENT = 1,
753 D3D10_SB_OPERAND_4_COMPONENT = 2,
754 D3D10_SB_OPERAND_N_COMPONENT = 3 // unused for now
755} D3D10_SB_OPERAND_NUM_COMPONENTS;
756#define D3D10_SB_OPERAND_NUM_COMPONENTS_MASK 0x00000003
757
758// DECODER MACRO: Extract from OperandToken0 how many components
759// the data vector referred to by the operand contains.
760// (D3D10_SB_OPERAND_NUM_COMPONENTS enum)
761#define DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS(OperandToken0) ((D3D10_SB_OPERAND_NUM_COMPONENTS)((OperandToken0)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK))
762
763// ENCODER MACRO: Define in OperandToken0 how many components
764// the data vector referred to by the operand contains.
765// (D3D10_SB_OPERAND_NUM_COMPONENTS enum).
766#define ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS(NumComp) ((NumComp)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK)
767
768typedef enum D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
769{
770 D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE = 0, // mask 4 components
771 D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE = 1, // swizzle 4 components
772 D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE = 2, // select 1 of 4 components
773} D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE;
774
775#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK 0x0000000c
776#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT 2
777
778// DECODER MACRO: For an operand representing 4component data,
779// extract from OperandToken0 the method for selecting data from
780// the 4 components (D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE).
781#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(OperandToken0) ((D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT))
782
783// ENCODER MACRO: For an operand representing 4component data,
784// encode in OperandToken0 a value from D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
785#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(SelectionMode) (((SelectionMode)<<D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)
786
787typedef enum D3D10_SB_4_COMPONENT_NAME
788{
789 D3D10_SB_4_COMPONENT_X = 0,
790 D3D10_SB_4_COMPONENT_Y = 1,
791 D3D10_SB_4_COMPONENT_Z = 2,
792 D3D10_SB_4_COMPONENT_W = 3,
793 D3D10_SB_4_COMPONENT_R = 0,
794 D3D10_SB_4_COMPONENT_G = 1,
795 D3D10_SB_4_COMPONENT_B = 2,
796 D3D10_SB_4_COMPONENT_A = 3
797} D3D10_SB_4_COMPONENT_NAME;
798#define D3D10_SB_4_COMPONENT_NAME_MASK 3
799
800// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE:
801
802#define D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK 0x000000f0
803#define D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT 4
804#define D3D10_SB_OPERAND_4_COMPONENT_MASK_X 0x00000010
805#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Y 0x00000020
806#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Z 0x00000040
807#define D3D10_SB_OPERAND_4_COMPONENT_MASK_W 0x00000080
808#define D3D10_SB_OPERAND_4_COMPONENT_MASK_R D3D10_SB_OPERAND_4_COMPONENT_MASK_X
809#define D3D10_SB_OPERAND_4_COMPONENT_MASK_G D3D10_SB_OPERAND_4_COMPONENT_MASK_Y
810#define D3D10_SB_OPERAND_4_COMPONENT_MASK_B D3D10_SB_OPERAND_4_COMPONENT_MASK_Z
811#define D3D10_SB_OPERAND_4_COMPONENT_MASK_A D3D10_SB_OPERAND_4_COMPONENT_MASK_W
812#define D3D10_SB_OPERAND_4_COMPONENT_MASK_ALL D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK
813
814// DECODER MACRO: When 4 component selection mode is
815// D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE, this macro
816// extracts from OperandToken0 the 4 component (xyzw) mask,
817// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
818// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
819// can be tested on OperandToken0 directly, without this macro.
820#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
821
822// ENCODER MACRO: Given a set of
823// D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] values
824// or'd together, encode them in OperandToken0.
825#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentMask) ((ComponentMask)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
826
827// ENCODER/DECODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME,
828// generate the 4-component mask for it.
829// This can be used in loops that build masks or read masks.
830// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
831// can be used directly, without this macro.
832#define D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentName) ((1<<(D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT+ComponentName))&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
833
834// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE:
835
836#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK 0x00000ff0
837#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT 4
838
839// DECODER MACRO: When 4 component selection mode is
840// D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE, this macro
841// extracts from OperandToken0 the 4 component swizzle,
842// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
843#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK)
844
845// DECODER MACRO: Pass a D3D10_SB_4_COMPONENT_NAME as "DestComp" in following
846// macro to extract, from OperandToken0 or from a decoded swizzle,
847// the swizzle source component (D3D10_SB_4_COMPONENT_NAME enum):
848#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE(OperandToken0,DestComp) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)>>(D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT+2*((DestComp)&D3D10_SB_4_COMPONENT_NAME_MASK)))&D3D10_SB_4_COMPONENT_NAME_MASK))
849
850// ENCODER MACRO: Generate a 4 component swizzle given
851// 4 D3D10_SB_4_COMPONENT_NAME source values for dest
852// components x, y, z, w respectively.
853#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(XSrc,YSrc,ZSrc,WSrc) ((((XSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)| \
854 (((YSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<2)| \
855 (((ZSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<4)| \
856 (((WSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<6) \
857 )<<D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT)
858
859// ENCODER/DECODER MACROS: Various common swizzle patterns
860// (noswizzle and replicate of each channels)
861#define D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
862 D3D10_SB_4_COMPONENT_Y,\
863 D3D10_SB_4_COMPONENT_Z,\
864 D3D10_SB_4_COMPONENT_W)
865
866#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
867 D3D10_SB_4_COMPONENT_X,\
868 D3D10_SB_4_COMPONENT_X,\
869 D3D10_SB_4_COMPONENT_X)
870
871#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Y,\
872 D3D10_SB_4_COMPONENT_Y,\
873 D3D10_SB_4_COMPONENT_Y,\
874 D3D10_SB_4_COMPONENT_Y)
875
876#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Z,\
877 D3D10_SB_4_COMPONENT_Z,\
878 D3D10_SB_4_COMPONENT_Z,\
879 D3D10_SB_4_COMPONENT_Z)
880
881#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_W,\
882 D3D10_SB_4_COMPONENT_W,\
883 D3D10_SB_4_COMPONENT_W,\
884 D3D10_SB_4_COMPONENT_W)
885
886#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX
887#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY
888#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ
889#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW
890
891// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE:
892#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK 0x00000030
893#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT 4
894
895// DECODER MACRO: When 4 component selection mode is
896// D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE, this macro
897// extracts from OperandToken0 a D3D10_SB_4_COMPONENT_NAME
898// which picks one of the 4 components.
899#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(OperandToken0) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT))
900
901// ENCODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME selecting
902// a single component for D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE,
903// encode it into OperandToken0
904#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(SelectedComp) (((SelectedComp)<<D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)
905
906// MACROS FOR DETERMINING OPERAND TYPE:
907
908typedef enum D3D10_SB_OPERAND_TYPE
909{
910 D3D10_SB_OPERAND_TYPE_TEMP = 0, // Temporary Register File
911 D3D10_SB_OPERAND_TYPE_INPUT = 1, // General Input Register File
912 D3D10_SB_OPERAND_TYPE_OUTPUT = 2, // General Output Register File
913 D3D10_SB_OPERAND_TYPE_INDEXABLE_TEMP = 3, // Temporary Register File (indexable)
914 D3D10_SB_OPERAND_TYPE_IMMEDIATE32 = 4, // 32bit/component immediate value(s)
915 // If for example, operand token bits
916 // [01:00]==D3D10_SB_OPERAND_4_COMPONENT,
917 // this means that the operand type:
918 // D3D10_SB_OPERAND_TYPE_IMMEDIATE32
919 // results in 4 additional 32bit
920 // DWORDS present for the operand.
921 D3D10_SB_OPERAND_TYPE_IMMEDIATE64 = 5, // 64bit/comp.imm.val(s)HI:LO
922 D3D10_SB_OPERAND_TYPE_SAMPLER = 6, // Reference to sampler state
923 D3D10_SB_OPERAND_TYPE_RESOURCE = 7, // Reference to memory resource (e.g. texture)
924 D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER= 8, // Reference to constant buffer
925 D3D10_SB_OPERAND_TYPE_IMMEDIATE_CONSTANT_BUFFER= 9, // Reference to immediate constant buffer
926 D3D10_SB_OPERAND_TYPE_LABEL = 10, // Label
927 D3D10_SB_OPERAND_TYPE_INPUT_PRIMITIVEID = 11, // Input primitive ID
928 D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH = 12, // Output Depth
929 D3D10_SB_OPERAND_TYPE_NULL = 13, // Null register, used to discard results of operations
930 // Below Are operands new in DX 10.1
931 D3D10_SB_OPERAND_TYPE_RASTERIZER = 14, // DX10.1 Rasterizer register, used to denote the depth/stencil and render target resources
932 D3D10_SB_OPERAND_TYPE_OUTPUT_COVERAGE_MASK = 15, // DX10.1 PS output MSAA coverage mask (scalar)
933 // Below Are operands new in DX 11
934 D3D11_SB_OPERAND_TYPE_STREAM = 16, // Reference to GS stream output resource
935 D3D11_SB_OPERAND_TYPE_FUNCTION_BODY = 17, // Reference to a function definition
936 D3D11_SB_OPERAND_TYPE_FUNCTION_TABLE = 18, // Reference to a set of functions used by a class
937 D3D11_SB_OPERAND_TYPE_INTERFACE = 19, // Reference to an interface
938 D3D11_SB_OPERAND_TYPE_FUNCTION_INPUT = 20, // Reference to an input parameter to a function
939 D3D11_SB_OPERAND_TYPE_FUNCTION_OUTPUT = 21, // Reference to an output parameter to a function
940 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT_ID = 22, // HS Control Point phase input saying which output control point ID this is
941 D3D11_SB_OPERAND_TYPE_INPUT_FORK_INSTANCE_ID = 23, // HS Fork Phase input instance ID
942 D3D11_SB_OPERAND_TYPE_INPUT_JOIN_INSTANCE_ID = 24, // HS Join Phase input instance ID
943 D3D11_SB_OPERAND_TYPE_INPUT_CONTROL_POINT = 25, // HS Fork+Join, DS phase input control points (array of them)
944 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT = 26, // HS Fork+Join phase output control points (array of them)
945 D3D11_SB_OPERAND_TYPE_INPUT_PATCH_CONSTANT = 27, // DS+HSJoin Input Patch Constants (array of them)
946 D3D11_SB_OPERAND_TYPE_INPUT_DOMAIN_POINT = 28, // DS Input Domain point
947 D3D11_SB_OPERAND_TYPE_THIS_POINTER = 29, // Reference to an interface this pointer
948 D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW = 30, // Reference to UAV u#
949 D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY = 31, // Reference to Thread Group Shared Memory g#
950 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID = 32, // Compute Shader Thread ID
951 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_GROUP_ID = 33, // Compute Shader Thread Group ID
952 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP = 34, // Compute Shader Thread ID In Thread Group
953 D3D11_SB_OPERAND_TYPE_INPUT_COVERAGE_MASK = 35, // Pixel shader coverage mask input
954 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36, // Compute Shader Thread ID In Group Flattened to a 1D value.
955 D3D11_SB_OPERAND_TYPE_INPUT_GS_INSTANCE_ID = 37, // Input GS instance ID
956 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL = 38, // Output Depth, forced to be greater than or equal than current depth
957 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL = 39, // Output Depth, forced to be less than or equal to current depth
958 D3D11_SB_OPERAND_TYPE_CYCLE_COUNTER = 40, // Cycle counter
959 D3D11_SB_OPERAND_TYPE_OUTPUT_STENCIL_REF = 41, // DX11 PS output stencil reference (scalar)
960 D3D11_SB_OPERAND_TYPE_INNER_COVERAGE = 42, // DX11 PS input inner coverage (scalar)
961} D3D10_SB_OPERAND_TYPE;
962
963#define D3D10_SB_OPERAND_TYPE_MASK 0x000ff000
964#define D3D10_SB_OPERAND_TYPE_SHIFT 12
965
966// DECODER MACRO: Determine operand type from OperandToken0.
967#define DECODE_D3D10_SB_OPERAND_TYPE(OperandToken0) ((D3D10_SB_OPERAND_TYPE)(((OperandToken0)&D3D10_SB_OPERAND_TYPE_MASK)>>D3D10_SB_OPERAND_TYPE_SHIFT))
968
969// ENCODER MACRO: Store operand type in OperandToken0.
970#define ENCODE_D3D10_SB_OPERAND_TYPE(OperandType) (((OperandType)<<D3D10_SB_OPERAND_TYPE_SHIFT)&D3D10_SB_OPERAND_TYPE_MASK)
971
972typedef enum D3D10_SB_OPERAND_INDEX_DIMENSION
973{
974 D3D10_SB_OPERAND_INDEX_0D = 0, // e.g. Position
975 D3D10_SB_OPERAND_INDEX_1D = 1, // Most common. e.g. Temp registers.
976 D3D10_SB_OPERAND_INDEX_2D = 2, // e.g. Geometry Program Input registers.
977 D3D10_SB_OPERAND_INDEX_3D = 3, // 3D rarely if ever used.
978} D3D10_SB_OPERAND_INDEX_DIMENSION;
979#define D3D10_SB_OPERAND_INDEX_DIMENSION_MASK 0x00300000
980#define D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT 20
981
982// DECODER MACRO: Determine operand index dimension from OperandToken0.
983#define DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandToken0) ((D3D10_SB_OPERAND_INDEX_DIMENSION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)>>D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT))
984
985// ENCODER MACRO: Store operand index dimension
986// (D3D10_SB_OPERAND_INDEX_DIMENSION enum) in OperandToken0.
987#define ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandIndexDim) (((OperandIndexDim)<<D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)
988
989typedef enum D3D10_SB_OPERAND_INDEX_REPRESENTATION
990{
991 D3D10_SB_OPERAND_INDEX_IMMEDIATE32 = 0, // Extra DWORD
992 D3D10_SB_OPERAND_INDEX_IMMEDIATE64 = 1, // 2 Extra DWORDs
993 // (HI32:LO32)
994 D3D10_SB_OPERAND_INDEX_RELATIVE = 2, // Extra operand
995 D3D10_SB_OPERAND_INDEX_IMMEDIATE32_PLUS_RELATIVE = 3, // Extra DWORD followed by
996 // extra operand
997 D3D10_SB_OPERAND_INDEX_IMMEDIATE64_PLUS_RELATIVE = 4, // 2 Extra DWORDS
998 // (HI32:LO32) followed
999 // by extra operand
1000} D3D10_SB_OPERAND_INDEX_REPRESENTATION;
1001#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim) (22+3*((Dim)&3))
1002#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim) (0x3<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))
1003
1004// DECODER MACRO: Determine from OperandToken0 what representation
1005// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1006// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1007#define DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,OperandToken0) ((D3D10_SB_OPERAND_INDEX_REPRESENTATION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))>>D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim)))
1008
1009// ENCODER MACRO: Store in OperandToken0 what representation
1010// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1011// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1012#define ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,IndexRepresentation) (((IndexRepresentation)<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))
1013
1014#define D3D10_SB_OPERAND_EXTENDED_MASK 0x80000000
1015#define D3D10_SB_OPERAND_EXTENDED_SHIFT 31
1016
1017// DECODER MACRO: Determine if the operand is extended
1018// by an additional opcode token.
1019#define DECODE_IS_D3D10_SB_OPERAND_EXTENDED(OperandToken0) (((OperandToken0)&D3D10_SB_OPERAND_EXTENDED_MASK)>>D3D10_SB_OPERAND_EXTENDED_SHIFT)
1020
1021// ENCODER MACRO: Store in OperandToken0 whether the operand is extended
1022// by an additional operand token.
1023#define ENCODE_D3D10_SB_OPERAND_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_EXTENDED_MASK:0)
1024
1025// ----------------------------------------------------------------------------
1026// Extended Instruction Operand Format (OperandToken1)
1027//
1028// If bit31 of an operand token is set, the
1029// operand has additional data in a second DWORD
1030// directly following OperandToken0. Other tokens
1031// expected for the operand, such as immmediate
1032// values or relative address operands (full
1033// operands in themselves) always follow
1034// OperandToken0 AND OperandToken1..n (extended
1035// operand tokens, if present).
1036//
1037// [05:00] D3D10_SB_EXTENDED_OPERAND_TYPE
1038// [16:06] if([05:00] == D3D10_SB_EXTENDED_OPERAND_MODIFIER)
1039// {
1040// [13:06] D3D10_SB_OPERAND_MODIFIER
1041// [16:14] Min Precision: D3D11_SB_OPERAND_MIN_PRECISION
1042// [17:17] Non-uniform: D3D12_SB_OPERAND_NON_UNIFORM
1043// }
1044// else
1045// {
1046// [17:06] Ignored, 0.
1047// }
1048// [30:18] Ignored, 0.
1049// [31] 0 normally. 1 if second order extended operand definition,
1050// meaning next DWORD contains yet ANOTHER extended operand
1051// description. Currently no second order extensions defined.
1052// This would be useful if a particular extended operand does
1053// not have enough space to store the required information in
1054// a single token and so is extended further.
1055//
1056// ----------------------------------------------------------------------------
1057
1058typedef enum D3D10_SB_EXTENDED_OPERAND_TYPE
1059{
1060 D3D10_SB_EXTENDED_OPERAND_EMPTY = 0, // Might be used if this
1061 // enum is full and
1062 // further extended opcode
1063 // is needed.
1064 D3D10_SB_EXTENDED_OPERAND_MODIFIER = 1,
1065} D3D10_SB_EXTENDED_OPERAND_TYPE;
1066#define D3D10_SB_EXTENDED_OPERAND_TYPE_MASK 0x0000003f
1067
1068// DECODER MACRO: Given an extended operand
1069// token (OperandToken1), figure out what type
1070// of token it is (from D3D10_SB_EXTENDED_OPERAND_TYPE enum)
1071// to be able to interpret the rest of the token's contents.
1072#define DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE(OperandToken1) ((D3D10_SB_EXTENDED_OPERAND_TYPE)((OperandToken1)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK))
1073
1074// ENCODER MACRO: Store extended operand token
1075// type in OperandToken1.
1076#define ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(ExtOperandType) ((ExtOperandType)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK)
1077
1078typedef enum D3D10_SB_OPERAND_MODIFIER
1079{
1080 D3D10_SB_OPERAND_MODIFIER_NONE = 0, // Nop. This is the implied
1081 // default if the extended
1082 // operand is not present for
1083 // an operand for which source
1084 // modifiers are meaningful
1085 D3D10_SB_OPERAND_MODIFIER_NEG = 1, // Negate
1086 D3D10_SB_OPERAND_MODIFIER_ABS = 2, // Absolute value, abs()
1087 D3D10_SB_OPERAND_MODIFIER_ABSNEG = 3, // -abs()
1088} D3D10_SB_OPERAND_MODIFIER;
1089#define D3D10_SB_OPERAND_MODIFIER_MASK 0x00003fc0
1090#define D3D10_SB_OPERAND_MODIFIER_SHIFT 6
1091
1092// DECODER MACRO: Given a D3D10_SB_EXTENDED_OPERAND_MODIFIER
1093// extended token (OperandToken1), determine the source modifier
1094// (D3D10_SB_OPERAND_MODIFIER enum)
1095#define DECODE_D3D10_SB_OPERAND_MODIFIER(OperandToken1) ((D3D10_SB_OPERAND_MODIFIER)(((OperandToken1)&D3D10_SB_OPERAND_MODIFIER_MASK)>>D3D10_SB_OPERAND_MODIFIER_SHIFT))
1096
1097// ENCODER MACRO: Generate a complete source modifier extended token
1098// (OperandToken1), given D3D10_SB_OPERAND_MODIFIER enum (the
1099// ext. operand type is also set to D3D10_SB_EXTENDED_OPERAND_MODIFIER).
1100#define ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER(SourceMod) ((((SourceMod)<<D3D10_SB_OPERAND_MODIFIER_SHIFT)&D3D10_SB_OPERAND_MODIFIER_MASK)| \
1101 ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(D3D10_SB_EXTENDED_OPERAND_MODIFIER) | \
1102 ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(0))
1103
1104// Min precision specifier for source/dest operands. This
1105// fits in the extended operand token field. Implementations are free to
1106// execute at higher precision than the min - details spec'ed elsewhere.
1107// This is part of the opcode specific control range.
1108typedef enum D3D11_SB_OPERAND_MIN_PRECISION
1109{
1110 D3D11_SB_OPERAND_MIN_PRECISION_DEFAULT = 0, // Default precision
1111 // for the shader model
1112 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
1113 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
1114 D3D11_SB_OPERAND_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
1115 D3D11_SB_OPERAND_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
1116} D3D11_SB_OPERAND_MIN_PRECISION;
1117#define D3D11_SB_OPERAND_MIN_PRECISION_MASK 0x0001C000
1118#define D3D11_SB_OPERAND_MIN_PRECISION_SHIFT 14
1119
1120// DECODER MACRO: For an OperandToken1 that can specify
1121// a minimum precision for execution, find out what it is.
1122#define DECODE_D3D11_SB_OPERAND_MIN_PRECISION(OperandToken1) ((D3D11_SB_OPERAND_MIN_PRECISION)(((OperandToken1)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)>> D3D11_SB_OPERAND_MIN_PRECISION_SHIFT))
1123
1124// ENCODER MACRO: Encode minimum precision for execution
1125// into the extended operand token, OperandToken1
1126#define ENCODE_D3D11_SB_OPERAND_MIN_PRECISION(MinPrecision) (((MinPrecision)<< D3D11_SB_OPERAND_MIN_PRECISION_SHIFT)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)
1127
1128
1129// Non-uniform extended operand modifier.
1130#define D3D12_SB_OPERAND_NON_UNIFORM_MASK 0x00020000
1131#define D3D12_SB_OPERAND_NON_UNIFORM_SHIFT 17
1132
1133// DECODER MACRO: For an OperandToken1 that can specify a non-uniform operand
1134#define DECODE_D3D12_SB_OPERAND_NON_UNIFORM(OperandToken1) (((OperandToken1)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)>> D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)
1135
1136// ENCODER MACRO: Encode non-uniform state into the extended operand token, OperandToken1
1137#define ENCODE_D3D12_SB_OPERAND_NON_UNIFORM(NonUniform) (((NonUniform)<< D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)
1138
1139
1140#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK 0x80000000
1141#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT 31
1142// DECODER MACRO: Determine if an extended operand token
1143// (OperandToken1) is further extended by yet another token
1144// (OperandToken2). Currently there are no secondary
1145// extended operand tokens.
1146#define DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED(OperandToken1) (((OperandToken1)&D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK)>>D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT)
1147
1148// ENCODER MACRO: Store in OperandToken1 whether the operand is extended
1149// by an additional operand token. Currently there are no secondary
1150// extended operand tokens.
1151#define ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK:0)
1152
1153// ----------------------------------------------------------------------------
1154// Name Token (NameToken) (used in declaration statements)
1155//
1156// [15:00] D3D10_SB_NAME enumeration
1157// [31:16] Reserved, 0
1158//
1159// ----------------------------------------------------------------------------
1160#define D3D10_SB_NAME_MASK 0x0000ffff
1161
1162// DECODER MACRO: Get the name from NameToken
1163#define DECODE_D3D10_SB_NAME(NameToken) ((D3D10_SB_NAME)((NameToken)&D3D10_SB_NAME_MASK))
1164
1165// ENCODER MACRO: Generate a complete NameToken given a D3D10_SB_NAME
1166#define ENCODE_D3D10_SB_NAME(Name) ((Name)&D3D10_SB_NAME_MASK)
1167
1168//---------------------------------------------------------------------
1169// Declaration Statements
1170//
1171// Declarations start with a standard opcode token,
1172// having opcode type being D3D10_SB_OPCODE_DCL*.
1173// Each particular declaration type has custom
1174// operand token(s), described below.
1175//---------------------------------------------------------------------
1176
1177// ----------------------------------------------------------------------------
1178// Global Flags Declaration
1179//
1180// OpcodeToken0:
1181//
1182// [10:00] D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS
1183// [11:11] Refactoring allowed if bit set.
1184// [12:12] Enable double precision float ops.
1185// [13:13] Force early depth-stencil test.
1186// [14:14] Enable RAW and structured buffers in non-CS 4.x shaders.
1187// [15:15] Skip optimizations of shader IL when translating to native code
1188// [16:16] Enable minimum-precision data types
1189// [17:17] Enable 11.1 double-precision floating-point instruction extensions
1190// [18:18] Enable 11.1 non-double instruction extensions
1191// [23:19] Reserved for future flags.
1192// [30:24] Instruction length in DWORDs including the opcode token. == 1
1193// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1194// contains extended operand description. This dcl is currently not
1195// extended.
1196//
1197// OpcodeToken0 is followed by no operands.
1198//
1199// ----------------------------------------------------------------------------
1200#define D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED (1<<11)
1201#define D3D11_SB_GLOBAL_FLAG_ENABLE_DOUBLE_PRECISION_FLOAT_OPS (1<<12)
1202#define D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL (1<<13)
1203#define D3D11_SB_GLOBAL_FLAG_ENABLE_RAW_AND_STRUCTURED_BUFFERS (1<<14)
1204#define D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION (1<<15)
1205#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION (1<<16)
1206#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_DOUBLE_EXTENSIONS (1<<17)
1207#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_SHADER_EXTENSIONS (1<<18)
1208#define D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND (1<<19)
1209
1210#define D3D10_SB_GLOBAL_FLAGS_MASK 0x00fff800
1211
1212// DECODER MACRO: Get global flags
1213#define DECODE_D3D10_SB_GLOBAL_FLAGS(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_GLOBAL_FLAGS_MASK)
1214
1215// ENCODER MACRO: Encode global flags
1216#define ENCODE_D3D10_SB_GLOBAL_FLAGS(Flags) ((Flags)&D3D10_SB_GLOBAL_FLAGS_MASK)
1217
1218// ----------------------------------------------------------------------------
1219// Resource Declaration (non multisampled)
1220//
1221// OpcodeToken0:
1222//
1223// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE
1224// [15:11] D3D10_SB_RESOURCE_DIMENSION
1225// [23:16] Ignored, 0
1226// [30:24] Instruction length in DWORDs including the opcode token.
1227// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1228// contains extended operand description. This dcl is currently not
1229// extended.
1230//
1231// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1232// (1) an operand, starting with OperandToken0, defining which
1233// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1234// (2) a Resource Return Type token (ResourceReturnTypeToken)
1235//
1236// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1237// (1) an operand, starting with OperandToken0, defining which
1238// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1239// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1240// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1241// 1 <id>: variable ID being declared
1242// 2 <lbound>: the lower bound of the range of resources in the space
1243// 3 <ubound>: the upper bound (inclusive) of this range
1244// As opposed to when the t# is used in shader instructions, where the register
1245// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1246// dimensions are as follows: (t<id>[<idx>]):
1247// 1 <id>: variable ID being used (matches dcl)
1248// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1249// (2) a Resource Return Type token (ResourceReturnTypeToken)
1250// (3) a DWORD indicating the space index.
1251//
1252// ----------------------------------------------------------------------------
1253#define D3D10_SB_RESOURCE_DIMENSION_MASK 0x0000F800
1254#define D3D10_SB_RESOURCE_DIMENSION_SHIFT 11
1255
1256// DECODER MACRO: Given a resource declaration token,
1257// (OpcodeToken0), determine the resource dimension
1258// (D3D10_SB_RESOURCE_DIMENSION enum)
1259#define DECODE_D3D10_SB_RESOURCE_DIMENSION(OpcodeToken0) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeToken0)&D3D10_SB_RESOURCE_DIMENSION_MASK)>>D3D10_SB_RESOURCE_DIMENSION_SHIFT))
1260
1261// ENCODER MACRO: Store resource dimension
1262// (D3D10_SB_RESOURCE_DIMENSION enum) into a
1263// a resource declaration token (OpcodeToken0)
1264#define ENCODE_D3D10_SB_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D10_SB_RESOURCE_DIMENSION_SHIFT)&D3D10_SB_RESOURCE_DIMENSION_MASK)
1265
1266// ----------------------------------------------------------------------------
1267// Resource Declaration (multisampled)
1268//
1269// OpcodeToken0:
1270//
1271// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE (same opcode as non-multisampled case)
1272// [15:11] D3D10_SB_RESOURCE_DIMENSION (must be TEXTURE2DMS or TEXTURE2DMSARRAY)
1273// [22:16] Sample count 1...127. 0 is currently disallowed, though
1274// in future versions 0 could mean "configurable" sample count
1275// [23:23] Ignored, 0
1276// [30:24] Instruction length in DWORDs including the opcode token.
1277// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1278// contains extended operand description. This dcl is currently not
1279// extended.
1280//
1281// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1282// (1) an operand, starting with OperandToken0, defining which
1283// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1284// (2) a Resource Return Type token (ResourceReturnTypeToken)
1285//
1286// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1287// (1) an operand, starting with OperandToken0, defining which
1288// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1289// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1290// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1291// 1 <id>: variable ID being declared
1292// 2 <lbound>: the lower bound of the range of resources in the space
1293// 3 <ubound>: the upper bound (inclusive) of this range
1294// As opposed to when the t# is used in shader instructions, where the register
1295// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1296// dimensions are as follows: (t<id>[<idx>]):
1297// 1 <id>: variable ID being used (matches dcl)
1298// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1299// (2) a Resource Return Type token (ResourceReturnTypeToken)
1300// (3) a DWORD indicating the space index.
1301//
1302// ----------------------------------------------------------------------------
1303
1304// use same macro for encoding/decoding resource dimension aas the non-msaa declaration
1305
1306#define D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK 0x07F0000
1307#define D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT 16
1308
1309// DECODER MACRO: Given a resource declaration token,
1310// (OpcodeToken0), determine the resource sample count (1..127)
1311#define DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)>>D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT))
1312
1313// ENCODER MACRO: Store resource sample count up to 127 into a
1314// a resource declaration token (OpcodeToken0)
1315#define ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(SampleCount) (((SampleCount > 127 ? 127 : SampleCount)<<D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)
1316
1317// ----------------------------------------------------------------------------
1318// Resource Return Type Token (ResourceReturnTypeToken) (used in resource
1319// declaration statements)
1320//
1321// [03:00] D3D10_SB_RESOURCE_RETURN_TYPE for component X
1322// [07:04] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
1323// [11:08] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
1324// [15:12] D3D10_SB_RESOURCE_RETURN_TYPE for component W
1325// [31:16] Reserved, 0
1326//
1327// ----------------------------------------------------------------------------
1328// DECODER MACRO: Get the resource return type for component (0-3) from
1329// ResourceReturnTypeToken
1330#define DECODE_D3D10_SB_RESOURCE_RETURN_TYPE(ResourceReturnTypeToken, Component) \
1331 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((ResourceReturnTypeToken) >> \
1332 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
1333
1334// ENCODER MACRO: Generate a resource return type for a component
1335#define ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE(ReturnType, Component) \
1336 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))
1337
1338// ----------------------------------------------------------------------------
1339// Sampler Declaration
1340//
1341// OpcodeToken0:
1342//
1343// [10:00] D3D10_SB_OPCODE_DCL_SAMPLER
1344// [14:11] D3D10_SB_SAMPLER_MODE
1345// [23:15] Ignored, 0
1346// [30:24] Instruction length in DWORDs including the opcode token.
1347// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1348// contains extended operand description. This dcl is currently not
1349// extended.
1350//
1351// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
1352// (1) Operand starting with OperandToken0, defining which sampler
1353// (D3D10_SB_OPERAND_TYPE_SAMPLER) register # is being declared.
1354//
1355// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
1356// (1) an operand, starting with OperandToken0, defining which
1357// s# register (D3D10_SB_OPERAND_TYPE_SAMPLER) is being declared.
1358// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1359// and the meaning of the index dimensions are as follows: (s<id>[<lbound>:<ubound>])
1360// 1 <id>: variable ID being declared
1361// 2 <lbound>: the lower bound of the range of samplers in the space
1362// 3 <ubound>: the upper bound (inclusive) of this range
1363// As opposed to when the s# is used in shader instructions, where the register
1364// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1365// dimensions are as follows: (s<id>[<idx>]):
1366// 1 <id>: variable ID being used (matches dcl)
1367// 2 <idx>: absolute index of sampler within space (may be dynamically indexed)
1368// (2) a DWORD indicating the space index.
1369//
1370// ----------------------------------------------------------------------------
1371typedef enum D3D10_SB_SAMPLER_MODE
1372{
1373 D3D10_SB_SAMPLER_MODE_DEFAULT = 0,
1374 D3D10_SB_SAMPLER_MODE_COMPARISON = 1,
1375 D3D10_SB_SAMPLER_MODE_MONO = 2,
1376} D3D10_SB_SAMPLER_MODE;
1377
1378#define D3D10_SB_SAMPLER_MODE_MASK 0x00007800
1379#define D3D10_SB_SAMPLER_MODE_SHIFT 11
1380
1381// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1382#define DECODE_D3D10_SB_SAMPLER_MODE(OpcodeToken0) ((D3D10_SB_SAMPLER_MODE)(((OpcodeToken0)&D3D10_SB_SAMPLER_MODE_MASK)>>D3D10_SB_SAMPLER_MODE_SHIFT))
1383
1384// ENCODER MACRO: Generate a resource return type for a component
1385#define ENCODE_D3D10_SB_SAMPLER_MODE(SamplerMode) (((SamplerMode)<<D3D10_SB_SAMPLER_MODE_SHIFT)&D3D10_SB_SAMPLER_MODE_MASK)
1386
1387// ----------------------------------------------------------------------------
1388// Input Register Declaration (see separate declarations for Pixel Shaders)
1389//
1390// OpcodeToken0:
1391//
1392// [10:00] D3D10_SB_OPCODE_DCL_INPUT
1393// [23:11] Ignored, 0
1394// [30:24] Instruction length in DWORDs including the opcode token.
1395// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1396// contains extended operand description. This dcl is currently not
1397// extended.
1398//
1399// OpcodeToken0 is followed by 1 operand:
1400// (1) Operand, starting with OperandToken0, defining which input
1401// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1402// including writemask.
1403//
1404// ----------------------------------------------------------------------------
1405
1406// ----------------------------------------------------------------------------
1407// Input Register Declaration w/System Interpreted Value
1408// (see separate declarations for Pixel Shaders)
1409//
1410// OpcodeToken0:
1411//
1412// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SIV
1413// [23:11] Ignored, 0
1414// [30:24] Instruction length in DWORDs including the opcode token.
1415// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1416// contains extended operand description. This dcl is currently not
1417// extended.
1418//
1419// OpcodeToken0 is followed by 2 operands:
1420// (1) Operand, starting with OperandToken0, defining which input
1421// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1422// including writemask. For Geometry Shaders, the input is
1423// v[vertex][attribute], and this declaration is only for which register
1424// on the attribute axis is being declared. The vertex axis value must
1425// be equal to the # of vertices in the current input primitive for the GS
1426// (i.e. 6 for triangle + adjacency).
1427// (2) a System Interpreted Value Name (NameToken)
1428//
1429// ----------------------------------------------------------------------------
1430
1431// ----------------------------------------------------------------------------
1432// Input Register Declaration w/System Generated Value
1433// (available for all shaders incl. Pixel Shader, no interpolation mode needed)
1434//
1435// OpcodeToken0:
1436//
1437// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SGV
1438// [23:11] Ignored, 0
1439// [30:24] Instruction length in DWORDs including the opcode token.
1440// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1441// contains extended operand description. This dcl is currently not
1442// extended.
1443//
1444// OpcodeToken0 is followed by 2 operands:
1445// (1) Operand, starting with OperandToken0, defining which input
1446// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1447// including writemask.
1448// (2) a System Generated Value Name (NameToken)
1449//
1450// ----------------------------------------------------------------------------
1451
1452// ----------------------------------------------------------------------------
1453// Pixel Shader Input Register Declaration
1454//
1455// OpcodeToken0:
1456//
1457// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS
1458// [14:11] D3D10_SB_INTERPOLATION_MODE
1459// [23:15] Ignored, 0
1460// [30:24] Instruction length in DWORDs including the opcode token.
1461// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1462// contains extended operand description. This dcl is currently not
1463// extended.
1464//
1465// OpcodeToken0 is followed by 1 operand:
1466// (1) Operand, starting with OperandToken0, defining which input
1467// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1468// including writemask.
1469//
1470// ----------------------------------------------------------------------------
1471#define D3D10_SB_INPUT_INTERPOLATION_MODE_MASK 0x00007800
1472#define D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT 11
1473
1474// DECODER MACRO: Find out interpolation mode for the input register
1475#define DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE(OpcodeToken0) ((D3D10_SB_INTERPOLATION_MODE)(((OpcodeToken0)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)>>D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT))
1476
1477// ENCODER MACRO: Encode interpolation mode for a register.
1478#define ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE(InterpolationMode) (((InterpolationMode)<<D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)
1479
1480// ----------------------------------------------------------------------------
1481// Pixel Shader Input Register Declaration w/System Interpreted Value
1482//
1483// OpcodeToken0:
1484//
1485// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SIV
1486// [14:11] D3D10_SB_INTERPOLATION_MODE
1487// [23:15] Ignored, 0
1488// [30:24] Instruction length in DWORDs including the opcode token.
1489// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1490// contains extended operand description. This dcl is currently not
1491// extended.
1492//
1493// OpcodeToken0 is followed by 2 operands:
1494// (1) Operand, starting with OperandToken0, defining which input
1495// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1496// (2) a System Interpreted Value Name (NameToken)
1497//
1498// ----------------------------------------------------------------------------
1499
1500// ----------------------------------------------------------------------------
1501// Pixel Shader Input Register Declaration w/System Generated Value
1502//
1503// OpcodeToken0:
1504//
1505// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SGV
1506// [23:11] Ignored, 0
1507// [30:24] Instruction length in DWORDs including the opcode token.
1508// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1509// contains extended operand description. This dcl is currently not
1510// extended.
1511//
1512// OpcodeToken0 is followed by 2 operands:
1513// (1) Operand, starting with OperandToken0, defining which input
1514// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1515// (2) a System Generated Value Name (NameToken)
1516//
1517// ----------------------------------------------------------------------------
1518
1519// ----------------------------------------------------------------------------
1520// Output Register Declaration
1521//
1522// OpcodeToken0:
1523//
1524// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT
1525// [23:11] Ignored, 0
1526// [30:24] Instruction length in DWORDs including the opcode token.
1527// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1528// contains extended operand description. This dcl is currently not
1529// extended.
1530//
1531// OpcodeToken0 is followed by 1 operand:
1532// (1) Operand, starting with OperandToken0, defining which
1533// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1534// including writemask.
1535// (in Pixel Shader, output can also be one of
1536// D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH,
1537// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL, or
1538// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL )
1539//
1540// ----------------------------------------------------------------------------
1541
1542// ----------------------------------------------------------------------------
1543// Output Register Declaration w/System Interpreted Value
1544//
1545// OpcodeToken0:
1546//
1547// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SIV
1548// [23:11] Ignored, 0
1549// [30:24] Instruction length in DWORDs including the opcode token.
1550// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1551// contains extended operand description. This dcl is currently not
1552// extended.
1553//
1554// OpcodeToken0 is followed by 2 operands:
1555// (1) an operand, starting with OperandToken0, defining which
1556// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1557// including writemask.
1558// (2) a System Interpreted Name token (NameToken)
1559//
1560// ----------------------------------------------------------------------------
1561
1562// ----------------------------------------------------------------------------
1563// Output Register Declaration w/System Generated Value
1564//
1565// OpcodeToken0:
1566//
1567// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SGV
1568// [23:11] Ignored, 0
1569// [30:24] Instruction length in DWORDs including the opcode token.
1570// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1571// contains extended operand description. This dcl is currently not
1572// extended.
1573//
1574// OpcodeToken0 is followed by 2 operands:
1575// (1) an operand, starting with OperandToken0, defining which
1576// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1577// including writemask.
1578// (2) a System Generated Name token (NameToken)
1579//
1580// ----------------------------------------------------------------------------
1581
1582
1583// ----------------------------------------------------------------------------
1584// Input or Output Register Indexing Range Declaration
1585//
1586// OpcodeToken0:
1587//
1588// [10:00] D3D10_SB_OPCODE_DCL_INDEX_RANGE
1589// [23:11] Ignored, 0
1590// [30:24] Instruction length in DWORDs including the opcode token.
1591// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1592// contains extended operand description. This dcl is currently not
1593// extended.
1594//
1595// OpcodeToken0 is followed by 2 operands:
1596// (1) an operand, starting with OperandToken0, defining which
1597// input (v#) or output (o#) register is having its array indexing range
1598// declared, including writemask. For Geometry Shader inputs,
1599// it is assumed that the vertex axis is always fully indexable,
1600// and 0 must be specified as the vertex# in this declaration, so that
1601// only the a range of attributes are having their index range defined.
1602//
1603// (2) a DWORD representing the count of registers starting from the one
1604// indicated in (1).
1605//
1606// ----------------------------------------------------------------------------
1607
1608// ----------------------------------------------------------------------------
1609// Temp Register Declaration r0...r(n-1)
1610//
1611// OpcodeToken0:
1612//
1613// [10:00] D3D10_SB_OPCODE_DCL_TEMPS
1614// [23:11] Ignored, 0
1615// [30:24] Instruction length in DWORDs including the opcode token.
1616// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1617// contains extended operand description. This dcl is currently not
1618// extended.
1619//
1620// OpcodeToken0 is followed by 1 operand:
1621// (1) DWORD (unsigned int) indicating how many temps are being declared.
1622// i.e. 5 means r0...r4 are declared.
1623//
1624// ----------------------------------------------------------------------------
1625
1626// ----------------------------------------------------------------------------
1627// Indexable Temp Register (x#[size]) Declaration
1628//
1629// OpcodeToken0:
1630//
1631// [10:00] D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP
1632// [23:11] Ignored, 0
1633// [30:24] Instruction length in DWORDs including the opcode token.
1634// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1635// contains extended operand description. This dcl is currently not
1636// extended.
1637//
1638// OpcodeToken0 is followed by 3 DWORDs:
1639// (1) Register index (defines which x# register is declared)
1640// (2) Number of registers in this register bank
1641// (3) Number of components in the array (1-4). 1 means .x, 2 means .xy etc.
1642//
1643// ----------------------------------------------------------------------------
1644
1645// ----------------------------------------------------------------------------
1646// Constant Buffer Declaration
1647//
1648// OpcodeToken0:
1649//
1650// [10:00] D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER
1651// [11] D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1652// [23:12] Ignored, 0
1653// [30:24] Instruction length in DWORDs including the opcode token.
1654// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1655// contains extended operand description. This dcl is currently not
1656// extended.
1657//
1658// OpcodeToken0 is followed by 1 operand on Shader Model 4.0 through 5.0:
1659// (1) Operand, starting with OperandToken0, defining which CB slot (cb#[size])
1660// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1661// The indexing dimension for the register must be
1662// D3D10_SB_OPERAND_INDEX_DIMENSION_2D, where the first index specifies
1663// which cb#[] is being declared, and the second (array) index specifies the size
1664// of the buffer, as a count of 32-bit*4 elements. (As opposed to when the
1665// cb#[] is used in shader instructions, and the array index represents which
1666// location in the constant buffer is being referenced.)
1667// If the size is specified as 0, the CB size is not known (any size CB
1668// can be bound to the slot).
1669//
1670// The order of constant buffer declarations in a shader indicates their
1671// relative priority from highest to lowest (hint to driver).
1672//
1673// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1674// (1) Operand, starting with OperandToken0, defining which CB range (ID and bounds)
1675// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1676// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1677// and the meaning of the index dimensions are as follows: (cb<id>[<lbound>:<ubound>])
1678// 1 <id>: variable ID being declared
1679// 2 <lbound>: the lower bound of the range of constant buffers in the space
1680// 3 <ubound>: the upper bound (inclusive) of this range
1681// As opposed to when the cb#[] is used in shader instructions: (cb<id>[<idx>][<loc>])
1682// 1 <id>: variable ID being used (matches dcl)
1683// 2 <idx>: absolute index of constant buffer within space (may be dynamically indexed)
1684// 3 <loc>: location of vector within constant buffer being referenced,
1685// which may also be dynamically indexed, with no access pattern flag required.
1686// (2) a DWORD indicating the size of the constant buffer as a count of 16-byte vectors.
1687// Each vector is 32-bit*4 elements == 128-bits == 16 bytes.
1688// If the size is specified as 0, the CB size is not known (any size CB
1689// can be bound to the slot).
1690// (3) a DWORD indicating the space index.
1691//
1692// ----------------------------------------------------------------------------
1693
1694typedef enum D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1695{
1696 D3D10_SB_CONSTANT_BUFFER_IMMEDIATE_INDEXED = 0,
1697 D3D10_SB_CONSTANT_BUFFER_DYNAMIC_INDEXED = 1
1698} D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN;
1699
1700#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK 0x00000800
1701#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT 11
1702
1703// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1704#define DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(OpcodeToken0) ((D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN)(((OpcodeToken0)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)>>D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT))
1705
1706// ENCODER MACRO: Encode the access pattern for the Constant Buffer
1707#define ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(AccessPattern) (((AccessPattern)<<D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)
1708
1709// ----------------------------------------------------------------------------
1710// Immediate Constant Buffer Declaration
1711//
1712// OpcodeToken0:
1713//
1714// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1715// [31:11] == D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER
1716//
1717// OpcodeToken0 is followed by:
1718// (1) DWORD indicating length of declaration, including OpcodeToken0.
1719// This length must = 2(for OpcodeToken0 and 1) + a multiple of 4
1720// (# of immediate constants)
1721// (2) Sequence of 4-tuples of DWORDs defining the Immediate Constant Buffer.
1722// The number of 4-tuples is (length above - 1) / 4
1723// ----------------------------------------------------------------------------
1724
1725// ----------------------------------------------------------------------------
1726// Shader Message Declaration
1727//
1728// OpcodeToken0:
1729//
1730// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1731// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_MESSAGE
1732//
1733// OpcodeToken0 is followed by:
1734// (1) DWORD indicating length of declaration, including OpcodeToken0.
1735// (2) DWORD (D3D11_SB_SHADER_MESSAGE_ID) indicating shader message or error.
1736// (3) D3D11_SB_SHADER_MESSAGE_FORMAT indicating the convention for formatting the message.
1737// (4) DWORD indicating the number of characters in the string without the terminator.
1738// (5) DWORD indicating the number of operands.
1739// (6) DWORD indicating length of operands.
1740// (7) Encoded operands.
1741// (8) String with trailing zero, padded to a multiple of DWORDs.
1742// The string is in the given format and the operands given should
1743// be used for argument substitutions when formatting.
1744// ----------------------------------------------------------------------------
1745
1746typedef enum D3D11_SB_SHADER_MESSAGE_ID
1747{
1748 D3D11_SB_SHADER_MESSAGE_ID_MESSAGE = 0x00200102,
1749 D3D11_SB_SHADER_MESSAGE_ID_ERROR = 0x00200103
1750} D3D11_SB_SHADER_MESSAGE_ID;
1751
1752typedef enum D3D11_SB_SHADER_MESSAGE_FORMAT
1753{
1754 // No formatting, just a text string. Operands are ignored.
1755 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_TEXT,
1756 // Format string follows C/C++ printf conventions.
1757 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_PRINTF,
1758} D3D11_SB_SHADER_MESSAGE_FORMAT;
1759
1760// ----------------------------------------------------------------------------
1761// Shader Clip Plane Constant Mappings for DX9 hardware
1762//
1763// OpcodeToken0:
1764//
1765// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1766// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9
1767//
1768// OpcodeToken0 is followed by:
1769// (1) DWORD indicating length of declaration, including OpcodeToken0.
1770// (2) DWORD indicating number of constant mappings (up to 6 mappings).
1771// (3+) Constant mapping tables in following format.
1772//
1773// struct _Clip_Plane_Constant_Mapping
1774// {
1775// WORD ConstantBufferIndex; // cb[n]
1776// WORD StartConstantElement; // starting index of cb[n][m]
1777// WORD ConstantElemntCount; // number of elements cb[n][m] ~ cb[n][m+l]
1778// WORD Reserved; //
1779// };
1780// ----------------------------------------------------------------------------
1781
1782// ----------------------------------------------------------------------------
1783// Geometry Shader Input Primitive Declaration
1784//
1785// OpcodeToken0:
1786//
1787// [10:00] D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE
1788// [16:11] D3D10_SB_PRIMITIVE [not D3D10_SB_PRIMITIVE_TOPOLOGY]
1789// [23:17] Ignored, 0
1790// [30:24] Instruction length in DWORDs including the opcode token. == 1
1791// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1792// contains extended operand description. This dcl is currently not
1793// extended.
1794//
1795// ----------------------------------------------------------------------------
1796
1797#define D3D10_SB_GS_INPUT_PRIMITIVE_MASK 0x0001f800
1798#define D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT 11
1799
1800// DECODER MACRO: Given a primitive topology declaration,
1801// (OpcodeToken0), determine the primitive topology
1802// (D3D10_SB_PRIMITIVE enum)
1803#define DECODE_D3D10_SB_GS_INPUT_PRIMITIVE(OpcodeToken0) ((D3D10_SB_PRIMITIVE)(((OpcodeToken0)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)>>D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT))
1804
1805// ENCODER MACRO: Store primitive topology
1806// (D3D10_SB_PRIMITIVE enum) into a
1807// a primitive topology declaration token (OpcodeToken0)
1808#define ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE(Prim) (((Prim)<<D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)
1809
1810// ----------------------------------------------------------------------------
1811// Geometry Shader Output Topology Declaration
1812//
1813// OpcodeToken0:
1814//
1815// [10:00] D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY
1816// [17:11] D3D10_SB_PRIMITIVE_TOPOLOGY
1817// [23:18] Ignored, 0
1818// [30:24] Instruction length in DWORDs including the opcode token. == 1
1819// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1820// contains extended operand description. This dcl is currently not
1821// extended.
1822//
1823// ----------------------------------------------------------------------------
1824
1825#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK 0x0001f800
1826#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT 11
1827
1828// DECODER MACRO: Given a primitive topology declaration,
1829// (OpcodeToken0), determine the primitive topology
1830// (D3D10_SB_PRIMITIVE_TOPOLOGY enum)
1831#define DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(OpcodeToken0) ((D3D10_SB_PRIMITIVE_TOPOLOGY)(((OpcodeToken0)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)>>D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT))
1832
1833// ENCODER MACRO: Store primitive topology
1834// (D3D10_SB_PRIMITIVE_TOPOLOGY enum) into a
1835// a primitive topology declaration token (OpcodeToken0)
1836#define ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(PrimTopology) (((PrimTopology)<<D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)
1837
1838// ----------------------------------------------------------------------------
1839// Geometry Shader Maximum Output Vertex Count Declaration
1840//
1841// OpcodeToken0:
1842//
1843// [10:00] D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT
1844// [23:11] Ignored, 0
1845// [30:24] Instruction length in DWORDs including the opcode token.
1846// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1847// contains extended operand description. This dcl is currently not
1848// extended.
1849//
1850// OpcodeToken0 is followed by a DWORD representing the
1851// maximum number of primitives that could be output
1852// by the Geometry Shader.
1853//
1854// ----------------------------------------------------------------------------
1855
1856// ----------------------------------------------------------------------------
1857// Geometry Shader Instance Count Declaration
1858//
1859// OpcodeToken0:
1860//
1861// [10:00] D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT
1862// [23:11] Ignored, 0
1863// [30:24] Instruction length in DWORDs including the opcode token.
1864// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1865// contains extended operand description. This dcl is currently not
1866// extended.
1867//
1868// OpcodeToken0 is followed by a UINT32 representing the
1869// number of instances of the geometry shader program to execute.
1870//
1871// ----------------------------------------------------------------------------
1872
1873// ----------------------------------------------------------------------------
1874// Hull Shader Declaration Phase: HS/DS Input Control Point Count
1875//
1876// OpcodeToken0:
1877//
1878// [10:00] D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT
1879// [16:11] Control point count
1880// [23:17] Ignored, 0
1881// [30:24] Instruction length in DWORDs including the opcode token. == 1
1882// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1883// contains extended operand description. This dcl is currently not
1884// extended.
1885//
1886// ----------------------------------------------------------------------------
1887#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1888#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT 11
1889
1890// DECODER MACRO: Given an input control point count declaration token,
1891// (OpcodeToken0), determine the control point count
1892#define DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT))
1893
1894// ENCODER MACRO: Store input control point count into a declaration token
1895#define ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)
1896
1897// ----------------------------------------------------------------------------
1898// Hull Shader Declaration Phase: HS Output Control Point Count
1899//
1900// OpcodeToken0:
1901//
1902// [10:00] D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT
1903// [16:11] Control point count
1904// [23:17] Ignored, 0
1905// [30:24] Instruction length in DWORDs including the opcode token. == 1
1906// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1907// contains extended operand description. This dcl is currently not
1908// extended.
1909//
1910// ----------------------------------------------------------------------------
1911#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1912#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT 11
1913
1914// DECODER MACRO: Given an output control point count declaration token,
1915// (OpcodeToken0), determine the control point count
1916#define DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT))
1917
1918// ENCODER MACRO: Store output control point count into a declaration token
1919#define ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)
1920
1921// ----------------------------------------------------------------------------
1922// Hull Shader Declaration Phase: Tessellator Domain
1923//
1924// OpcodeToken0:
1925//
1926// [10:00] D3D11_SB_OPCODE_DCL_TESS_DOMAIN
1927// [12:11] Domain
1928// [23:13] Ignored, 0
1929// [30:24] Instruction length in DWORDs including the opcode token. == 1
1930// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1931// contains extended operand description. This dcl is currently not
1932// extended.
1933//
1934// ----------------------------------------------------------------------------
1935typedef enum D3D11_SB_TESSELLATOR_DOMAIN
1936{
1937 D3D11_SB_TESSELLATOR_DOMAIN_UNDEFINED = 0,
1938 D3D11_SB_TESSELLATOR_DOMAIN_ISOLINE = 1,
1939 D3D11_SB_TESSELLATOR_DOMAIN_TRI = 2,
1940 D3D11_SB_TESSELLATOR_DOMAIN_QUAD = 3
1941} D3D11_SB_TESSELLATOR_DOMAIN;
1942
1943#define D3D11_SB_TESS_DOMAIN_MASK 0x00001800
1944#define D3D11_SB_TESS_DOMAIN_SHIFT 11
1945
1946// DECODER MACRO: Given a tessellator domain declaration,
1947// (OpcodeToken0), determine the domain
1948// (D3D11_SB_TESSELLATOR_DOMAIN enum)
1949#define DECODE_D3D11_SB_TESS_DOMAIN(OpcodeToken0) ((D3D11_SB_TESSELLATOR_DOMAIN)(((OpcodeToken0)&D3D11_SB_TESS_DOMAIN_MASK)>>D3D11_SB_TESS_DOMAIN_SHIFT))
1950
1951// ENCODER MACRO: Store tessellator domain
1952// (D3D11_SB_TESSELLATOR_DOMAIN enum) into a
1953// a tessellator domain declaration token (OpcodeToken0)
1954#define ENCODE_D3D11_SB_TESS_DOMAIN(Domain) (((Domain)<<D3D11_SB_TESS_DOMAIN_SHIFT)&D3D11_SB_TESS_DOMAIN_MASK)
1955
1956// ----------------------------------------------------------------------------
1957// Hull Shader Declaration Phase: Tessellator Partitioning
1958//
1959// OpcodeToken0:
1960//
1961// [10:00] D3D11_SB_OPCODE_DCL_TESS_PARTITIONING
1962// [13:11] Partitioning
1963// [23:14] Ignored, 0
1964// [30:24] Instruction length in DWORDs including the opcode token. == 1
1965// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1966// contains extended operand description. This dcl is currently not
1967// extended.
1968//
1969// ----------------------------------------------------------------------------
1970typedef enum D3D11_SB_TESSELLATOR_PARTITIONING
1971{
1972 D3D11_SB_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1973 D3D11_SB_TESSELLATOR_PARTITIONING_INTEGER = 1,
1974 D3D11_SB_TESSELLATOR_PARTITIONING_POW2 = 2,
1975 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1976 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4
1977} D3D11_SB_TESSELLATOR_PARTITIONING;
1978
1979#define D3D11_SB_TESS_PARTITIONING_MASK 0x00003800
1980#define D3D11_SB_TESS_PARTITIONING_SHIFT 11
1981
1982// DECODER MACRO: Given a tessellator partitioning declaration,
1983// (OpcodeToken0), determine the domain
1984// (D3D11_SB_TESSELLATOR_PARTITIONING enum)
1985#define DECODE_D3D11_SB_TESS_PARTITIONING(OpcodeToken0) ((D3D11_SB_TESSELLATOR_PARTITIONING)(((OpcodeToken0)&D3D11_SB_TESS_PARTITIONING_MASK)>>D3D11_SB_TESS_PARTITIONING_SHIFT))
1986
1987// ENCODER MACRO: Store tessellator partitioning
1988// (D3D11_SB_TESSELLATOR_PARTITIONING enum) into a
1989// a tessellator partitioning declaration token (OpcodeToken0)
1990#define ENCODE_D3D11_SB_TESS_PARTITIONING(Partitioning) (((Partitioning)<<D3D11_SB_TESS_PARTITIONING_SHIFT)&D3D11_SB_TESS_PARTITIONING_MASK)
1991
1992// ----------------------------------------------------------------------------
1993// Hull Shader Declaration Phase: Tessellator Output Primitive
1994//
1995// OpcodeToken0:
1996//
1997// [10:00] D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE
1998// [13:11] Output Primitive
1999// [23:14] Ignored, 0
2000// [30:24] Instruction length in DWORDs including the opcode token. == 1
2001// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2002// contains extended operand description. This dcl is currently not
2003// extended.
2004//
2005// ----------------------------------------------------------------------------
2006typedef enum D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE
2007{
2008 D3D11_SB_TESSELLATOR_OUTPUT_UNDEFINED = 0,
2009 D3D11_SB_TESSELLATOR_OUTPUT_POINT = 1,
2010 D3D11_SB_TESSELLATOR_OUTPUT_LINE = 2,
2011 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
2012 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4
2013} D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE;
2014
2015#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK 0x00003800
2016#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT 11
2017
2018// DECODER MACRO: Given a tessellator output primitive declaration,
2019// (OpcodeToken0), determine the domain
2020// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum)
2021#define DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OpcodeToken0) ((D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE)(((OpcodeToken0)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)>>D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT))
2022
2023// ENCODER MACRO: Store tessellator output primitive
2024// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum) into a
2025// a tessellator output primitive declaration token (OpcodeToken0)
2026#define ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OutputPrimitive) (((OutputPrimitive)<<D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)
2027
2028
2029// ----------------------------------------------------------------------------
2030// Hull Shader Declaration Phase: Hull Shader Max Tessfactor
2031//
2032// OpcodeToken0:
2033//
2034// [10:00] D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR
2035// [23:11] Ignored, 0
2036// [30:24] Instruction length in DWORDs including the opcode token.
2037// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2038// contains extended operand description. This dcl is currently not
2039// extended.
2040//
2041// OpcodeToken0 is followed by a float32 representing the
2042// maximum TessFactor.
2043//
2044// ----------------------------------------------------------------------------
2045
2046// ----------------------------------------------------------------------------
2047// Hull Shader Declaration Phase: Hull Shader Fork Phase Instance Count
2048//
2049// OpcodeToken0:
2050//
2051// [10:00] D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT
2052// [23:11] Ignored, 0
2053// [30:24] Instruction length in DWORDs including the opcode token.
2054// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2055// contains extended operand description. This dcl is currently not
2056// extended.
2057//
2058// OpcodeToken0 is followed by a UINT32 representing the
2059// number of instances of the current fork phase program to execute.
2060//
2061// ----------------------------------------------------------------------------
2062
2063typedef enum D3D10_SB_INTERPOLATION_MODE
2064{
2065 D3D10_SB_INTERPOLATION_UNDEFINED = 0,
2066 D3D10_SB_INTERPOLATION_CONSTANT = 1,
2067 D3D10_SB_INTERPOLATION_LINEAR = 2,
2068 D3D10_SB_INTERPOLATION_LINEAR_CENTROID = 3,
2069 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
2070 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
2071 D3D10_SB_INTERPOLATION_LINEAR_SAMPLE = 6, // DX10.1
2072 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7, // DX10.1
2073} D3D10_SB_INTERPOLATION_MODE;
2074
2075// Keep PRIMITIVE_TOPOLOGY values in sync with earlier DX versions (HW consumes values directly).
2076typedef enum D3D10_SB_PRIMITIVE_TOPOLOGY
2077{
2078 D3D10_SB_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
2079 D3D10_SB_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
2080 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST = 2,
2081 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
2082 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
2083 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
2084 // 6 is reserved for legacy triangle fans
2085 // Adjacency values should be equal to (0x8 & non-adjacency):
2086 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
2087 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
2088 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
2089 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
2090} D3D10_SB_PRIMITIVE_TOPOLOGY;
2091
2092typedef enum D3D10_SB_PRIMITIVE
2093{
2094 D3D10_SB_PRIMITIVE_UNDEFINED = 0,
2095 D3D10_SB_PRIMITIVE_POINT = 1,
2096 D3D10_SB_PRIMITIVE_LINE = 2,
2097 D3D10_SB_PRIMITIVE_TRIANGLE = 3,
2098 // Adjacency values should be equal to (0x4 & non-adjacency):
2099 D3D10_SB_PRIMITIVE_LINE_ADJ = 6,
2100 D3D10_SB_PRIMITIVE_TRIANGLE_ADJ = 7,
2101 D3D11_SB_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
2102 D3D11_SB_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
2103 D3D11_SB_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
2104 D3D11_SB_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
2105 D3D11_SB_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
2106 D3D11_SB_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
2107 D3D11_SB_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
2108 D3D11_SB_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
2109 D3D11_SB_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
2110 D3D11_SB_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
2111 D3D11_SB_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
2112 D3D11_SB_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
2113 D3D11_SB_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
2114 D3D11_SB_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
2115 D3D11_SB_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
2116 D3D11_SB_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
2117 D3D11_SB_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
2118 D3D11_SB_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
2119 D3D11_SB_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
2120 D3D11_SB_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
2121 D3D11_SB_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
2122 D3D11_SB_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
2123 D3D11_SB_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
2124 D3D11_SB_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
2125 D3D11_SB_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
2126 D3D11_SB_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
2127 D3D11_SB_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
2128 D3D11_SB_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
2129 D3D11_SB_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
2130 D3D11_SB_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
2131 D3D11_SB_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
2132 D3D11_SB_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
2133} D3D10_SB_PRIMITIVE;
2134
2135typedef enum D3D10_SB_COMPONENT_MASK
2136{
2137 D3D10_SB_COMPONENT_MASK_X = 1,
2138 D3D10_SB_COMPONENT_MASK_Y = 2,
2139 D3D10_SB_COMPONENT_MASK_Z = 4,
2140 D3D10_SB_COMPONENT_MASK_W = 8,
2141 D3D10_SB_COMPONENT_MASK_R = 1,
2142 D3D10_SB_COMPONENT_MASK_G = 2,
2143 D3D10_SB_COMPONENT_MASK_B = 4,
2144 D3D10_SB_COMPONENT_MASK_A = 8,
2145 D3D10_SB_COMPONENT_MASK_ALL = 15,
2146} D3D10_SB_COMPONENT_MASK;
2147
2148typedef enum D3D10_SB_NAME
2149{
2150 D3D10_SB_NAME_UNDEFINED = 0,
2151 D3D10_SB_NAME_POSITION = 1,
2152 D3D10_SB_NAME_CLIP_DISTANCE = 2,
2153 D3D10_SB_NAME_CULL_DISTANCE = 3,
2154 D3D10_SB_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
2155 D3D10_SB_NAME_VIEWPORT_ARRAY_INDEX = 5,
2156 D3D10_SB_NAME_VERTEX_ID = 6,
2157 D3D10_SB_NAME_PRIMITIVE_ID = 7,
2158 D3D10_SB_NAME_INSTANCE_ID = 8,
2159 D3D10_SB_NAME_IS_FRONT_FACE = 9,
2160 D3D10_SB_NAME_SAMPLE_INDEX = 10,
2161 // The following are added for D3D11
2162 D3D11_SB_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR = 11,
2163 D3D11_SB_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR = 12,
2164 D3D11_SB_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR = 13,
2165 D3D11_SB_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR = 14,
2166 D3D11_SB_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR = 15,
2167 D3D11_SB_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR = 16,
2168 D3D11_SB_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR = 17,
2169 D3D11_SB_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR = 18,
2170 D3D11_SB_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR = 19,
2171 D3D11_SB_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 20,
2172 D3D11_SB_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 21,
2173 D3D11_SB_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 22,
2174 // The following are added for D3D12
2175 D3D12_SB_NAME_BARYCENTRICS = 23,
2176 D3D12_SB_NAME_SHADINGRATE = 24,
2177 D3D12_SB_NAME_CULLPRIMITIVE = 25,
2178} D3D10_SB_NAME;
2179
2180typedef enum D3D10_SB_RESOURCE_DIMENSION
2181{
2182 D3D10_SB_RESOURCE_DIMENSION_UNKNOWN = 0,
2183 D3D10_SB_RESOURCE_DIMENSION_BUFFER = 1,
2184 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1D = 2,
2185 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2D = 3,
2186 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMS = 4,
2187 D3D10_SB_RESOURCE_DIMENSION_TEXTURE3D = 5,
2188 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBE = 6,
2189 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1DARRAY = 7,
2190 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DARRAY = 8,
2191 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMSARRAY = 9,
2192 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBEARRAY = 10,
2193 D3D11_SB_RESOURCE_DIMENSION_RAW_BUFFER = 11,
2194 D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER = 12,
2195} D3D10_SB_RESOURCE_DIMENSION;
2196
2197typedef enum D3D10_SB_RESOURCE_RETURN_TYPE
2198{
2199 D3D10_SB_RETURN_TYPE_UNORM = 1,
2200 D3D10_SB_RETURN_TYPE_SNORM = 2,
2201 D3D10_SB_RETURN_TYPE_SINT = 3,
2202 D3D10_SB_RETURN_TYPE_UINT = 4,
2203 D3D10_SB_RETURN_TYPE_FLOAT = 5,
2204 D3D10_SB_RETURN_TYPE_MIXED = 6,
2205 D3D11_SB_RETURN_TYPE_DOUBLE = 7,
2206 D3D11_SB_RETURN_TYPE_CONTINUED = 8,
2207 D3D11_SB_RETURN_TYPE_UNUSED = 9,
2208} D3D10_SB_RESOURCE_RETURN_TYPE;
2209
2210typedef enum D3D10_SB_REGISTER_COMPONENT_TYPE
2211{
2212 D3D10_SB_REGISTER_COMPONENT_UNKNOWN = 0,
2213 D3D10_SB_REGISTER_COMPONENT_UINT32 = 1,
2214 D3D10_SB_REGISTER_COMPONENT_SINT32 = 2,
2215 D3D10_SB_REGISTER_COMPONENT_FLOAT32 = 3,
2216 // Below types aren't used in DXBC, only signatures from DXIL shaders
2217 D3D10_SB_REGISTER_COMPONENT_UINT16 = 4,
2218 D3D10_SB_REGISTER_COMPONENT_SINT16 = 5,
2219 D3D10_SB_REGISTER_COMPONENT_FLOAT16 = 6,
2220 D3D10_SB_REGISTER_COMPONENT_UINT64 = 7,
2221 D3D10_SB_REGISTER_COMPONENT_SINT64 = 8,
2222 D3D10_SB_REGISTER_COMPONENT_FLOAT64 = 9,
2223} D3D10_SB_REGISTER_COMPONENT_TYPE;
2224
2225typedef enum D3D10_SB_INSTRUCTION_RETURN_TYPE
2226{
2227 D3D10_SB_INSTRUCTION_RETURN_FLOAT = 0,
2228 D3D10_SB_INSTRUCTION_RETURN_UINT = 1
2229} D3D10_SB_INSTRUCTION_RETURN_TYPE;
2230
2231#define D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
2232#define D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT 11
2233
2234// DECODER MACRO: For an OpcodeToken0 with the return type
2235// determine the return type.
2236#define DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT))
2237// ENCODER MACRO: Encode the return type for instructions
2238// in the opcode specific control range of OpcodeToken0
2239#define ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)
2240
2241// ----------------------------------------------------------------------------
2242// Interface function body Declaration
2243//
2244// OpcodeToken0:
2245//
2246// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_BODY
2247// [23:11] Ignored, 0
2248// [30:24] Instruction length in DWORDs including the opcode token.
2249// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2250// contains extended operand description. If it is extended, then
2251// it contains the actual instruction length in DWORDs, since
2252// it may not fit into 7 bits if enough operands are defined.
2253//
2254// OpcodeToken0 is followed by a DWORD that represents the function body
2255// identifier.
2256//
2257// ----------------------------------------------------------------------------
2258
2259// ----------------------------------------------------------------------------
2260// Interface function table Declaration
2261//
2262// OpcodeToken0:
2263//
2264// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_TABLE
2265// [23:11] Ignored, 0
2266// [30:24] Instruction length in DWORDs including the opcode token.
2267// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2268// contains extended operand description. If it is extended, then
2269// it contains the actual instruction length in DWORDs, since
2270// it may not fit into 7 bits if enough functions are defined.
2271//
2272// OpcodeToken0 is followed by a DWORD that represents the function table
2273// identifier and another DWORD (TableLength) that gives the number of
2274// functions in the table.
2275//
2276// This is followed by TableLength DWORDs which are function body indices.
2277//
2278// ----------------------------------------------------------------------------
2279
2280// ----------------------------------------------------------------------------
2281// Interface Declaration
2282//
2283// OpcodeToken0:
2284//
2285// [10:00] D3D10_SB_OPCODE_DCL_INTERFACE
2286// [11] 1 if the interface is indexed dynamically, 0 otherwise.
2287// [23:12] Ignored, 0
2288// [30:24] Instruction length in DWORDs including the opcode token.
2289// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2290// contains extended operand description. If it is extended, then
2291// it contains the actual instruction length in DWORDs, since
2292// it may not fit into 7 bits if enough types are used.
2293//
2294// OpcodeToken0 is followed by a DWORD that represents the interface
2295// identifier. Next is a DWORD that gives the expected function table
2296// length. Then another DWORD (OpcodeToken3) with the following layout:
2297//
2298// [15:00] TableLength, the number of types that implement this interface
2299// [31:16] ArrayLength, the number of interfaces that are defined in this array.
2300//
2301// This is followed by TableLength DWORDs which are function table
2302// identifiers, representing possible tables for a given interface.
2303//
2304// ----------------------------------------------------------------------------
2305
2306#define D3D11_SB_INTERFACE_INDEXED_BIT_MASK 0x00000800
2307#define D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT 11
2308
2309#define D3D11_SB_INTERFACE_TABLE_LENGTH_MASK 0x0000ffff
2310#define D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT 0
2311
2312#define D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK 0xffff0000
2313#define D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT 16
2314
2315// get/set the indexed bit for an interface definition
2316#define DECODE_D3D11_SB_INTERFACE_INDEXED_BIT(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)>>D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT) ? true : false)
2317#define ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT(IndexedBit) (((IndexedBit)<<D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)
2318
2319// get/set the table length for an interface definition
2320#define DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)>>D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT))
2321#define ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH(TableLength) (((TableLength)<<D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)
2322
2323// get/set the array length for an interface definition
2324#define DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)>>D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT))
2325#define ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(ArrayLength) (((ArrayLength)<<D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)
2326
2327// ----------------------------------------------------------------------------
2328// Interface call
2329//
2330// OpcodeToken0:
2331//
2332// [10:00] D3D10_SB_OPCODE_INTERFACE_CALL
2333// [23:11] Ignored, 0
2334// [30:24] Instruction length in DWORDs including the opcode token.
2335// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2336// contains extended operand description. If it is extended, then
2337// it contains the actual instruction length in DWORDs, since
2338// it may not fit into 7 bits if enough types are used.
2339//
2340// OpcodeToken0 is followed by a DWORD that gives the function index to
2341// call in the function table specified for the given interface.
2342// Next is the interface operand.
2343//
2344// ----------------------------------------------------------------------------
2345
2346// ----------------------------------------------------------------------------
2347// Thread Group Declaration (Compute Shader)
2348//
2349// OpcodeToken0:
2350//
2351// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP
2352// [23:11] Ignored, 0
2353// [30:24] Instruction length in DWORDs including the opcode token.
2354// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2355// contains extended operand description. If it is extended, then
2356// it contains the actual instruction length in DWORDs, since
2357// it may not fit into 7 bits if enough types are used.
2358//
2359// OpcodeToken0 is followed by 3 DWORDs, the Thread Group dimensions as UINT32:
2360// x, y, z
2361//
2362// ----------------------------------------------------------------------------
2363
2364// ----------------------------------------------------------------------------
2365// Typed Unordered Access View Declaration
2366//
2367// OpcodeToken0:
2368//
2369// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED
2370// [15:11] D3D10_SB_RESOURCE_DIMENSION
2371// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2372// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2373// [23:18] Ignored, 0
2374// [30:24] Instruction length in DWORDs including the opcode token.
2375// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2376// contains extended operand description. This dcl is currently not
2377// extended.
2378//
2379// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
2380// (1) an operand, starting with OperandToken0, defining which
2381// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2382// (2) a Resource Return Type token (ResourceReturnTypeToken)
2383//
2384// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2385// (1) an operand, starting with OperandToken0, defining which
2386// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2387// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2388// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2389// 1 <id>: variable ID being declared
2390// 2 <lbound>: the lower bound of the range of UAV's in the space
2391// 3 <ubound>: the upper bound (inclusive) of this range
2392// As opposed to when the u# is used in shader instructions, where the register
2393// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2394// dimensions are as follows: (u<id>[<idx>]):
2395// 1 <id>: variable ID being used (matches dcl)
2396// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2397// (2) a Resource Return Type token (ResourceReturnTypeToken)
2398// (3) a DWORD indicating the space index.
2399//
2400// ----------------------------------------------------------------------------
2401// UAV access scope flags
2402#define D3D11_SB_GLOBALLY_COHERENT_ACCESS 0x00010000
2403#define D3D11_SB_ACCESS_COHERENCY_MASK 0x00010000
2404
2405// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
2406#define DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_ACCESS_COHERENCY_MASK)
2407
2408// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
2409#define ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(Flags) ((Flags)&D3D11_SB_ACCESS_COHERENCY_MASK)
2410
2411// Additional UAV access flags
2412#define D3D11_SB_RASTERIZER_ORDERED_ACCESS 0x00020000
2413
2414// Resource flags mask. Use to retrieve all resource flags, including the order preserving counter.
2415#define D3D11_SB_RESOURCE_FLAGS_MASK (D3D11_SB_GLOBALLY_COHERENT_ACCESS|D3D11_SB_RASTERIZER_ORDERED_ACCESS|D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER)
2416
2417// DECODER MACRO: Retrieve UAV access flags for from OpcodeToken0.
2418#define DECODE_D3D11_SB_RESOURCE_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_RESOURCE_FLAGS_MASK)
2419
2420// ENCODER MACRO: Given UAV access flags, encode them in OpcodeToken0.
2421#define ENCODE_D3D11_SB_RESOURCE_FLAGS(Flags) ((Flags)&D3D11_SB_RESOURCE_FLAGS_MASK)
2422
2423// ----------------------------------------------------------------------------
2424// Raw Unordered Access View Declaration
2425//
2426// OpcodeToken0:
2427//
2428// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW
2429// [15:11] Ignored, 0
2430// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2431// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2432// [23:18] Ignored, 0
2433// [30:24] Instruction length in DWORDs including the opcode token.
2434// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2435// contains extended operand description. This dcl is currently not
2436// extended.
2437//
2438// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
2439// (1) an operand, starting with OperandToken0, defining which
2440// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2441//
2442// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2443// (1) an operand, starting with OperandToken0, defining which
2444// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2445// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2446// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2447// 1 <id>: variable ID being declared
2448// 2 <lbound>: the lower bound of the range of UAV's in the space
2449// 3 <ubound>: the upper bound (inclusive) of this range
2450// As opposed to when the u# is used in shader instructions, where the register
2451// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2452// dimensions are as follows: (u<id>[<idx>]):
2453// 1 <id>: variable ID being used (matches dcl)
2454// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2455// (2) a DWORD indicating the space index.
2456//
2457// ----------------------------------------------------------------------------
2458
2459// ----------------------------------------------------------------------------
2460// Structured Unordered Access View Declaration
2461//
2462// OpcodeToken0:
2463//
2464// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED
2465// [15:11] Ignored, 0
2466// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2467// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2468// [22:18] Ignored, 0
2469// [23:23] D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER or 0
2470//
2471// The presence of this flag means that if a UAV is bound to the
2472// corresponding slot, it must have been created with
2473// D3D11_BUFFER_UAV_FLAG_COUNTER at the API. Also, the shader
2474// can contain either imm_atomic_alloc or _consume instructions
2475// operating on the given UAV.
2476//
2477// If this flag is not present, the shader can still contain
2478// either imm_atomic_alloc or imm_atomic_consume instructions for
2479// this UAV. But if such instructions are present in this case,
2480// and a UAV is bound corresponding slot, it must have been created
2481// with the D3D11_BUFFER_UAV_FLAG_APPEND flag at the API.
2482// Append buffers have a counter as well, but values returned
2483// to the shader are only valid for the lifetime of the shader
2484// invocation.
2485//
2486// [30:24] Instruction length in DWORDs including the opcode token.
2487// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2488// contains extended operand description. This dcl is currently not
2489// extended.
2490//
2491// OpcodeToken0 is followed by 2 operands:
2492// (1) an operand, starting with OperandToken0, defining which
2493// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is
2494// being declared.
2495// (2) a DWORD indicating UINT32 byte stride
2496//
2497// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2498// (1) an operand, starting with OperandToken0, defining which
2499// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2500// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2501// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2502// 1 <id>: variable ID being declared
2503// 2 <lbound>: the lower bound of the range of UAV's in the space
2504// 3 <ubound>: the upper bound (inclusive) of this range
2505// As opposed to when the u# is used in shader instructions, where the register
2506// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2507// dimensions are as follows: (u<id>[<idx>]):
2508// 1 <id>: variable ID being used (matches dcl)
2509// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2510// (2) a DWORD indicating UINT32 byte stride
2511// (3) a DWORD indicating the space index.
2512//
2513// ----------------------------------------------------------------------------
2514// UAV flags
2515#define D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER 0x00800000
2516#define D3D11_SB_UAV_FLAGS_MASK 0x00800000
2517
2518// DECODER MACRO: Retrieve flags about UAV from OpcodeToken0.
2519#define DECODE_D3D11_SB_UAV_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_UAV_FLAGS_MASK)
2520
2521// ENCODER MACRO: Given a set of UAV flags, encode them in OpcodeToken0.
2522#define ENCODE_D3D11_SB_UAV_FLAGS(Flags) ((Flags)&D3D11_SB_UAV_FLAGS_MASK)
2523
2524// ----------------------------------------------------------------------------
2525// Raw Thread Group Shared Memory Declaration
2526//
2527// OpcodeToken0:
2528//
2529// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW
2530// [23:11] Ignored, 0
2531// [30:24] Instruction length in DWORDs including the opcode token.
2532// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2533// contains extended operand description. This dcl is currently not
2534// extended.
2535//
2536// OpcodeToken0 is followed by 2 operands:
2537// (1) an operand, starting with OperandToken0, defining which
2538// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is being declared.
2539// (2) a DWORD indicating the byte count, which must be a multiple of 4.
2540//
2541// ----------------------------------------------------------------------------
2542
2543// ----------------------------------------------------------------------------
2544// Structured Thread Group Shared Memory Declaration
2545//
2546// OpcodeToken0:
2547//
2548// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED
2549// [23:11] Ignored, 0
2550// [30:24] Instruction length in DWORDs including the opcode token.
2551// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2552// contains extended operand description. This dcl is currently not
2553// extended.
2554//
2555// OpcodeToken0 is followed by 3 operands:
2556// (1) an operand, starting with OperandToken0, defining which
2557// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is
2558// being declared.
2559// (2) a DWORD indicating UINT32 struct byte stride
2560// (3) a DWORD indicating UINT32 struct count
2561//
2562// ----------------------------------------------------------------------------
2563
2564// ----------------------------------------------------------------------------
2565// Raw Shader Resource View Declaration
2566//
2567// OpcodeToken0:
2568//
2569// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_RAW
2570// [23:11] Ignored, 0
2571// [30:24] Instruction length in DWORDs including the opcode token.
2572// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2573// contains extended operand description. This dcl is currently not
2574// extended.
2575//
2576// OpcodeToken0 is followed by 1 operand:
2577// (1) an operand, starting with OperandToken0, defining which
2578// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2579//
2580// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2581// (1) an operand, starting with OperandToken0, defining which
2582// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2583// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2584// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2585// 1 <id>: variable ID being declared
2586// 2 <lbound>: the lower bound of the range of resources in the space
2587// 3 <ubound>: the upper bound (inclusive) of this range
2588// As opposed to when the t# is used in shader instructions, where the register
2589// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2590// dimensions are as follows: (t<id>[<idx>]):
2591// 1 <id>: variable ID being used (matches dcl)
2592// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2593// (2) a DWORD indicating the space index.
2594//
2595// ----------------------------------------------------------------------------
2596
2597// ----------------------------------------------------------------------------
2598// Structured Shader Resource View Declaration
2599//
2600// OpcodeToken0:
2601//
2602// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED
2603// [23:11] Ignored, 0
2604// [30:24] Instruction length in DWORDs including the opcode token.
2605// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2606// contains extended operand description. This dcl is currently not
2607// extended.
2608//
2609// OpcodeToken0 is followed by 2 operands:
2610// (1) an operand, starting with OperandToken0, defining which
2611// g# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is
2612// being declared.
2613// (2) a DWORD indicating UINT32 struct byte stride
2614//
2615// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2616// (1) an operand, starting with OperandToken0, defining which
2617// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2618// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2619// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2620// 1 <id>: variable ID being declared
2621// 2 <lbound>: the lower bound of the range of resources in the space
2622// 3 <ubound>: the upper bound (inclusive) of this range
2623// As opposed to when the t# is used in shader instructions, where the register
2624// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2625// dimensions are as follows: (t<id>[<idx>]):
2626// 1 <id>: variable ID being used (matches dcl)
2627// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2628// (2) a DWORD indicating UINT32 struct byte stride
2629// (3) a DWORD indicating the space index.
2630//
2631// ----------------------------------------------------------------------------
2632
2633#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
2634#pragma endregion
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h
new file mode 100644
index 0000000..b942825
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h
@@ -0,0 +1,36890 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12PipelineState1_FWD_DEFINED__
140#define __ID3D12PipelineState1_FWD_DEFINED__
141typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
142
143#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
147#define __ID3D12DescriptorHeap_FWD_DEFINED__
148typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
149
150#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12QueryHeap_FWD_DEFINED__
154#define __ID3D12QueryHeap_FWD_DEFINED__
155typedef interface ID3D12QueryHeap ID3D12QueryHeap;
156
157#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandSignature_FWD_DEFINED__
161#define __ID3D12CommandSignature_FWD_DEFINED__
162typedef interface ID3D12CommandSignature ID3D12CommandSignature;
163
164#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12CommandList_FWD_DEFINED__
168#define __ID3D12CommandList_FWD_DEFINED__
169typedef interface ID3D12CommandList ID3D12CommandList;
170
171#endif /* __ID3D12CommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
177
178#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
184
185#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
189#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
190typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
191
192#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12CommandQueue_FWD_DEFINED__
196#define __ID3D12CommandQueue_FWD_DEFINED__
197typedef interface ID3D12CommandQueue ID3D12CommandQueue;
198
199#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
203#define __ID3D12CommandQueue1_FWD_DEFINED__
204typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
205
206#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12Device_FWD_DEFINED__
210#define __ID3D12Device_FWD_DEFINED__
211typedef interface ID3D12Device ID3D12Device;
212
213#endif /* __ID3D12Device_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
217#define __ID3D12PipelineLibrary_FWD_DEFINED__
218typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
219
220#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
224#define __ID3D12PipelineLibrary1_FWD_DEFINED__
225typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
226
227#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device1_FWD_DEFINED__
231#define __ID3D12Device1_FWD_DEFINED__
232typedef interface ID3D12Device1 ID3D12Device1;
233
234#endif /* __ID3D12Device1_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12Device2_FWD_DEFINED__
238#define __ID3D12Device2_FWD_DEFINED__
239typedef interface ID3D12Device2 ID3D12Device2;
240
241#endif /* __ID3D12Device2_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12Device3_FWD_DEFINED__
245#define __ID3D12Device3_FWD_DEFINED__
246typedef interface ID3D12Device3 ID3D12Device3;
247
248#endif /* __ID3D12Device3_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
252#define __ID3D12ProtectedSession_FWD_DEFINED__
253typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
254
255#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
259#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
260typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
261
262#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12Device4_FWD_DEFINED__
266#define __ID3D12Device4_FWD_DEFINED__
267typedef interface ID3D12Device4 ID3D12Device4;
268
269#endif /* __ID3D12Device4_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
273#define __ID3D12LifetimeOwner_FWD_DEFINED__
274typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
275
276#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
280#define __ID3D12SwapChainAssistant_FWD_DEFINED__
281typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
282
283#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
287#define __ID3D12LifetimeTracker_FWD_DEFINED__
288typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
289
290#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12StateObject_FWD_DEFINED__
294#define __ID3D12StateObject_FWD_DEFINED__
295typedef interface ID3D12StateObject ID3D12StateObject;
296
297#endif /* __ID3D12StateObject_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
301#define __ID3D12StateObjectProperties_FWD_DEFINED__
302typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
303
304#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
308#define __ID3D12StateObjectProperties1_FWD_DEFINED__
309typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
310
311#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
315#define __ID3D12StateObjectProperties2_FWD_DEFINED__
316typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
317
318#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
322#define __ID3D12WorkGraphProperties_FWD_DEFINED__
323typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
324
325#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12Device5_FWD_DEFINED__
329#define __ID3D12Device5_FWD_DEFINED__
330typedef interface ID3D12Device5 ID3D12Device5;
331
332#endif /* __ID3D12Device5_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
336#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
337typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
338
339#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
343#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
344typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
345
346#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
350#define __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
351typedef interface ID3D12DeviceRemovedExtendedDataSettings2 ID3D12DeviceRemovedExtendedDataSettings2;
352
353#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
357#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
358typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
359
360#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
364#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
365typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
366
367#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
371#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
372typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
373
374#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Device6_FWD_DEFINED__
378#define __ID3D12Device6_FWD_DEFINED__
379typedef interface ID3D12Device6 ID3D12Device6;
380
381#endif /* __ID3D12Device6_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
385#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
386typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
387
388#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12Device7_FWD_DEFINED__
392#define __ID3D12Device7_FWD_DEFINED__
393typedef interface ID3D12Device7 ID3D12Device7;
394
395#endif /* __ID3D12Device7_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12Device8_FWD_DEFINED__
399#define __ID3D12Device8_FWD_DEFINED__
400typedef interface ID3D12Device8 ID3D12Device8;
401
402#endif /* __ID3D12Device8_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12Resource1_FWD_DEFINED__
406#define __ID3D12Resource1_FWD_DEFINED__
407typedef interface ID3D12Resource1 ID3D12Resource1;
408
409#endif /* __ID3D12Resource1_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Resource2_FWD_DEFINED__
413#define __ID3D12Resource2_FWD_DEFINED__
414typedef interface ID3D12Resource2 ID3D12Resource2;
415
416#endif /* __ID3D12Resource2_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Heap1_FWD_DEFINED__
420#define __ID3D12Heap1_FWD_DEFINED__
421typedef interface ID3D12Heap1 ID3D12Heap1;
422
423#endif /* __ID3D12Heap1_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
427#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
428typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
429
430#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12MetaCommand_FWD_DEFINED__
434#define __ID3D12MetaCommand_FWD_DEFINED__
435typedef interface ID3D12MetaCommand ID3D12MetaCommand;
436
437#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
443
444#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
445
446
447#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
448#define __ID3D12ShaderCacheSession_FWD_DEFINED__
449typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
450
451#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
452
453
454#ifndef __ID3D12Device9_FWD_DEFINED__
455#define __ID3D12Device9_FWD_DEFINED__
456typedef interface ID3D12Device9 ID3D12Device9;
457
458#endif /* __ID3D12Device9_FWD_DEFINED__ */
459
460
461#ifndef __ID3D12Device10_FWD_DEFINED__
462#define __ID3D12Device10_FWD_DEFINED__
463typedef interface ID3D12Device10 ID3D12Device10;
464
465#endif /* __ID3D12Device10_FWD_DEFINED__ */
466
467
468#ifndef __ID3D12Device11_FWD_DEFINED__
469#define __ID3D12Device11_FWD_DEFINED__
470typedef interface ID3D12Device11 ID3D12Device11;
471
472#endif /* __ID3D12Device11_FWD_DEFINED__ */
473
474
475#ifndef __ID3D12Device12_FWD_DEFINED__
476#define __ID3D12Device12_FWD_DEFINED__
477typedef interface ID3D12Device12 ID3D12Device12;
478
479#endif /* __ID3D12Device12_FWD_DEFINED__ */
480
481
482#ifndef __ID3D12Device13_FWD_DEFINED__
483#define __ID3D12Device13_FWD_DEFINED__
484typedef interface ID3D12Device13 ID3D12Device13;
485
486#endif /* __ID3D12Device13_FWD_DEFINED__ */
487
488
489#ifndef __ID3D12Device14_FWD_DEFINED__
490#define __ID3D12Device14_FWD_DEFINED__
491typedef interface ID3D12Device14 ID3D12Device14;
492
493#endif /* __ID3D12Device14_FWD_DEFINED__ */
494
495
496#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
497#define __ID3D12StateObjectDatabase_FWD_DEFINED__
498typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
499
500#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
501
502
503#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
504#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
505typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
506
507#endif /* __ID3D12VirtualizationGuestDevice_FWD_DEFINED__ */
508
509
510#ifndef __ID3D12Tools_FWD_DEFINED__
511#define __ID3D12Tools_FWD_DEFINED__
512typedef interface ID3D12Tools ID3D12Tools;
513
514#endif /* __ID3D12Tools_FWD_DEFINED__ */
515
516
517#ifndef __ID3D12Tools1_FWD_DEFINED__
518#define __ID3D12Tools1_FWD_DEFINED__
519typedef interface ID3D12Tools1 ID3D12Tools1;
520
521#endif /* __ID3D12Tools1_FWD_DEFINED__ */
522
523
524#ifndef __ID3D12Tools2_FWD_DEFINED__
525#define __ID3D12Tools2_FWD_DEFINED__
526typedef interface ID3D12Tools2 ID3D12Tools2;
527
528#endif /* __ID3D12Tools2_FWD_DEFINED__ */
529
530
531#ifndef __ID3D12PageableTools_FWD_DEFINED__
532#define __ID3D12PageableTools_FWD_DEFINED__
533typedef interface ID3D12PageableTools ID3D12PageableTools;
534
535#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
536
537
538#ifndef __ID3D12DeviceTools_FWD_DEFINED__
539#define __ID3D12DeviceTools_FWD_DEFINED__
540typedef interface ID3D12DeviceTools ID3D12DeviceTools;
541
542#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
543
544
545#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
546#define __ID3D12DeviceTools1_FWD_DEFINED__
547typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
548
549#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
550
551
552#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
553#define __ID3D12SDKConfiguration_FWD_DEFINED__
554typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
555
556#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
557
558
559#ifndef __ID3D12SDKConfiguration1_FWD_DEFINED__
560#define __ID3D12SDKConfiguration1_FWD_DEFINED__
561typedef interface ID3D12SDKConfiguration1 ID3D12SDKConfiguration1;
562
563#endif /* __ID3D12SDKConfiguration1_FWD_DEFINED__ */
564
565
566#ifndef __ID3D12DeviceFactory_FWD_DEFINED__
567#define __ID3D12DeviceFactory_FWD_DEFINED__
568typedef interface ID3D12DeviceFactory ID3D12DeviceFactory;
569
570#endif /* __ID3D12DeviceFactory_FWD_DEFINED__ */
571
572
573#ifndef __ID3D12DeviceConfiguration_FWD_DEFINED__
574#define __ID3D12DeviceConfiguration_FWD_DEFINED__
575typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
576
577#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
578
579
580#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
581#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
582typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
583
584#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
585
586
587#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
588#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
589typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
590
591#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
592
593
594#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
595#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
596typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
597
598#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
599
600
601#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
602#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
603typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
604
605#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
606
607
608#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
609#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
610typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
611
612#endif /* __ID3D12GraphicsCommandList7_FWD_DEFINED__ */
613
614
615#ifndef __ID3D12GraphicsCommandList8_FWD_DEFINED__
616#define __ID3D12GraphicsCommandList8_FWD_DEFINED__
617typedef interface ID3D12GraphicsCommandList8 ID3D12GraphicsCommandList8;
618
619#endif /* __ID3D12GraphicsCommandList8_FWD_DEFINED__ */
620
621
622#ifndef __ID3D12GraphicsCommandList9_FWD_DEFINED__
623#define __ID3D12GraphicsCommandList9_FWD_DEFINED__
624typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
625
626#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
627
628
629#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
630#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
631typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
632
633#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
634
635
636#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
637#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
638typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
639
640#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
641
642
643#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
644#define __ID3D12GBVDiagnostics_FWD_DEFINED__
645typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
646
647#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
648
649
650/* header files for imported files */
651#include "oaidl.h"
652#include "ocidl.h"
653#include "dxgicommon.h"
654#include "dxgiformat.h"
655#include "d3dcommon.h"
656
657#ifdef __cplusplus
658extern "C"{
659#endif
660
661
662/* interface __MIDL_itf_d3d12_0000_0000 */
663/* [local] */
664
665#include <winapifamily.h>
666#pragma region App Family
667#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
668#ifndef _D3D12_CONSTANTS
669#define _D3D12_CONSTANTS
670#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
671
672#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
673
674#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
675
676#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
677
678#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
679
680#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
681
682#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
683
684#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
685
686#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
687
688#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
689
690#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
691
692#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
693
694#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
695
696#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
697
698#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
699
700#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
701
702#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
703
704#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
705
706#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
707
708#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
709
710#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
711
712#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
713
714#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
715
716#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
717
718#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
719
720#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
721
722#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
723
724#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
725
726#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
727
728#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
729
730#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
731
732#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
733
734#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
735
736#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
737
738#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
739
740#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
741
742#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
743
744#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
745
746#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
747
748#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
749
750#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
751
752#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
753
754#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
755
756#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
757
758#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
759
760#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
761
762#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
763
764#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
765
766#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
767
768#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
769
770#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
771
772#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
773
774#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
775
776#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
777
778#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
779
780#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
781
782#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
783
784#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
785
786#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
787
788#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
789
790#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
791
792#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
793
794#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
795
796#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
797
798#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
799
800#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
801
802#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
803
804#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
805
806#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
807
808#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
809
810#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
811
812#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
813
814#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
815
816#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
817
818#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
819
820#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
821
822#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
823
824#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
825
826#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
827
828#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
829
830#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
831
832#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
833
834#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
835
836#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
837
838#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
839
840#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
841
842#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
843
844#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
845
846#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
847
848#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
849
850#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
851
852#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
853
854#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
855
856#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
857
858#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
859
860#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
861
862#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
863
864#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
865
866#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
867
868#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
869
870#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
871
872#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
873
874#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
875#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
876#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
877#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
878#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
879#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
880
881#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
882#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
883
884#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
885#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
886
887#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
888
889#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
890
891#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
892
893#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
894
895#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
896
897#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
898
899#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
900
901#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
902#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
903
904#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
905
906#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
907
908#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
909
910#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
911
912#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
913#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
914#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
915
916#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
917
918#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
919
920#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
921
922#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
923
924#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
925
926#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
927
928#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
929
930#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
931
932#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
933
934#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
935
936#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
937
938#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
939
940#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
941
942#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
943
944#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
945
946#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
947
948#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
949
950#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
951
952#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
953
954#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
955
956#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
957
958#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
959
960#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
961
962#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
963
964#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
965
966#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
967
968#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
969
970#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
971
972#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
973
974#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
975#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
976#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
977#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
978#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
979#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
980#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
981#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
982#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
983#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
984#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
985#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
986#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
987#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
988
989#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
990
991#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
992
993#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
994
995#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
996
997#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
998
999#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1000
1001#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
1002
1003#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
1004
1005#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
1006
1007#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
1008
1009#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1010
1011#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
1012
1013#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
1014
1015#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
1016
1017#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
1018
1019#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
1020
1021#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
1022
1023#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
1024
1025#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1026
1027#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1028
1029#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
1030
1031#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
1032
1033#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
1034
1035#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
1036
1037#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1038
1039#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
1040
1041#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
1042
1043#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1044
1045#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1046
1047#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1048
1049#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
1050
1051#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1052
1053#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1054
1055#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1056
1057#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1058
1059#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
1060
1061#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1062
1063#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1064
1065#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
1066
1067#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1068
1069#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
1070
1071#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
1072
1073#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
1074
1075#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1076
1077#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
1078#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
1079#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
1080
1081#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
1082
1083#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1084
1085#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
1086
1087#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
1088
1089#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
1090
1091#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
1092
1093#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1094
1095#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
1096
1097#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
1098
1099#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
1100
1101#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
1102
1103#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1104
1105#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
1106
1107#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1108
1109#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
1110
1111#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
1112
1113#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
1114
1115#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
1116
1117#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
1118
1119#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
1120
1121#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
1122
1123#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
1124
1125#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
1126
1127#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
1128
1129#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
1130
1131#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
1132
1133#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
1134
1135#define D3D12_LINEAR_GAMMA ( 1.0f )
1136#define D3D12_MAJOR_VERSION ( 12 )
1137
1138#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
1139#define D3D12_MAX_DEPTH ( 1.0f )
1140#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
1141
1142#define D3D12_MAX_MAXANISOTROPY ( 16 )
1143
1144#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
1145
1146#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
1147#define D3D12_MAX_ROOT_COST ( 64 )
1148
1149#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
1150
1151#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
1152
1153#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
1154
1155#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
1156
1157#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
1158
1159#define D3D12_MINOR_VERSION ( 0 )
1160
1161#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
1162#define D3D12_MIN_DEPTH ( 0.0f )
1163#define D3D12_MIN_MAXANISOTROPY ( 0 )
1164
1165#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
1166#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
1167#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
1168
1169#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
1170
1171#define D3D12_MS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 4194303 )
1172
1173#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
1174#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
1175
1176#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1177
1178#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
1179
1180#define D3D12_PACKED_TILE ( 0xffffffff )
1181
1182#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
1183
1184#define D3D12_PREVIEW_SDK_VERSION ( 717 )
1185
1186#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1187
1188#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
1189
1190#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
1191
1192#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
1193
1194#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
1195
1196#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
1197
1198#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
1199
1200#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
1201
1202#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
1203
1204#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1205
1206#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1207
1208#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1209
1210#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1211
1212#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1213#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1214
1215#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1216
1217#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1218
1219#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1220
1221#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1222
1223#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1224
1225#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1226
1227#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1228
1229#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1230
1231#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1232#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1233
1234#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1235
1236#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1237
1238#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1239
1240#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1241
1242#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1243
1244#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1245
1246#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1247
1248#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1249
1250#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1251
1252#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1253
1254#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
1255
1256#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
1257
1258#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1259
1260#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1261
1262#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1263
1264#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1265
1266#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1267
1268#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1269
1270#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1271
1272#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1273
1274#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1275
1276#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1277
1278#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1279
1280#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1281
1282#define D3D12_REQ_MAXANISOTROPY ( 16 )
1283
1284#define D3D12_REQ_MIP_LEVELS ( 15 )
1285
1286#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1287
1288#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1289
1290#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1291
1292#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1293
1294#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1295#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1296
1297#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1298
1299#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1300
1301#define D3D12_REQ_SUBRESOURCES ( 30720 )
1302
1303#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1304
1305#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1306
1307#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1308
1309#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1310
1311#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1312
1313#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1314
1315#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1316
1317#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1318
1319#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1320
1321#define D3D12_SDK_VERSION ( 618 )
1322
1323#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1324
1325#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1326
1327#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1328
1329#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1330
1331#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1332
1333#define D3D12_SHADER_MAX_TYPES ( 65535 )
1334
1335#define D3D12_SHADER_MINOR_VERSION ( 1 )
1336
1337#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1338
1339#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1340
1341#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1342
1343#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1344
1345#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1346
1347#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1348
1349#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1350
1351#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1352
1353#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1354
1355#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1356
1357#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1358
1359#define D3D12_SO_STREAM_COUNT ( 4 )
1360
1361#define D3D12_SPEC_DATE_DAY ( 14 )
1362
1363#define D3D12_SPEC_DATE_MONTH ( 11 )
1364
1365#define D3D12_SPEC_DATE_YEAR ( 2014 )
1366
1367#define D3D12_SPEC_VERSION ( 1.16 )
1368#define D3D12_SRGB_GAMMA ( 2.2f )
1369#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1370#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1371#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1372#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1373#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1374#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1375#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1376
1377#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1378
1379#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1380
1381#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1382
1383#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1384
1385#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1386
1387#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1388
1389#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1390
1391#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1392
1393#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1394
1395#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1396
1397#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1398
1399#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1400
1401#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1402
1403#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1404
1405#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1406
1407#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1408
1409#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1410
1411#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1412
1413#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1414
1415#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1416
1417#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1418
1419#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
1420
1421#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
1422
1423#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1424
1425#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1426
1427#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1428
1429#define D3D12_UAV_SLOT_COUNT ( 64 )
1430
1431#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1432
1433#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1434
1435#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1436
1437#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1438
1439#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1440
1441#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1442
1443#define D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX ( 0xff )
1444
1445#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS ( 64 )
1446
1447#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS ( 64 )
1448
1449#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN ( 9 )
1450
1451#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM ( 8 )
1452
1453#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1454
1455#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1456
1457#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1458
1459#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1460
1461#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1462
1463#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1464
1465#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1466
1467#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1468
1469#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1470
1471#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1472
1473#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1474
1475#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1476
1477#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1478
1479#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1480
1481#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1482
1483#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1484
1485#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1486
1487#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
1488
1489#define D3D12_WORK_GRAPHS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 16777215 )
1490
1491#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
1492
1493#endif
1494
1495typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1496
1497typedef
1498enum D3D12_COMMAND_LIST_TYPE
1499 {
1500 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1501 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1502 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1503 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1504 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1505 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1506 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
1507 D3D12_COMMAND_LIST_TYPE_NONE = -1
1508 } D3D12_COMMAND_LIST_TYPE;
1509
1510typedef
1511enum D3D12_COMMAND_QUEUE_FLAGS
1512 {
1513 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1514 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
1515 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
1516 } D3D12_COMMAND_QUEUE_FLAGS;
1517
1518DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
1519typedef
1520enum D3D12_COMMAND_QUEUE_PRIORITY
1521 {
1522 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1523 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1524 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1525 } D3D12_COMMAND_QUEUE_PRIORITY;
1526
1527typedef struct D3D12_COMMAND_QUEUE_DESC
1528 {
1529 D3D12_COMMAND_LIST_TYPE Type;
1530 INT Priority;
1531 D3D12_COMMAND_QUEUE_FLAGS Flags;
1532 UINT NodeMask;
1533 } D3D12_COMMAND_QUEUE_DESC;
1534
1535typedef
1536enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1537 {
1538 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1539 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1540 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1541 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1542 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1543 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1544
1545typedef
1546enum D3D12_INPUT_CLASSIFICATION
1547 {
1548 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1549 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1550 } D3D12_INPUT_CLASSIFICATION;
1551
1552typedef struct D3D12_INPUT_ELEMENT_DESC
1553 {
1554 LPCSTR SemanticName;
1555 UINT SemanticIndex;
1556 DXGI_FORMAT Format;
1557 UINT InputSlot;
1558 UINT AlignedByteOffset;
1559 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1560 UINT InstanceDataStepRate;
1561 } D3D12_INPUT_ELEMENT_DESC;
1562
1563typedef
1564enum D3D12_FILL_MODE
1565 {
1566 D3D12_FILL_MODE_WIREFRAME = 2,
1567 D3D12_FILL_MODE_SOLID = 3
1568 } D3D12_FILL_MODE;
1569
1570typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1571
1572typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1573
1574typedef
1575enum D3D12_CULL_MODE
1576 {
1577 D3D12_CULL_MODE_NONE = 1,
1578 D3D12_CULL_MODE_FRONT = 2,
1579 D3D12_CULL_MODE_BACK = 3
1580 } D3D12_CULL_MODE;
1581
1582typedef struct D3D12_SO_DECLARATION_ENTRY
1583 {
1584 UINT Stream;
1585 LPCSTR SemanticName;
1586 UINT SemanticIndex;
1587 BYTE StartComponent;
1588 BYTE ComponentCount;
1589 BYTE OutputSlot;
1590 } D3D12_SO_DECLARATION_ENTRY;
1591
1592typedef struct D3D12_VIEWPORT
1593 {
1594 FLOAT TopLeftX;
1595 FLOAT TopLeftY;
1596 FLOAT Width;
1597 FLOAT Height;
1598 FLOAT MinDepth;
1599 FLOAT MaxDepth;
1600 } D3D12_VIEWPORT;
1601
1602typedef RECT D3D12_RECT;
1603
1604typedef struct D3D12_BOX
1605 {
1606 UINT left;
1607 UINT top;
1608 UINT front;
1609 UINT right;
1610 UINT bottom;
1611 UINT back;
1612 } D3D12_BOX;
1613
1614#ifdef __midl
1615#ifndef LUID_DEFINED
1616#define LUID_DEFINED 1
1617typedef struct __LUID
1618 {
1619 DWORD LowPart;
1620 LONG HighPart;
1621 } LUID;
1622
1623typedef struct __LUID *PLUID;
1624
1625#endif
1626#endif
1627typedef
1628enum D3D12_COMPARISON_FUNC
1629 {
1630 D3D12_COMPARISON_FUNC_NONE = 0,
1631 D3D12_COMPARISON_FUNC_NEVER = 1,
1632 D3D12_COMPARISON_FUNC_LESS = 2,
1633 D3D12_COMPARISON_FUNC_EQUAL = 3,
1634 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1635 D3D12_COMPARISON_FUNC_GREATER = 5,
1636 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1637 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1638 D3D12_COMPARISON_FUNC_ALWAYS = 8
1639 } D3D12_COMPARISON_FUNC;
1640
1641typedef
1642enum D3D12_DEPTH_WRITE_MASK
1643 {
1644 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1645 D3D12_DEPTH_WRITE_MASK_ALL = 1
1646 } D3D12_DEPTH_WRITE_MASK;
1647
1648typedef
1649enum D3D12_STENCIL_OP
1650 {
1651 D3D12_STENCIL_OP_KEEP = 1,
1652 D3D12_STENCIL_OP_ZERO = 2,
1653 D3D12_STENCIL_OP_REPLACE = 3,
1654 D3D12_STENCIL_OP_INCR_SAT = 4,
1655 D3D12_STENCIL_OP_DECR_SAT = 5,
1656 D3D12_STENCIL_OP_INVERT = 6,
1657 D3D12_STENCIL_OP_INCR = 7,
1658 D3D12_STENCIL_OP_DECR = 8
1659 } D3D12_STENCIL_OP;
1660
1661typedef struct D3D12_DEPTH_STENCILOP_DESC
1662 {
1663 D3D12_STENCIL_OP StencilFailOp;
1664 D3D12_STENCIL_OP StencilDepthFailOp;
1665 D3D12_STENCIL_OP StencilPassOp;
1666 D3D12_COMPARISON_FUNC StencilFunc;
1667 } D3D12_DEPTH_STENCILOP_DESC;
1668
1669typedef struct D3D12_DEPTH_STENCIL_DESC
1670 {
1671 BOOL DepthEnable;
1672 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1673 D3D12_COMPARISON_FUNC DepthFunc;
1674 BOOL StencilEnable;
1675 UINT8 StencilReadMask;
1676 UINT8 StencilWriteMask;
1677 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1678 D3D12_DEPTH_STENCILOP_DESC BackFace;
1679 } D3D12_DEPTH_STENCIL_DESC;
1680
1681typedef struct D3D12_DEPTH_STENCIL_DESC1
1682 {
1683 BOOL DepthEnable;
1684 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1685 D3D12_COMPARISON_FUNC DepthFunc;
1686 BOOL StencilEnable;
1687 UINT8 StencilReadMask;
1688 UINT8 StencilWriteMask;
1689 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1690 D3D12_DEPTH_STENCILOP_DESC BackFace;
1691 BOOL DepthBoundsTestEnable;
1692 } D3D12_DEPTH_STENCIL_DESC1;
1693
1694typedef struct D3D12_DEPTH_STENCILOP_DESC1
1695 {
1696 D3D12_STENCIL_OP StencilFailOp;
1697 D3D12_STENCIL_OP StencilDepthFailOp;
1698 D3D12_STENCIL_OP StencilPassOp;
1699 D3D12_COMPARISON_FUNC StencilFunc;
1700 UINT8 StencilReadMask;
1701 UINT8 StencilWriteMask;
1702 } D3D12_DEPTH_STENCILOP_DESC1;
1703
1704typedef struct D3D12_DEPTH_STENCIL_DESC2
1705 {
1706 BOOL DepthEnable;
1707 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1708 D3D12_COMPARISON_FUNC DepthFunc;
1709 BOOL StencilEnable;
1710 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
1711 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
1712 BOOL DepthBoundsTestEnable;
1713 } D3D12_DEPTH_STENCIL_DESC2;
1714
1715typedef
1716enum D3D12_BLEND
1717 {
1718 D3D12_BLEND_ZERO = 1,
1719 D3D12_BLEND_ONE = 2,
1720 D3D12_BLEND_SRC_COLOR = 3,
1721 D3D12_BLEND_INV_SRC_COLOR = 4,
1722 D3D12_BLEND_SRC_ALPHA = 5,
1723 D3D12_BLEND_INV_SRC_ALPHA = 6,
1724 D3D12_BLEND_DEST_ALPHA = 7,
1725 D3D12_BLEND_INV_DEST_ALPHA = 8,
1726 D3D12_BLEND_DEST_COLOR = 9,
1727 D3D12_BLEND_INV_DEST_COLOR = 10,
1728 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1729 D3D12_BLEND_BLEND_FACTOR = 14,
1730 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1731 D3D12_BLEND_SRC1_COLOR = 16,
1732 D3D12_BLEND_INV_SRC1_COLOR = 17,
1733 D3D12_BLEND_SRC1_ALPHA = 18,
1734 D3D12_BLEND_INV_SRC1_ALPHA = 19,
1735 D3D12_BLEND_ALPHA_FACTOR = 20,
1736 D3D12_BLEND_INV_ALPHA_FACTOR = 21
1737 } D3D12_BLEND;
1738
1739typedef
1740enum D3D12_BLEND_OP
1741 {
1742 D3D12_BLEND_OP_ADD = 1,
1743 D3D12_BLEND_OP_SUBTRACT = 2,
1744 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1745 D3D12_BLEND_OP_MIN = 4,
1746 D3D12_BLEND_OP_MAX = 5
1747 } D3D12_BLEND_OP;
1748
1749typedef
1750enum D3D12_COLOR_WRITE_ENABLE
1751 {
1752 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1753 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1754 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1755 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1756 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 )
1757 } D3D12_COLOR_WRITE_ENABLE;
1758
1759typedef
1760enum D3D12_LOGIC_OP
1761 {
1762 D3D12_LOGIC_OP_CLEAR = 0,
1763 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1764 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1765 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1766 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1767 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1768 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1769 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1770 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1771 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1772 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1773 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1774 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1775 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1776 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1777 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1778 } D3D12_LOGIC_OP;
1779
1780typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1781 {
1782 BOOL BlendEnable;
1783 BOOL LogicOpEnable;
1784 D3D12_BLEND SrcBlend;
1785 D3D12_BLEND DestBlend;
1786 D3D12_BLEND_OP BlendOp;
1787 D3D12_BLEND SrcBlendAlpha;
1788 D3D12_BLEND DestBlendAlpha;
1789 D3D12_BLEND_OP BlendOpAlpha;
1790 D3D12_LOGIC_OP LogicOp;
1791 UINT8 RenderTargetWriteMask;
1792 } D3D12_RENDER_TARGET_BLEND_DESC;
1793
1794typedef struct D3D12_BLEND_DESC
1795 {
1796 BOOL AlphaToCoverageEnable;
1797 BOOL IndependentBlendEnable;
1798 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1799 } D3D12_BLEND_DESC;
1800
1801/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1802 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1803typedef
1804enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1805 {
1806 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1807 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1808 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1809
1810typedef struct D3D12_RASTERIZER_DESC
1811 {
1812 D3D12_FILL_MODE FillMode;
1813 D3D12_CULL_MODE CullMode;
1814 BOOL FrontCounterClockwise;
1815 INT DepthBias;
1816 FLOAT DepthBiasClamp;
1817 FLOAT SlopeScaledDepthBias;
1818 BOOL DepthClipEnable;
1819 BOOL MultisampleEnable;
1820 BOOL AntialiasedLineEnable;
1821 UINT ForcedSampleCount;
1822 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1823 } D3D12_RASTERIZER_DESC;
1824
1825typedef struct D3D12_RASTERIZER_DESC1
1826 {
1827 D3D12_FILL_MODE FillMode;
1828 D3D12_CULL_MODE CullMode;
1829 BOOL FrontCounterClockwise;
1830 FLOAT DepthBias;
1831 FLOAT DepthBiasClamp;
1832 FLOAT SlopeScaledDepthBias;
1833 BOOL DepthClipEnable;
1834 BOOL MultisampleEnable;
1835 BOOL AntialiasedLineEnable;
1836 UINT ForcedSampleCount;
1837 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1838 } D3D12_RASTERIZER_DESC1;
1839
1840typedef
1841enum D3D12_LINE_RASTERIZATION_MODE
1842 {
1843 D3D12_LINE_RASTERIZATION_MODE_ALIASED = 0,
1844 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED = ( D3D12_LINE_RASTERIZATION_MODE_ALIASED + 1 ) ,
1845 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE = ( D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED + 1 ) ,
1846 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW = ( D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE + 1 )
1847 } D3D12_LINE_RASTERIZATION_MODE;
1848
1849typedef struct D3D12_RASTERIZER_DESC2
1850 {
1851 D3D12_FILL_MODE FillMode;
1852 D3D12_CULL_MODE CullMode;
1853 BOOL FrontCounterClockwise;
1854 FLOAT DepthBias;
1855 FLOAT DepthBiasClamp;
1856 FLOAT SlopeScaledDepthBias;
1857 BOOL DepthClipEnable;
1858 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
1859 UINT ForcedSampleCount;
1860 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1861 } D3D12_RASTERIZER_DESC2;
1862
1863
1864
1865extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1866extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1867
1868#ifndef __ID3D12Object_INTERFACE_DEFINED__
1869#define __ID3D12Object_INTERFACE_DEFINED__
1870
1871/* interface ID3D12Object */
1872/* [unique][local][object][uuid] */
1873
1874
1875EXTERN_C const IID IID_ID3D12Object;
1876
1877#if defined(__cplusplus) && !defined(CINTERFACE)
1878
1879 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1880 ID3D12Object : public IUnknown
1881 {
1882 public:
1883 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1884 _In_ REFGUID guid,
1885 _Inout_ UINT *pDataSize,
1886 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1887
1888 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1889 _In_ REFGUID guid,
1890 _In_ UINT DataSize,
1891 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1892
1893 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1894 _In_ REFGUID guid,
1895 _In_opt_ const IUnknown *pData) = 0;
1896
1897 virtual HRESULT STDMETHODCALLTYPE SetName(
1898 _In_z_ LPCWSTR Name) = 0;
1899
1900 };
1901
1902
1903#else /* C style interface */
1904
1905 typedef struct ID3D12ObjectVtbl
1906 {
1907 BEGIN_INTERFACE
1908
1909 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1910 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1911 ID3D12Object * This,
1912 REFIID riid,
1913 _COM_Outptr_ void **ppvObject);
1914
1915 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1916 ULONG ( STDMETHODCALLTYPE *AddRef )(
1917 ID3D12Object * This);
1918
1919 DECLSPEC_XFGVIRT(IUnknown, Release)
1920 ULONG ( STDMETHODCALLTYPE *Release )(
1921 ID3D12Object * This);
1922
1923 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1924 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1925 ID3D12Object * This,
1926 _In_ REFGUID guid,
1927 _Inout_ UINT *pDataSize,
1928 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1929
1930 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1931 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1932 ID3D12Object * This,
1933 _In_ REFGUID guid,
1934 _In_ UINT DataSize,
1935 _In_reads_bytes_opt_( DataSize ) const void *pData);
1936
1937 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1938 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1939 ID3D12Object * This,
1940 _In_ REFGUID guid,
1941 _In_opt_ const IUnknown *pData);
1942
1943 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1944 HRESULT ( STDMETHODCALLTYPE *SetName )(
1945 ID3D12Object * This,
1946 _In_z_ LPCWSTR Name);
1947
1948 END_INTERFACE
1949 } ID3D12ObjectVtbl;
1950
1951 interface ID3D12Object
1952 {
1953 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1954 };
1955
1956
1957
1958#ifdef COBJMACROS
1959
1960
1961#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1962 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1963
1964#define ID3D12Object_AddRef(This) \
1965 ( (This)->lpVtbl -> AddRef(This) )
1966
1967#define ID3D12Object_Release(This) \
1968 ( (This)->lpVtbl -> Release(This) )
1969
1970
1971#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1972 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1973
1974#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1975 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1976
1977#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1978 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1979
1980#define ID3D12Object_SetName(This,Name) \
1981 ( (This)->lpVtbl -> SetName(This,Name) )
1982
1983#endif /* COBJMACROS */
1984
1985
1986#endif /* C style interface */
1987
1988
1989
1990
1991#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1992
1993
1994#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1995#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1996
1997/* interface ID3D12DeviceChild */
1998/* [unique][local][object][uuid] */
1999
2000
2001EXTERN_C const IID IID_ID3D12DeviceChild;
2002
2003#if defined(__cplusplus) && !defined(CINTERFACE)
2004
2005 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
2006 ID3D12DeviceChild : public ID3D12Object
2007 {
2008 public:
2009 virtual HRESULT STDMETHODCALLTYPE GetDevice(
2010 REFIID riid,
2011 _COM_Outptr_opt_ void **ppvDevice) = 0;
2012
2013 };
2014
2015
2016#else /* C style interface */
2017
2018 typedef struct ID3D12DeviceChildVtbl
2019 {
2020 BEGIN_INTERFACE
2021
2022 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2023 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2024 ID3D12DeviceChild * This,
2025 REFIID riid,
2026 _COM_Outptr_ void **ppvObject);
2027
2028 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2029 ULONG ( STDMETHODCALLTYPE *AddRef )(
2030 ID3D12DeviceChild * This);
2031
2032 DECLSPEC_XFGVIRT(IUnknown, Release)
2033 ULONG ( STDMETHODCALLTYPE *Release )(
2034 ID3D12DeviceChild * This);
2035
2036 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2037 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2038 ID3D12DeviceChild * This,
2039 _In_ REFGUID guid,
2040 _Inout_ UINT *pDataSize,
2041 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2042
2043 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2044 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2045 ID3D12DeviceChild * This,
2046 _In_ REFGUID guid,
2047 _In_ UINT DataSize,
2048 _In_reads_bytes_opt_( DataSize ) const void *pData);
2049
2050 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2051 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2052 ID3D12DeviceChild * This,
2053 _In_ REFGUID guid,
2054 _In_opt_ const IUnknown *pData);
2055
2056 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2057 HRESULT ( STDMETHODCALLTYPE *SetName )(
2058 ID3D12DeviceChild * This,
2059 _In_z_ LPCWSTR Name);
2060
2061 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2062 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2063 ID3D12DeviceChild * This,
2064 REFIID riid,
2065 _COM_Outptr_opt_ void **ppvDevice);
2066
2067 END_INTERFACE
2068 } ID3D12DeviceChildVtbl;
2069
2070 interface ID3D12DeviceChild
2071 {
2072 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
2073 };
2074
2075
2076
2077#ifdef COBJMACROS
2078
2079
2080#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
2081 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2082
2083#define ID3D12DeviceChild_AddRef(This) \
2084 ( (This)->lpVtbl -> AddRef(This) )
2085
2086#define ID3D12DeviceChild_Release(This) \
2087 ( (This)->lpVtbl -> Release(This) )
2088
2089
2090#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
2091 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2092
2093#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
2094 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2095
2096#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
2097 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2098
2099#define ID3D12DeviceChild_SetName(This,Name) \
2100 ( (This)->lpVtbl -> SetName(This,Name) )
2101
2102
2103#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
2104 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2105
2106#endif /* COBJMACROS */
2107
2108
2109#endif /* C style interface */
2110
2111
2112
2113
2114#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
2115
2116
2117#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
2118#define __ID3D12RootSignature_INTERFACE_DEFINED__
2119
2120/* interface ID3D12RootSignature */
2121/* [unique][local][object][uuid] */
2122
2123
2124EXTERN_C const IID IID_ID3D12RootSignature;
2125
2126#if defined(__cplusplus) && !defined(CINTERFACE)
2127
2128 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
2129 ID3D12RootSignature : public ID3D12DeviceChild
2130 {
2131 public:
2132 };
2133
2134
2135#else /* C style interface */
2136
2137 typedef struct ID3D12RootSignatureVtbl
2138 {
2139 BEGIN_INTERFACE
2140
2141 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2142 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2143 ID3D12RootSignature * This,
2144 REFIID riid,
2145 _COM_Outptr_ void **ppvObject);
2146
2147 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2148 ULONG ( STDMETHODCALLTYPE *AddRef )(
2149 ID3D12RootSignature * This);
2150
2151 DECLSPEC_XFGVIRT(IUnknown, Release)
2152 ULONG ( STDMETHODCALLTYPE *Release )(
2153 ID3D12RootSignature * This);
2154
2155 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2156 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2157 ID3D12RootSignature * This,
2158 _In_ REFGUID guid,
2159 _Inout_ UINT *pDataSize,
2160 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2161
2162 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2163 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2164 ID3D12RootSignature * This,
2165 _In_ REFGUID guid,
2166 _In_ UINT DataSize,
2167 _In_reads_bytes_opt_( DataSize ) const void *pData);
2168
2169 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2170 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2171 ID3D12RootSignature * This,
2172 _In_ REFGUID guid,
2173 _In_opt_ const IUnknown *pData);
2174
2175 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2176 HRESULT ( STDMETHODCALLTYPE *SetName )(
2177 ID3D12RootSignature * This,
2178 _In_z_ LPCWSTR Name);
2179
2180 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2181 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2182 ID3D12RootSignature * This,
2183 REFIID riid,
2184 _COM_Outptr_opt_ void **ppvDevice);
2185
2186 END_INTERFACE
2187 } ID3D12RootSignatureVtbl;
2188
2189 interface ID3D12RootSignature
2190 {
2191 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
2192 };
2193
2194
2195
2196#ifdef COBJMACROS
2197
2198
2199#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
2200 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2201
2202#define ID3D12RootSignature_AddRef(This) \
2203 ( (This)->lpVtbl -> AddRef(This) )
2204
2205#define ID3D12RootSignature_Release(This) \
2206 ( (This)->lpVtbl -> Release(This) )
2207
2208
2209#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
2210 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2211
2212#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
2213 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2214
2215#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
2216 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2217
2218#define ID3D12RootSignature_SetName(This,Name) \
2219 ( (This)->lpVtbl -> SetName(This,Name) )
2220
2221
2222#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
2223 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2224
2225
2226#endif /* COBJMACROS */
2227
2228
2229#endif /* C style interface */
2230
2231
2232
2233
2234#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
2235
2236
2237/* interface __MIDL_itf_d3d12_0000_0001 */
2238/* [local] */
2239
2240typedef struct D3D12_SHADER_BYTECODE
2241 {
2242 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
2243 SIZE_T BytecodeLength;
2244 } D3D12_SHADER_BYTECODE;
2245
2246typedef struct D3D12_STREAM_OUTPUT_DESC
2247 {
2248 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
2249 UINT NumEntries;
2250 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
2251 UINT NumStrides;
2252 UINT RasterizedStream;
2253 } D3D12_STREAM_OUTPUT_DESC;
2254
2255typedef struct D3D12_INPUT_LAYOUT_DESC
2256 {
2257 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
2258 UINT NumElements;
2259 } D3D12_INPUT_LAYOUT_DESC;
2260
2261typedef
2262enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
2263 {
2264 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
2265 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
2266 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
2267 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
2268
2269typedef
2270enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
2271 {
2272 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
2273 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
2274 } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
2275
2276typedef struct D3D12_CACHED_PIPELINE_STATE
2277 {
2278 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
2279 SIZE_T CachedBlobSizeInBytes;
2280 } D3D12_CACHED_PIPELINE_STATE;
2281
2282typedef
2283enum D3D12_PIPELINE_STATE_FLAGS
2284 {
2285 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
2286 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
2287 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
2288 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
2289 } D3D12_PIPELINE_STATE_FLAGS;
2290
2291DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
2292typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
2293 {
2294 ID3D12RootSignature *pRootSignature;
2295 D3D12_SHADER_BYTECODE VS;
2296 D3D12_SHADER_BYTECODE PS;
2297 D3D12_SHADER_BYTECODE DS;
2298 D3D12_SHADER_BYTECODE HS;
2299 D3D12_SHADER_BYTECODE GS;
2300 D3D12_STREAM_OUTPUT_DESC StreamOutput;
2301 D3D12_BLEND_DESC BlendState;
2302 UINT SampleMask;
2303 D3D12_RASTERIZER_DESC RasterizerState;
2304 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2305 D3D12_INPUT_LAYOUT_DESC InputLayout;
2306 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
2307 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2308 UINT NumRenderTargets;
2309 DXGI_FORMAT RTVFormats[ 8 ];
2310 DXGI_FORMAT DSVFormat;
2311 DXGI_SAMPLE_DESC SampleDesc;
2312 UINT NodeMask;
2313 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2314 D3D12_PIPELINE_STATE_FLAGS Flags;
2315 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
2316
2317typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2318 {
2319 ID3D12RootSignature *pRootSignature;
2320 D3D12_SHADER_BYTECODE CS;
2321 UINT NodeMask;
2322 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2323 D3D12_PIPELINE_STATE_FLAGS Flags;
2324 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2325
2326typedef
2327enum D3D_ROOT_SIGNATURE_VERSION
2328 {
2329 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2330 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2331 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2332 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
2333 } D3D_ROOT_SIGNATURE_VERSION;
2334
2335typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2336 {
2337 _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
2338 SIZE_T SerializedBlobSizeInBytes;
2339 } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
2340
2341typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
2342 {
2343 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2344 } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
2345
2346typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
2347 {
2348 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2349 } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
2350
2351struct D3D12_RT_FORMAT_ARRAY
2352 {
2353 DXGI_FORMAT RTFormats[ 8 ];
2354 UINT NumRenderTargets;
2355 } ;
2356typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2357 {
2358 _In_ SIZE_T SizeInBytes;
2359 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2360 } D3D12_PIPELINE_STATE_STREAM_DESC;
2361
2362typedef
2363enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2364 {
2365 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2366 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2367 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2368 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2369 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2370 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2371 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2372 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2373 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2374 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2375 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2376 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2377 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2378 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2379 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2380 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2381 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2382 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2383 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2384 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2385 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2386 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2387 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2388 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2389 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2390 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
2391 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
2392 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
2393 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
2394 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
2395 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2396
2397typedef
2398enum D3D12_FEATURE
2399 {
2400 D3D12_FEATURE_D3D12_OPTIONS = 0,
2401 D3D12_FEATURE_ARCHITECTURE = 1,
2402 D3D12_FEATURE_FEATURE_LEVELS = 2,
2403 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2404 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2405 D3D12_FEATURE_FORMAT_INFO = 5,
2406 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2407 D3D12_FEATURE_SHADER_MODEL = 7,
2408 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2409 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2410 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2411 D3D12_FEATURE_ARCHITECTURE1 = 16,
2412 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2413 D3D12_FEATURE_SHADER_CACHE = 19,
2414 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2415 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2416 D3D12_FEATURE_EXISTING_HEAPS = 22,
2417 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2418 D3D12_FEATURE_SERIALIZATION = 24,
2419 D3D12_FEATURE_CROSS_NODE = 25,
2420 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2421 D3D12_FEATURE_DISPLAYABLE = 28,
2422 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2423 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2424 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2425 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2426 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2427 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2428 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2429 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2430 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
2431 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
2432 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
2433 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
2434 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
2435 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
2436 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
2437 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
2438 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
2439 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
2440 D3D12_FEATURE_PREDICATION = 50,
2441 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
2442 D3D12_FEATURE_HARDWARE_COPY = 52,
2443 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
2444 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
2445 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
2446 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
2447 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
2448 } D3D12_FEATURE;
2449
2450typedef
2451enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2452 {
2453 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2454 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2455 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2456 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2457
2458DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
2459typedef
2460enum D3D12_TILED_RESOURCES_TIER
2461 {
2462 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2463 D3D12_TILED_RESOURCES_TIER_1 = 1,
2464 D3D12_TILED_RESOURCES_TIER_2 = 2,
2465 D3D12_TILED_RESOURCES_TIER_3 = 3,
2466 D3D12_TILED_RESOURCES_TIER_4 = 4
2467 } D3D12_TILED_RESOURCES_TIER;
2468
2469typedef
2470enum D3D12_RESOURCE_BINDING_TIER
2471 {
2472 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2473 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2474 D3D12_RESOURCE_BINDING_TIER_3 = 3
2475 } D3D12_RESOURCE_BINDING_TIER;
2476
2477typedef
2478enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2479 {
2480 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2481 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2482 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2483 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2484 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2485
2486typedef
2487enum D3D12_FORMAT_SUPPORT1
2488 {
2489 D3D12_FORMAT_SUPPORT1_NONE = 0,
2490 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2491 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2492 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2493 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2494 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2495 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2496 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2497 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2498 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2499 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2500 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2501 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2502 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2503 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2504 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2505 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2506 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2507 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2508 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2509 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2510 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2511 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2512 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2513 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2514 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2515 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2516 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2517 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2518 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2519 } D3D12_FORMAT_SUPPORT1;
2520
2521DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
2522typedef
2523enum D3D12_FORMAT_SUPPORT2
2524 {
2525 D3D12_FORMAT_SUPPORT2_NONE = 0,
2526 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2527 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2528 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2529 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2530 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2531 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2532 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2533 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2534 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2535 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2536 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2537 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
2538 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
2539 } D3D12_FORMAT_SUPPORT2;
2540
2541DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
2542typedef
2543enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2544 {
2545 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2546 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2547 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2548
2549DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
2550typedef
2551enum D3D12_CROSS_NODE_SHARING_TIER
2552 {
2553 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2554 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2555 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2556 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2557 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2558 } D3D12_CROSS_NODE_SHARING_TIER;
2559
2560typedef
2561enum D3D12_RESOURCE_HEAP_TIER
2562 {
2563 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2564 D3D12_RESOURCE_HEAP_TIER_2 = 2
2565 } D3D12_RESOURCE_HEAP_TIER;
2566
2567typedef
2568enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2569 {
2570 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2571 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2572 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2573 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2574
2575typedef
2576enum D3D12_VIEW_INSTANCING_TIER
2577 {
2578 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2579 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2580 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2581 D3D12_VIEW_INSTANCING_TIER_3 = 3
2582 } D3D12_VIEW_INSTANCING_TIER;
2583
2584typedef
2585enum D3D12_WORK_GRAPHS_TIER
2586 {
2587 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
2588 D3D12_WORK_GRAPHS_TIER_1_0 = 10
2589 } D3D12_WORK_GRAPHS_TIER;
2590
2591typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2592 {
2593 _Out_ BOOL DoublePrecisionFloatShaderOps;
2594 _Out_ BOOL OutputMergerLogicOp;
2595 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2596 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2597 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2598 _Out_ BOOL PSSpecifiedStencilRefSupported;
2599 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2600 _Out_ BOOL ROVsSupported;
2601 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2602 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2603 _Out_ BOOL StandardSwizzle64KBSupported;
2604 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2605 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2606 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2607 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2608 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2609
2610typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2611 {
2612 _Out_ BOOL WaveOps;
2613 _Out_ UINT WaveLaneCountMin;
2614 _Out_ UINT WaveLaneCountMax;
2615 _Out_ UINT TotalLaneCount;
2616 _Out_ BOOL ExpandedComputeResourceStates;
2617 _Out_ BOOL Int64ShaderOps;
2618 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2619
2620typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2621 {
2622 _Out_ BOOL DepthBoundsTestSupported;
2623 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2624 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2625
2626typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2627 {
2628 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2629 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2630
2631typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2632 {
2633 _In_ UINT NodeIndex;
2634 _Out_ BOOL TileBasedRenderer;
2635 _Out_ BOOL UMA;
2636 _Out_ BOOL CacheCoherentUMA;
2637 } D3D12_FEATURE_DATA_ARCHITECTURE;
2638
2639typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2640 {
2641 _In_ UINT NodeIndex;
2642 _Out_ BOOL TileBasedRenderer;
2643 _Out_ BOOL UMA;
2644 _Out_ BOOL CacheCoherentUMA;
2645 _Out_ BOOL IsolatedMMU;
2646 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2647
2648typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2649 {
2650 _In_ UINT NumFeatureLevels;
2651 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2652 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2653 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2654
2655typedef
2656enum D3D_SHADER_MODEL
2657 {
2658 D3D_SHADER_MODEL_NONE = 0,
2659 D3D_SHADER_MODEL_5_1 = 0x51,
2660 D3D_SHADER_MODEL_6_0 = 0x60,
2661 D3D_SHADER_MODEL_6_1 = 0x61,
2662 D3D_SHADER_MODEL_6_2 = 0x62,
2663 D3D_SHADER_MODEL_6_3 = 0x63,
2664 D3D_SHADER_MODEL_6_4 = 0x64,
2665 D3D_SHADER_MODEL_6_5 = 0x65,
2666 D3D_SHADER_MODEL_6_6 = 0x66,
2667 D3D_SHADER_MODEL_6_7 = 0x67,
2668 D3D_SHADER_MODEL_6_8 = 0x68,
2669 D3D_SHADER_MODEL_6_9 = 0x69,
2670 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
2671 } D3D_SHADER_MODEL;
2672
2673typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2674 {
2675 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2676 } D3D12_FEATURE_DATA_SHADER_MODEL;
2677
2678typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2679 {
2680 _In_ DXGI_FORMAT Format;
2681 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2682 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2683 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2684
2685typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2686 {
2687 _In_ DXGI_FORMAT Format;
2688 _In_ UINT SampleCount;
2689 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2690 _Out_ UINT NumQualityLevels;
2691 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2692
2693typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2694 {
2695 DXGI_FORMAT Format;
2696 UINT8 PlaneCount;
2697 } D3D12_FEATURE_DATA_FORMAT_INFO;
2698
2699typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2700 {
2701 UINT MaxGPUVirtualAddressBitsPerResource;
2702 UINT MaxGPUVirtualAddressBitsPerProcess;
2703 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2704
2705typedef
2706enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2707 {
2708 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2709 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2710 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2711 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2712 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2713 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2714 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2715 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2716 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2717
2718DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
2719typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2720 {
2721 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2722 } D3D12_FEATURE_DATA_SHADER_CACHE;
2723
2724typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2725 {
2726 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2727 _In_ UINT Priority;
2728 _Out_ BOOL PriorityForTypeIsSupported;
2729 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2730
2731typedef
2732enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2733 {
2734 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2735 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2736 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2737 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2738 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2739 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2740 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2741 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2742 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2743
2744DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
2745typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2746 {
2747 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2748 _Out_ BOOL CastingFullyTypedFormatSupported;
2749 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2750 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2751 _Out_ BOOL BarycentricsSupported;
2752 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2753
2754typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2755 {
2756 _Out_ BOOL Supported;
2757 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2758
2759typedef
2760enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2761 {
2762 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2763 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2764 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 )
2765 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2766
2767typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2768 {
2769 _Out_ BOOL DisplayableTexture;
2770 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2771 } D3D12_FEATURE_DATA_DISPLAYABLE;
2772
2773typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2774 {
2775 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2776 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2777 _Out_ BOOL Native16BitShaderOpsSupported;
2778 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2779
2780typedef
2781enum D3D12_HEAP_SERIALIZATION_TIER
2782 {
2783 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2784 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2785 } D3D12_HEAP_SERIALIZATION_TIER;
2786
2787typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2788 {
2789 _In_ UINT NodeIndex;
2790 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2791 } D3D12_FEATURE_DATA_SERIALIZATION;
2792
2793typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2794 {
2795 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2796 BOOL AtomicShaderInstructions;
2797 } D3D12_FEATURE_DATA_CROSS_NODE;
2798
2799typedef
2800enum D3D12_RENDER_PASS_TIER
2801 {
2802 D3D12_RENDER_PASS_TIER_0 = 0,
2803 D3D12_RENDER_PASS_TIER_1 = 1,
2804 D3D12_RENDER_PASS_TIER_2 = 2
2805 } D3D12_RENDER_PASS_TIER;
2806
2807typedef
2808enum D3D12_RAYTRACING_TIER
2809 {
2810 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2811 D3D12_RAYTRACING_TIER_1_0 = 10,
2812 D3D12_RAYTRACING_TIER_1_1 = 11,
2813 D3D12_RAYTRACING_TIER_1_2 = 12
2814 } D3D12_RAYTRACING_TIER;
2815
2816typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2817 {
2818 _Out_ BOOL SRVOnlyTiledResourceTier3;
2819 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2820 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2821 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2822
2823typedef
2824enum D3D12_VARIABLE_SHADING_RATE_TIER
2825 {
2826 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2827 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2828 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2829 } D3D12_VARIABLE_SHADING_RATE_TIER;
2830
2831typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2832 {
2833 _Out_ BOOL AdditionalShadingRatesSupported;
2834 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2835 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2836 _Out_ UINT ShadingRateImageTileSize;
2837 _Out_ BOOL BackgroundProcessingSupported;
2838 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2839
2840typedef
2841enum D3D12_MESH_SHADER_TIER
2842 {
2843 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2844 D3D12_MESH_SHADER_TIER_1 = 10
2845 } D3D12_MESH_SHADER_TIER;
2846
2847typedef
2848enum D3D12_SAMPLER_FEEDBACK_TIER
2849 {
2850 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2851 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2852 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2853 } D3D12_SAMPLER_FEEDBACK_TIER;
2854
2855typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2856 {
2857 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2858 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2859 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2860
2861typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2862 {
2863 _In_ GUID CommandId;
2864 _In_ UINT NodeMask;
2865 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2866 _In_ SIZE_T QueryInputDataSizeInBytes;
2867 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2868 _In_ SIZE_T QueryOutputDataSizeInBytes;
2869 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2870
2871typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2872 {
2873 _Out_ BOOL UnalignedBlockTexturesSupported;
2874 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2875
2876typedef
2877enum D3D12_WAVE_MMA_TIER
2878 {
2879 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2880 D3D12_WAVE_MMA_TIER_1_0 = 10
2881 } D3D12_WAVE_MMA_TIER;
2882
2883typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2884 {
2885 _Out_ BOOL MeshShaderPipelineStatsSupported;
2886 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2887 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2888 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2889 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2890 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2891 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2892
2893typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2894 {
2895 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2896 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2897 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2898
2899typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2900 {
2901 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2902 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2903
2904typedef
2905enum D3D12_TRI_STATE
2906 {
2907 D3D12_TRI_STATE_UNKNOWN = -1,
2908 D3D12_TRI_STATE_FALSE = 0,
2909 D3D12_TRI_STATE_TRUE = 1
2910 } D3D12_TRI_STATE;
2911
2912typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
2913 {
2914 _Out_ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
2915 _Out_ BOOL EnhancedBarriersSupported;
2916 _Out_ BOOL RelaxedFormatCastingSupported;
2917 } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
2918
2919typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
2920 {
2921 _Out_ BOOL UnrestrictedBufferTextureCopyPitchSupported;
2922 _Out_ BOOL UnrestrictedVertexElementAlignmentSupported;
2923 _Out_ BOOL InvertedViewportHeightFlipsYSupported;
2924 _Out_ BOOL InvertedViewportDepthFlipsZSupported;
2925 _Out_ BOOL TextureCopyBetweenDimensionsSupported;
2926 _Out_ BOOL AlphaBlendFactorSupported;
2927 } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
2928
2929typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
2930 {
2931 _Out_ BOOL AdvancedTextureOpsSupported;
2932 _Out_ BOOL WriteableMSAATexturesSupported;
2933 _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
2934 } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
2935
2936typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
2937 {
2938 _Out_ BOOL TriangleFanSupported;
2939 _Out_ BOOL DynamicIndexBufferStripCutSupported;
2940 } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
2941
2942typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
2943 {
2944 _Out_ BOOL DynamicDepthBiasSupported;
2945 _Out_ BOOL GPUUploadHeapSupported;
2946 } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
2947
2948typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
2949 {
2950 _Out_ BOOL NonNormalizedCoordinateSamplersSupported;
2951 _Out_ BOOL ManualWriteTrackingResourceSupported;
2952 } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
2953
2954typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
2955 {
2956 _Out_ BOOL RenderPassesValid;
2957 } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
2958
2959typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
2960 {
2961 BOOL MismatchingOutputDimensionsSupported;
2962 UINT SupportedSampleCountsWithNoOutputs;
2963 BOOL PointSamplingAddressesNeverRoundUp;
2964 BOOL RasterizerDesc2Supported;
2965 BOOL NarrowQuadrilateralLinesSupported;
2966 BOOL AnisoFilterWithPointMipSupported;
2967 UINT MaxSamplerDescriptorHeapSize;
2968 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
2969 UINT MaxViewDescriptorHeapSize;
2970 _Out_ BOOL ComputeOnlyCustomHeapSupported;
2971 } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
2972
2973typedef
2974enum D3D12_RECREATE_AT_TIER
2975 {
2976 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
2977 D3D12_RECREATE_AT_TIER_1 = 1
2978 } D3D12_RECREATE_AT_TIER;
2979
2980typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
2981 {
2982 _Out_ BOOL ComputeOnlyWriteWatchSupported;
2983 D3D12_RECREATE_AT_TIER RecreateAtTier;
2984 } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
2985
2986typedef
2987enum D3D12_EXECUTE_INDIRECT_TIER
2988 {
2989 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
2990 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
2991 } D3D12_EXECUTE_INDIRECT_TIER;
2992
2993typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
2994 {
2995 _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
2996 _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
2997 _Out_ BOOL SampleCmpGradientAndBiasSupported;
2998 _Out_ BOOL ExtendedCommandInfoSupported;
2999 } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
3000
3001typedef
3002enum D3D12_TIGHT_ALIGNMENT_TIER
3003 {
3004 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
3005 D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
3006 } D3D12_TIGHT_ALIGNMENT_TIER;
3007
3008typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
3009 {
3010 _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
3011 } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
3012
3013typedef struct D3D12_FEATURE_DATA_PREDICATION
3014 {
3015 _Out_ BOOL Supported;
3016 } D3D12_FEATURE_DATA_PREDICATION;
3017
3018typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
3019 {
3020 _Out_ BOOL Supported;
3021 } D3D12_FEATURE_DATA_HARDWARE_COPY;
3022
3023typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
3024 {
3025 _Out_ BOOL Supported;
3026 } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
3027
3028typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
3029 {
3030 _Out_ BOOL Supported;
3031 } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
3032
3033typedef struct D3D12_RESOURCE_ALLOCATION_INFO
3034 {
3035 UINT64 SizeInBytes;
3036 UINT64 Alignment;
3037 } D3D12_RESOURCE_ALLOCATION_INFO;
3038
3039typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
3040 {
3041 UINT64 Offset;
3042 UINT64 Alignment;
3043 UINT64 SizeInBytes;
3044 } D3D12_RESOURCE_ALLOCATION_INFO1;
3045
3046typedef
3047enum D3D12_HEAP_TYPE
3048 {
3049 D3D12_HEAP_TYPE_DEFAULT = 1,
3050 D3D12_HEAP_TYPE_UPLOAD = 2,
3051 D3D12_HEAP_TYPE_READBACK = 3,
3052 D3D12_HEAP_TYPE_CUSTOM = 4,
3053 D3D12_HEAP_TYPE_GPU_UPLOAD = 5
3054 } D3D12_HEAP_TYPE;
3055
3056typedef
3057enum D3D12_CPU_PAGE_PROPERTY
3058 {
3059 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
3060 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
3061 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
3062 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
3063 } D3D12_CPU_PAGE_PROPERTY;
3064
3065typedef
3066enum D3D12_MEMORY_POOL
3067 {
3068 D3D12_MEMORY_POOL_UNKNOWN = 0,
3069 D3D12_MEMORY_POOL_L0 = 1,
3070 D3D12_MEMORY_POOL_L1 = 2
3071 } D3D12_MEMORY_POOL;
3072
3073typedef struct D3D12_HEAP_PROPERTIES
3074 {
3075 D3D12_HEAP_TYPE Type;
3076 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
3077 D3D12_MEMORY_POOL MemoryPoolPreference;
3078 UINT CreationNodeMask;
3079 UINT VisibleNodeMask;
3080 } D3D12_HEAP_PROPERTIES;
3081
3082typedef
3083enum D3D12_HEAP_FLAGS
3084 {
3085 D3D12_HEAP_FLAG_NONE = 0,
3086 D3D12_HEAP_FLAG_SHARED = 0x1,
3087 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
3088 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
3089 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
3090 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
3091 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
3092 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
3093 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
3094 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
3095 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
3096 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
3097 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
3098 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
3099 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
3100 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
3101 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
3102 } D3D12_HEAP_FLAGS;
3103
3104DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
3105typedef struct D3D12_HEAP_DESC
3106 {
3107 UINT64 SizeInBytes;
3108 D3D12_HEAP_PROPERTIES Properties;
3109 UINT64 Alignment;
3110 D3D12_HEAP_FLAGS Flags;
3111 } D3D12_HEAP_DESC;
3112
3113typedef
3114enum D3D12_RESOURCE_DIMENSION
3115 {
3116 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
3117 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
3118 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
3119 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
3120 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
3121 } D3D12_RESOURCE_DIMENSION;
3122
3123typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
3124 {
3125 _In_ DXGI_FORMAT Format;
3126 _In_ D3D12_RESOURCE_DIMENSION Dimension;
3127 _In_ D3D12_HEAP_PROPERTIES DestHeapProperties;
3128 _Out_ BOOL Supported;
3129 } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
3130
3131typedef
3132enum D3D12_TEXTURE_LAYOUT
3133 {
3134 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
3135 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
3136 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
3137 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
3138 } D3D12_TEXTURE_LAYOUT;
3139
3140typedef
3141enum D3D12_RESOURCE_FLAGS
3142 {
3143 D3D12_RESOURCE_FLAG_NONE = 0,
3144 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
3145 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
3146 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
3147 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
3148 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
3149 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
3150 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
3151 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
3152 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
3153 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
3154 } D3D12_RESOURCE_FLAGS;
3155
3156DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
3157typedef struct D3D12_MIP_REGION
3158 {
3159 UINT Width;
3160 UINT Height;
3161 UINT Depth;
3162 } D3D12_MIP_REGION;
3163
3164typedef struct D3D12_RESOURCE_DESC
3165 {
3166 D3D12_RESOURCE_DIMENSION Dimension;
3167 UINT64 Alignment;
3168 UINT64 Width;
3169 UINT Height;
3170 UINT16 DepthOrArraySize;
3171 UINT16 MipLevels;
3172 DXGI_FORMAT Format;
3173 DXGI_SAMPLE_DESC SampleDesc;
3174 D3D12_TEXTURE_LAYOUT Layout;
3175 D3D12_RESOURCE_FLAGS Flags;
3176 } D3D12_RESOURCE_DESC;
3177
3178typedef struct D3D12_RESOURCE_DESC1
3179 {
3180 D3D12_RESOURCE_DIMENSION Dimension;
3181 UINT64 Alignment;
3182 UINT64 Width;
3183 UINT Height;
3184 UINT16 DepthOrArraySize;
3185 UINT16 MipLevels;
3186 DXGI_FORMAT Format;
3187 DXGI_SAMPLE_DESC SampleDesc;
3188 D3D12_TEXTURE_LAYOUT Layout;
3189 D3D12_RESOURCE_FLAGS Flags;
3190 D3D12_MIP_REGION SamplerFeedbackMipRegion;
3191 } D3D12_RESOURCE_DESC1;
3192
3193typedef struct D3D12_DEPTH_STENCIL_VALUE
3194 {
3195 FLOAT Depth;
3196 UINT8 Stencil;
3197 } D3D12_DEPTH_STENCIL_VALUE;
3198
3199typedef struct D3D12_CLEAR_VALUE
3200 {
3201 DXGI_FORMAT Format;
3202 union
3203 {
3204 FLOAT Color[ 4 ];
3205 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
3206 } ;
3207 } D3D12_CLEAR_VALUE;
3208
3209typedef struct D3D12_RANGE
3210 {
3211 SIZE_T Begin;
3212 SIZE_T End;
3213 } D3D12_RANGE;
3214
3215typedef struct D3D12_RANGE_UINT64
3216 {
3217 UINT64 Begin;
3218 UINT64 End;
3219 } D3D12_RANGE_UINT64;
3220
3221typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
3222 {
3223 UINT Subresource;
3224 D3D12_RANGE_UINT64 Range;
3225 } D3D12_SUBRESOURCE_RANGE_UINT64;
3226
3227typedef struct D3D12_SUBRESOURCE_INFO
3228 {
3229 UINT64 Offset;
3230 UINT RowPitch;
3231 UINT DepthPitch;
3232 } D3D12_SUBRESOURCE_INFO;
3233
3234typedef struct D3D12_TILED_RESOURCE_COORDINATE
3235 {
3236 UINT X;
3237 UINT Y;
3238 UINT Z;
3239 UINT Subresource;
3240 } D3D12_TILED_RESOURCE_COORDINATE;
3241
3242typedef struct D3D12_TILE_REGION_SIZE
3243 {
3244 UINT NumTiles;
3245 BOOL UseBox;
3246 UINT Width;
3247 UINT16 Height;
3248 UINT16 Depth;
3249 } D3D12_TILE_REGION_SIZE;
3250
3251typedef
3252enum D3D12_TILE_RANGE_FLAGS
3253 {
3254 D3D12_TILE_RANGE_FLAG_NONE = 0,
3255 D3D12_TILE_RANGE_FLAG_NULL = 1,
3256 D3D12_TILE_RANGE_FLAG_SKIP = 2,
3257 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
3258 } D3D12_TILE_RANGE_FLAGS;
3259
3260typedef struct D3D12_SUBRESOURCE_TILING
3261 {
3262 UINT WidthInTiles;
3263 UINT16 HeightInTiles;
3264 UINT16 DepthInTiles;
3265 UINT StartTileIndexInOverallResource;
3266 } D3D12_SUBRESOURCE_TILING;
3267
3268typedef struct D3D12_TILE_SHAPE
3269 {
3270 UINT WidthInTexels;
3271 UINT HeightInTexels;
3272 UINT DepthInTexels;
3273 } D3D12_TILE_SHAPE;
3274
3275typedef struct D3D12_PACKED_MIP_INFO
3276 {
3277 UINT8 NumStandardMips;
3278 UINT8 NumPackedMips;
3279 UINT NumTilesForPackedMips;
3280 UINT StartTileIndexInOverallResource;
3281 } D3D12_PACKED_MIP_INFO;
3282
3283typedef
3284enum D3D12_TILE_MAPPING_FLAGS
3285 {
3286 D3D12_TILE_MAPPING_FLAG_NONE = 0,
3287 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
3288 } D3D12_TILE_MAPPING_FLAGS;
3289
3290DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
3291typedef
3292enum D3D12_TILE_COPY_FLAGS
3293 {
3294 D3D12_TILE_COPY_FLAG_NONE = 0,
3295 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
3296 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
3297 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
3298 } D3D12_TILE_COPY_FLAGS;
3299
3300DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
3301typedef
3302enum D3D12_RESOURCE_STATES
3303 {
3304 D3D12_RESOURCE_STATE_COMMON = 0,
3305 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
3306 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
3307 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
3308 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
3309 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
3310 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
3311 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
3312 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
3313 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
3314 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
3315 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
3316 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
3317 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
3318 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
3319 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
3320 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
3321 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
3322 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
3323 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
3324 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
3325 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
3326 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
3327 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
3328 D3D12_RESOURCE_STATE_PRESENT = 0,
3329 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
3330 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
3331 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
3332 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
3333 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
3334 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
3335 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
3336 } D3D12_RESOURCE_STATES;
3337
3338DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
3339typedef
3340enum D3D12_RESOURCE_BARRIER_TYPE
3341 {
3342 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
3343 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
3344 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
3345 } D3D12_RESOURCE_BARRIER_TYPE;
3346
3347
3348typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
3349 {
3350 ID3D12Resource *pResource;
3351 UINT Subresource;
3352 D3D12_RESOURCE_STATES StateBefore;
3353 D3D12_RESOURCE_STATES StateAfter;
3354 } D3D12_RESOURCE_TRANSITION_BARRIER;
3355
3356typedef struct D3D12_RESOURCE_ALIASING_BARRIER
3357 {
3358 ID3D12Resource *pResourceBefore;
3359 ID3D12Resource *pResourceAfter;
3360 } D3D12_RESOURCE_ALIASING_BARRIER;
3361
3362typedef struct D3D12_RESOURCE_UAV_BARRIER
3363 {
3364 ID3D12Resource *pResource;
3365 } D3D12_RESOURCE_UAV_BARRIER;
3366
3367typedef
3368enum D3D12_RESOURCE_BARRIER_FLAGS
3369 {
3370 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
3371 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
3372 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
3373 } D3D12_RESOURCE_BARRIER_FLAGS;
3374
3375DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
3376typedef struct D3D12_RESOURCE_BARRIER
3377 {
3378 D3D12_RESOURCE_BARRIER_TYPE Type;
3379 D3D12_RESOURCE_BARRIER_FLAGS Flags;
3380 union
3381 {
3382 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
3383 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
3384 D3D12_RESOURCE_UAV_BARRIER UAV;
3385 } ;
3386 } D3D12_RESOURCE_BARRIER;
3387
3388typedef struct D3D12_SUBRESOURCE_FOOTPRINT
3389 {
3390 DXGI_FORMAT Format;
3391 UINT Width;
3392 UINT Height;
3393 UINT Depth;
3394 UINT RowPitch;
3395 } D3D12_SUBRESOURCE_FOOTPRINT;
3396
3397typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
3398 {
3399 UINT64 Offset;
3400 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
3401 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
3402
3403typedef
3404enum D3D12_TEXTURE_COPY_TYPE
3405 {
3406 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
3407 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
3408 } D3D12_TEXTURE_COPY_TYPE;
3409
3410typedef struct D3D12_TEXTURE_COPY_LOCATION
3411 {
3412 ID3D12Resource *pResource;
3413 D3D12_TEXTURE_COPY_TYPE Type;
3414 union
3415 {
3416 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
3417 UINT SubresourceIndex;
3418 } ;
3419 } D3D12_TEXTURE_COPY_LOCATION;
3420
3421typedef
3422enum D3D12_RESOLVE_MODE
3423 {
3424 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
3425 D3D12_RESOLVE_MODE_MIN = 1,
3426 D3D12_RESOLVE_MODE_MAX = 2,
3427 D3D12_RESOLVE_MODE_AVERAGE = 3,
3428 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
3429 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
3430 } D3D12_RESOLVE_MODE;
3431
3432typedef struct D3D12_SAMPLE_POSITION
3433 {
3434 INT8 X;
3435 INT8 Y;
3436 } D3D12_SAMPLE_POSITION;
3437
3438typedef struct D3D12_VIEW_INSTANCE_LOCATION
3439 {
3440 UINT ViewportArrayIndex;
3441 UINT RenderTargetArrayIndex;
3442 } D3D12_VIEW_INSTANCE_LOCATION;
3443
3444typedef
3445enum D3D12_VIEW_INSTANCING_FLAGS
3446 {
3447 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
3448 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
3449 } D3D12_VIEW_INSTANCING_FLAGS;
3450
3451DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
3452typedef struct D3D12_VIEW_INSTANCING_DESC
3453 {
3454 UINT ViewInstanceCount;
3455 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
3456 D3D12_VIEW_INSTANCING_FLAGS Flags;
3457 } D3D12_VIEW_INSTANCING_DESC;
3458
3459typedef
3460enum D3D12_SHADER_COMPONENT_MAPPING
3461 {
3462 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
3463 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
3464 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
3465 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
3466 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
3467 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
3468 } D3D12_SHADER_COMPONENT_MAPPING;
3469
3470#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
3471#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
3472#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
3473#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
3474 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
3475 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
3476 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
3477 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
3478#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
3479#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
3480typedef
3481enum D3D12_BUFFER_SRV_FLAGS
3482 {
3483 D3D12_BUFFER_SRV_FLAG_NONE = 0,
3484 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
3485 } D3D12_BUFFER_SRV_FLAGS;
3486
3487DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
3488typedef struct D3D12_BUFFER_SRV
3489 {
3490 UINT64 FirstElement;
3491 UINT NumElements;
3492 UINT StructureByteStride;
3493 D3D12_BUFFER_SRV_FLAGS Flags;
3494 } D3D12_BUFFER_SRV;
3495
3496typedef struct D3D12_TEX1D_SRV
3497 {
3498 UINT MostDetailedMip;
3499 UINT MipLevels;
3500 FLOAT ResourceMinLODClamp;
3501 } D3D12_TEX1D_SRV;
3502
3503typedef struct D3D12_TEX1D_ARRAY_SRV
3504 {
3505 UINT MostDetailedMip;
3506 UINT MipLevels;
3507 UINT FirstArraySlice;
3508 UINT ArraySize;
3509 FLOAT ResourceMinLODClamp;
3510 } D3D12_TEX1D_ARRAY_SRV;
3511
3512typedef struct D3D12_TEX2D_SRV
3513 {
3514 UINT MostDetailedMip;
3515 UINT MipLevels;
3516 UINT PlaneSlice;
3517 FLOAT ResourceMinLODClamp;
3518 } D3D12_TEX2D_SRV;
3519
3520typedef struct D3D12_TEX2D_ARRAY_SRV
3521 {
3522 UINT MostDetailedMip;
3523 UINT MipLevels;
3524 UINT FirstArraySlice;
3525 UINT ArraySize;
3526 UINT PlaneSlice;
3527 FLOAT ResourceMinLODClamp;
3528 } D3D12_TEX2D_ARRAY_SRV;
3529
3530typedef struct D3D12_TEX3D_SRV
3531 {
3532 UINT MostDetailedMip;
3533 UINT MipLevels;
3534 FLOAT ResourceMinLODClamp;
3535 } D3D12_TEX3D_SRV;
3536
3537typedef struct D3D12_TEXCUBE_SRV
3538 {
3539 UINT MostDetailedMip;
3540 UINT MipLevels;
3541 FLOAT ResourceMinLODClamp;
3542 } D3D12_TEXCUBE_SRV;
3543
3544typedef struct D3D12_TEXCUBE_ARRAY_SRV
3545 {
3546 UINT MostDetailedMip;
3547 UINT MipLevels;
3548 UINT First2DArrayFace;
3549 UINT NumCubes;
3550 FLOAT ResourceMinLODClamp;
3551 } D3D12_TEXCUBE_ARRAY_SRV;
3552
3553typedef struct D3D12_TEX2DMS_SRV
3554 {
3555 UINT UnusedField_NothingToDefine;
3556 } D3D12_TEX2DMS_SRV;
3557
3558typedef struct D3D12_TEX2DMS_ARRAY_SRV
3559 {
3560 UINT FirstArraySlice;
3561 UINT ArraySize;
3562 } D3D12_TEX2DMS_ARRAY_SRV;
3563
3564typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3565 {
3566 D3D12_GPU_VIRTUAL_ADDRESS Location;
3567 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3568
3569typedef
3570enum D3D12_SRV_DIMENSION
3571 {
3572 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3573 D3D12_SRV_DIMENSION_BUFFER = 1,
3574 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3575 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3576 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3577 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3578 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3579 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3580 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3581 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3582 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3583 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3584 } D3D12_SRV_DIMENSION;
3585
3586typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3587 {
3588 DXGI_FORMAT Format;
3589 D3D12_SRV_DIMENSION ViewDimension;
3590 UINT Shader4ComponentMapping;
3591 union
3592 {
3593 D3D12_BUFFER_SRV Buffer;
3594 D3D12_TEX1D_SRV Texture1D;
3595 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3596 D3D12_TEX2D_SRV Texture2D;
3597 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3598 D3D12_TEX2DMS_SRV Texture2DMS;
3599 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3600 D3D12_TEX3D_SRV Texture3D;
3601 D3D12_TEXCUBE_SRV TextureCube;
3602 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3603 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3604 } ;
3605 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3606
3607typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3608 {
3609 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3610 UINT SizeInBytes;
3611 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3612
3613typedef
3614enum D3D12_FILTER
3615 {
3616 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3617 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3618 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3619 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3620 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3621 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3622 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3623 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3624 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x54,
3625 D3D12_FILTER_ANISOTROPIC = 0x55,
3626 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3627 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3628 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3629 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3630 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3631 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3632 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3633 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3634 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0xd4,
3635 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3636 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3637 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3638 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3639 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3640 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3641 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3642 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3643 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3644 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x154,
3645 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3646 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3647 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3648 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3649 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3650 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3651 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3652 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3653 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3654 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x1d4,
3655 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3656 } D3D12_FILTER;
3657
3658typedef
3659enum D3D12_FILTER_TYPE
3660 {
3661 D3D12_FILTER_TYPE_POINT = 0,
3662 D3D12_FILTER_TYPE_LINEAR = 1
3663 } D3D12_FILTER_TYPE;
3664
3665typedef
3666enum D3D12_FILTER_REDUCTION_TYPE
3667 {
3668 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3669 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3670 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3671 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3672 } D3D12_FILTER_REDUCTION_TYPE;
3673
3674#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3675
3676#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3677
3678#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3679
3680#define D3D12_MIN_FILTER_SHIFT ( 4 )
3681
3682#define D3D12_MAG_FILTER_SHIFT ( 2 )
3683
3684#define D3D12_MIP_FILTER_SHIFT ( 0 )
3685
3686#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3687
3688#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3689 ( ( D3D12_FILTER ) ( \
3690 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3691 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3692 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3693 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3694#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3695 ( ( D3D12_FILTER ) ( \
3696 D3D12_ANISOTROPIC_FILTERING_BIT | \
3697 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3698 D3D12_FILTER_TYPE_LINEAR, \
3699 D3D12_FILTER_TYPE_LINEAR, \
3700 reduction ) ) )
3701#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \
3702 ( ( D3D12_FILTER ) ( \
3703 D3D12_ANISOTROPIC_FILTERING_BIT | \
3704 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3705 D3D12_FILTER_TYPE_LINEAR, \
3706 D3D12_FILTER_TYPE_POINT, \
3707 reduction ) ) )
3708#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3709 ( ( D3D12_FILTER_TYPE ) \
3710 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3711#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3712 ( ( D3D12_FILTER_TYPE ) \
3713 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3714#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3715 ( ( D3D12_FILTER_TYPE ) \
3716 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3717#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3718 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3719 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3720#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3721 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3722#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3723 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3724 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3725 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )
3726typedef
3727enum D3D12_TEXTURE_ADDRESS_MODE
3728 {
3729 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3730 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3731 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3732 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3733 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3734 } D3D12_TEXTURE_ADDRESS_MODE;
3735
3736typedef struct D3D12_SAMPLER_DESC
3737 {
3738 D3D12_FILTER Filter;
3739 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3740 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3741 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3742 FLOAT MipLODBias;
3743 UINT MaxAnisotropy;
3744 D3D12_COMPARISON_FUNC ComparisonFunc;
3745 FLOAT BorderColor[ 4 ];
3746 FLOAT MinLOD;
3747 FLOAT MaxLOD;
3748 } D3D12_SAMPLER_DESC;
3749
3750typedef
3751enum D3D12_SAMPLER_FLAGS
3752 {
3753 D3D12_SAMPLER_FLAG_NONE = 0,
3754 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x1,
3755 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
3756 } D3D12_SAMPLER_FLAGS;
3757
3758DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
3759typedef struct D3D12_SAMPLER_DESC2
3760 {
3761 D3D12_FILTER Filter;
3762 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3763 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3764 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3765 FLOAT MipLODBias;
3766 UINT MaxAnisotropy;
3767 D3D12_COMPARISON_FUNC ComparisonFunc;
3768 union
3769 {
3770 FLOAT FloatBorderColor[ 4 ];
3771 UINT UintBorderColor[ 4 ];
3772 } ;
3773 FLOAT MinLOD;
3774 FLOAT MaxLOD;
3775 D3D12_SAMPLER_FLAGS Flags;
3776 } D3D12_SAMPLER_DESC2;
3777
3778typedef
3779enum D3D12_BUFFER_UAV_FLAGS
3780 {
3781 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3782 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3783 } D3D12_BUFFER_UAV_FLAGS;
3784
3785DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
3786typedef struct D3D12_BUFFER_UAV
3787 {
3788 UINT64 FirstElement;
3789 UINT NumElements;
3790 UINT StructureByteStride;
3791 UINT64 CounterOffsetInBytes;
3792 D3D12_BUFFER_UAV_FLAGS Flags;
3793 } D3D12_BUFFER_UAV;
3794
3795typedef struct D3D12_TEX1D_UAV
3796 {
3797 UINT MipSlice;
3798 } D3D12_TEX1D_UAV;
3799
3800typedef struct D3D12_TEX1D_ARRAY_UAV
3801 {
3802 UINT MipSlice;
3803 UINT FirstArraySlice;
3804 UINT ArraySize;
3805 } D3D12_TEX1D_ARRAY_UAV;
3806
3807typedef struct D3D12_TEX2D_UAV
3808 {
3809 UINT MipSlice;
3810 UINT PlaneSlice;
3811 } D3D12_TEX2D_UAV;
3812
3813typedef struct D3D12_TEX2D_ARRAY_UAV
3814 {
3815 UINT MipSlice;
3816 UINT FirstArraySlice;
3817 UINT ArraySize;
3818 UINT PlaneSlice;
3819 } D3D12_TEX2D_ARRAY_UAV;
3820
3821typedef struct D3D12_TEX2DMS_UAV
3822 {
3823 UINT UnusedField_NothingToDefine;
3824 } D3D12_TEX2DMS_UAV;
3825
3826typedef struct D3D12_TEX2DMS_ARRAY_UAV
3827 {
3828 UINT FirstArraySlice;
3829 UINT ArraySize;
3830 } D3D12_TEX2DMS_ARRAY_UAV;
3831
3832typedef struct D3D12_TEX3D_UAV
3833 {
3834 UINT MipSlice;
3835 UINT FirstWSlice;
3836 UINT WSize;
3837 } D3D12_TEX3D_UAV;
3838
3839typedef
3840enum D3D12_UAV_DIMENSION
3841 {
3842 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3843 D3D12_UAV_DIMENSION_BUFFER = 1,
3844 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3845 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3846 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3847 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3848 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
3849 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
3850 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3851 } D3D12_UAV_DIMENSION;
3852
3853typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3854 {
3855 DXGI_FORMAT Format;
3856 D3D12_UAV_DIMENSION ViewDimension;
3857 union
3858 {
3859 D3D12_BUFFER_UAV Buffer;
3860 D3D12_TEX1D_UAV Texture1D;
3861 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3862 D3D12_TEX2D_UAV Texture2D;
3863 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3864 D3D12_TEX2DMS_UAV Texture2DMS;
3865 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
3866 D3D12_TEX3D_UAV Texture3D;
3867 } ;
3868 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3869
3870typedef struct D3D12_BUFFER_RTV
3871 {
3872 UINT64 FirstElement;
3873 UINT NumElements;
3874 } D3D12_BUFFER_RTV;
3875
3876typedef struct D3D12_TEX1D_RTV
3877 {
3878 UINT MipSlice;
3879 } D3D12_TEX1D_RTV;
3880
3881typedef struct D3D12_TEX1D_ARRAY_RTV
3882 {
3883 UINT MipSlice;
3884 UINT FirstArraySlice;
3885 UINT ArraySize;
3886 } D3D12_TEX1D_ARRAY_RTV;
3887
3888typedef struct D3D12_TEX2D_RTV
3889 {
3890 UINT MipSlice;
3891 UINT PlaneSlice;
3892 } D3D12_TEX2D_RTV;
3893
3894typedef struct D3D12_TEX2DMS_RTV
3895 {
3896 UINT UnusedField_NothingToDefine;
3897 } D3D12_TEX2DMS_RTV;
3898
3899typedef struct D3D12_TEX2D_ARRAY_RTV
3900 {
3901 UINT MipSlice;
3902 UINT FirstArraySlice;
3903 UINT ArraySize;
3904 UINT PlaneSlice;
3905 } D3D12_TEX2D_ARRAY_RTV;
3906
3907typedef struct D3D12_TEX2DMS_ARRAY_RTV
3908 {
3909 UINT FirstArraySlice;
3910 UINT ArraySize;
3911 } D3D12_TEX2DMS_ARRAY_RTV;
3912
3913typedef struct D3D12_TEX3D_RTV
3914 {
3915 UINT MipSlice;
3916 UINT FirstWSlice;
3917 UINT WSize;
3918 } D3D12_TEX3D_RTV;
3919
3920typedef
3921enum D3D12_RTV_DIMENSION
3922 {
3923 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3924 D3D12_RTV_DIMENSION_BUFFER = 1,
3925 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3926 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3927 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3928 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3929 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3930 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3931 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3932 } D3D12_RTV_DIMENSION;
3933
3934typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3935 {
3936 DXGI_FORMAT Format;
3937 D3D12_RTV_DIMENSION ViewDimension;
3938 union
3939 {
3940 D3D12_BUFFER_RTV Buffer;
3941 D3D12_TEX1D_RTV Texture1D;
3942 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3943 D3D12_TEX2D_RTV Texture2D;
3944 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3945 D3D12_TEX2DMS_RTV Texture2DMS;
3946 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3947 D3D12_TEX3D_RTV Texture3D;
3948 } ;
3949 } D3D12_RENDER_TARGET_VIEW_DESC;
3950
3951typedef struct D3D12_TEX1D_DSV
3952 {
3953 UINT MipSlice;
3954 } D3D12_TEX1D_DSV;
3955
3956typedef struct D3D12_TEX1D_ARRAY_DSV
3957 {
3958 UINT MipSlice;
3959 UINT FirstArraySlice;
3960 UINT ArraySize;
3961 } D3D12_TEX1D_ARRAY_DSV;
3962
3963typedef struct D3D12_TEX2D_DSV
3964 {
3965 UINT MipSlice;
3966 } D3D12_TEX2D_DSV;
3967
3968typedef struct D3D12_TEX2D_ARRAY_DSV
3969 {
3970 UINT MipSlice;
3971 UINT FirstArraySlice;
3972 UINT ArraySize;
3973 } D3D12_TEX2D_ARRAY_DSV;
3974
3975typedef struct D3D12_TEX2DMS_DSV
3976 {
3977 UINT UnusedField_NothingToDefine;
3978 } D3D12_TEX2DMS_DSV;
3979
3980typedef struct D3D12_TEX2DMS_ARRAY_DSV
3981 {
3982 UINT FirstArraySlice;
3983 UINT ArraySize;
3984 } D3D12_TEX2DMS_ARRAY_DSV;
3985
3986typedef
3987enum D3D12_DSV_FLAGS
3988 {
3989 D3D12_DSV_FLAG_NONE = 0,
3990 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3991 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3992 } D3D12_DSV_FLAGS;
3993
3994DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
3995typedef
3996enum D3D12_DSV_DIMENSION
3997 {
3998 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3999 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
4000 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
4001 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
4002 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
4003 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
4004 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
4005 } D3D12_DSV_DIMENSION;
4006
4007typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
4008 {
4009 DXGI_FORMAT Format;
4010 D3D12_DSV_DIMENSION ViewDimension;
4011 D3D12_DSV_FLAGS Flags;
4012 union
4013 {
4014 D3D12_TEX1D_DSV Texture1D;
4015 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
4016 D3D12_TEX2D_DSV Texture2D;
4017 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
4018 D3D12_TEX2DMS_DSV Texture2DMS;
4019 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
4020 } ;
4021 } D3D12_DEPTH_STENCIL_VIEW_DESC;
4022
4023typedef
4024enum D3D12_CLEAR_FLAGS
4025 {
4026 D3D12_CLEAR_FLAG_DEPTH = 0x1,
4027 D3D12_CLEAR_FLAG_STENCIL = 0x2
4028 } D3D12_CLEAR_FLAGS;
4029
4030DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
4031typedef
4032enum D3D12_FENCE_FLAGS
4033 {
4034 D3D12_FENCE_FLAG_NONE = 0,
4035 D3D12_FENCE_FLAG_SHARED = 0x1,
4036 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
4037 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
4038 } D3D12_FENCE_FLAGS;
4039
4040DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
4041typedef
4042enum D3D12_DESCRIPTOR_HEAP_TYPE
4043 {
4044 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
4045 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
4046 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
4047 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
4048 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
4049 } D3D12_DESCRIPTOR_HEAP_TYPE;
4050
4051typedef
4052enum D3D12_DESCRIPTOR_HEAP_FLAGS
4053 {
4054 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
4055 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
4056 } D3D12_DESCRIPTOR_HEAP_FLAGS;
4057
4058DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
4059typedef struct D3D12_DESCRIPTOR_HEAP_DESC
4060 {
4061 D3D12_DESCRIPTOR_HEAP_TYPE Type;
4062 UINT NumDescriptors;
4063 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
4064 UINT NodeMask;
4065 } D3D12_DESCRIPTOR_HEAP_DESC;
4066
4067typedef
4068enum D3D12_DESCRIPTOR_RANGE_TYPE
4069 {
4070 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
4071 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
4072 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
4073 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
4074 } D3D12_DESCRIPTOR_RANGE_TYPE;
4075
4076typedef struct D3D12_DESCRIPTOR_RANGE
4077 {
4078 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4079 UINT NumDescriptors;
4080 UINT BaseShaderRegister;
4081 UINT RegisterSpace;
4082 UINT OffsetInDescriptorsFromTableStart;
4083 } D3D12_DESCRIPTOR_RANGE;
4084
4085typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
4086 {
4087 UINT NumDescriptorRanges;
4088 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
4089 } D3D12_ROOT_DESCRIPTOR_TABLE;
4090
4091typedef struct D3D12_ROOT_CONSTANTS
4092 {
4093 UINT ShaderRegister;
4094 UINT RegisterSpace;
4095 UINT Num32BitValues;
4096 } D3D12_ROOT_CONSTANTS;
4097
4098typedef struct D3D12_ROOT_DESCRIPTOR
4099 {
4100 UINT ShaderRegister;
4101 UINT RegisterSpace;
4102 } D3D12_ROOT_DESCRIPTOR;
4103
4104typedef
4105enum D3D12_SHADER_VISIBILITY
4106 {
4107 D3D12_SHADER_VISIBILITY_ALL = 0,
4108 D3D12_SHADER_VISIBILITY_VERTEX = 1,
4109 D3D12_SHADER_VISIBILITY_HULL = 2,
4110 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
4111 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
4112 D3D12_SHADER_VISIBILITY_PIXEL = 5,
4113 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
4114 D3D12_SHADER_VISIBILITY_MESH = 7
4115 } D3D12_SHADER_VISIBILITY;
4116
4117typedef
4118enum D3D12_ROOT_PARAMETER_TYPE
4119 {
4120 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
4121 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
4122 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
4123 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
4124 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
4125 } D3D12_ROOT_PARAMETER_TYPE;
4126
4127typedef struct D3D12_ROOT_PARAMETER
4128 {
4129 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4130 union
4131 {
4132 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
4133 D3D12_ROOT_CONSTANTS Constants;
4134 D3D12_ROOT_DESCRIPTOR Descriptor;
4135 } ;
4136 D3D12_SHADER_VISIBILITY ShaderVisibility;
4137 } D3D12_ROOT_PARAMETER;
4138
4139typedef
4140enum D3D12_ROOT_SIGNATURE_FLAGS
4141 {
4142 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
4143 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
4144 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
4145 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
4146 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
4147 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
4148 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
4149 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
4150 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
4151 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
4152 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
4153 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
4154 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
4155 } D3D12_ROOT_SIGNATURE_FLAGS;
4156
4157DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
4158typedef
4159enum D3D12_STATIC_BORDER_COLOR
4160 {
4161 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
4162 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
4163 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) ,
4164 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE + 1 ) ,
4165 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT + 1 )
4166 } D3D12_STATIC_BORDER_COLOR;
4167
4168typedef struct D3D12_STATIC_SAMPLER_DESC
4169 {
4170 D3D12_FILTER Filter;
4171 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4172 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4173 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4174 FLOAT MipLODBias;
4175 UINT MaxAnisotropy;
4176 D3D12_COMPARISON_FUNC ComparisonFunc;
4177 D3D12_STATIC_BORDER_COLOR BorderColor;
4178 FLOAT MinLOD;
4179 FLOAT MaxLOD;
4180 UINT ShaderRegister;
4181 UINT RegisterSpace;
4182 D3D12_SHADER_VISIBILITY ShaderVisibility;
4183 } D3D12_STATIC_SAMPLER_DESC;
4184
4185typedef struct D3D12_STATIC_SAMPLER_DESC1
4186 {
4187 D3D12_FILTER Filter;
4188 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4189 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4190 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4191 FLOAT MipLODBias;
4192 UINT MaxAnisotropy;
4193 D3D12_COMPARISON_FUNC ComparisonFunc;
4194 D3D12_STATIC_BORDER_COLOR BorderColor;
4195 FLOAT MinLOD;
4196 FLOAT MaxLOD;
4197 UINT ShaderRegister;
4198 UINT RegisterSpace;
4199 D3D12_SHADER_VISIBILITY ShaderVisibility;
4200 D3D12_SAMPLER_FLAGS Flags;
4201 } D3D12_STATIC_SAMPLER_DESC1;
4202
4203typedef struct D3D12_ROOT_SIGNATURE_DESC
4204 {
4205 UINT NumParameters;
4206 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
4207 UINT NumStaticSamplers;
4208 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4209 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4210 } D3D12_ROOT_SIGNATURE_DESC;
4211
4212typedef
4213enum D3D12_DESCRIPTOR_RANGE_FLAGS
4214 {
4215 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
4216 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
4217 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
4218 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4219 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
4220 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
4221 } D3D12_DESCRIPTOR_RANGE_FLAGS;
4222
4223DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
4224typedef struct D3D12_DESCRIPTOR_RANGE1
4225 {
4226 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4227 UINT NumDescriptors;
4228 UINT BaseShaderRegister;
4229 UINT RegisterSpace;
4230 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
4231 UINT OffsetInDescriptorsFromTableStart;
4232 } D3D12_DESCRIPTOR_RANGE1;
4233
4234typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
4235 {
4236 UINT NumDescriptorRanges;
4237 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
4238 } D3D12_ROOT_DESCRIPTOR_TABLE1;
4239
4240typedef
4241enum D3D12_ROOT_DESCRIPTOR_FLAGS
4242 {
4243 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
4244 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
4245 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4246 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
4247 } D3D12_ROOT_DESCRIPTOR_FLAGS;
4248
4249DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
4250typedef struct D3D12_ROOT_DESCRIPTOR1
4251 {
4252 UINT ShaderRegister;
4253 UINT RegisterSpace;
4254 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
4255 } D3D12_ROOT_DESCRIPTOR1;
4256
4257typedef struct D3D12_ROOT_PARAMETER1
4258 {
4259 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4260 union
4261 {
4262 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
4263 D3D12_ROOT_CONSTANTS Constants;
4264 D3D12_ROOT_DESCRIPTOR1 Descriptor;
4265 } ;
4266 D3D12_SHADER_VISIBILITY ShaderVisibility;
4267 } D3D12_ROOT_PARAMETER1;
4268
4269typedef struct D3D12_ROOT_SIGNATURE_DESC1
4270 {
4271 UINT NumParameters;
4272 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4273 UINT NumStaticSamplers;
4274 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4275 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4276 } D3D12_ROOT_SIGNATURE_DESC1;
4277
4278typedef struct D3D12_ROOT_SIGNATURE_DESC2
4279 {
4280 UINT NumParameters;
4281 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4282 UINT NumStaticSamplers;
4283 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1 *pStaticSamplers;
4284 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4285 } D3D12_ROOT_SIGNATURE_DESC2;
4286
4287typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
4288 {
4289 D3D_ROOT_SIGNATURE_VERSION Version;
4290 union
4291 {
4292 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
4293 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
4294 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
4295 } ;
4296 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
4297
4298
4299
4300extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
4301extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
4302
4303#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4304#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4305
4306/* interface ID3D12RootSignatureDeserializer */
4307/* [unique][local][object][uuid] */
4308
4309
4310EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
4311
4312#if defined(__cplusplus) && !defined(CINTERFACE)
4313
4314 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
4315 ID3D12RootSignatureDeserializer : public IUnknown
4316 {
4317 public:
4318 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
4319
4320 };
4321
4322
4323#else /* C style interface */
4324
4325 typedef struct ID3D12RootSignatureDeserializerVtbl
4326 {
4327 BEGIN_INTERFACE
4328
4329 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4330 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4331 ID3D12RootSignatureDeserializer * This,
4332 REFIID riid,
4333 _COM_Outptr_ void **ppvObject);
4334
4335 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4336 ULONG ( STDMETHODCALLTYPE *AddRef )(
4337 ID3D12RootSignatureDeserializer * This);
4338
4339 DECLSPEC_XFGVIRT(IUnknown, Release)
4340 ULONG ( STDMETHODCALLTYPE *Release )(
4341 ID3D12RootSignatureDeserializer * This);
4342
4343 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
4344 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
4345 ID3D12RootSignatureDeserializer * This);
4346
4347 END_INTERFACE
4348 } ID3D12RootSignatureDeserializerVtbl;
4349
4350 interface ID3D12RootSignatureDeserializer
4351 {
4352 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
4353 };
4354
4355
4356
4357#ifdef COBJMACROS
4358
4359
4360#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4361 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4362
4363#define ID3D12RootSignatureDeserializer_AddRef(This) \
4364 ( (This)->lpVtbl -> AddRef(This) )
4365
4366#define ID3D12RootSignatureDeserializer_Release(This) \
4367 ( (This)->lpVtbl -> Release(This) )
4368
4369
4370#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
4371 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
4372
4373#endif /* COBJMACROS */
4374
4375
4376#endif /* C style interface */
4377
4378
4379
4380
4381#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
4382
4383
4384#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4385#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4386
4387/* interface ID3D12VersionedRootSignatureDeserializer */
4388/* [unique][local][object][uuid] */
4389
4390
4391EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
4392
4393#if defined(__cplusplus) && !defined(CINTERFACE)
4394
4395 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
4396 ID3D12VersionedRootSignatureDeserializer : public IUnknown
4397 {
4398 public:
4399 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
4400 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4401 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
4402
4403 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
4404
4405 };
4406
4407
4408#else /* C style interface */
4409
4410 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
4411 {
4412 BEGIN_INTERFACE
4413
4414 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4415 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4416 ID3D12VersionedRootSignatureDeserializer * This,
4417 REFIID riid,
4418 _COM_Outptr_ void **ppvObject);
4419
4420 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4421 ULONG ( STDMETHODCALLTYPE *AddRef )(
4422 ID3D12VersionedRootSignatureDeserializer * This);
4423
4424 DECLSPEC_XFGVIRT(IUnknown, Release)
4425 ULONG ( STDMETHODCALLTYPE *Release )(
4426 ID3D12VersionedRootSignatureDeserializer * This);
4427
4428 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
4429 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
4430 ID3D12VersionedRootSignatureDeserializer * This,
4431 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4432 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
4433
4434 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
4435 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
4436 ID3D12VersionedRootSignatureDeserializer * This);
4437
4438 END_INTERFACE
4439 } ID3D12VersionedRootSignatureDeserializerVtbl;
4440
4441 interface ID3D12VersionedRootSignatureDeserializer
4442 {
4443 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
4444 };
4445
4446
4447
4448#ifdef COBJMACROS
4449
4450
4451#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4452 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4453
4454#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
4455 ( (This)->lpVtbl -> AddRef(This) )
4456
4457#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
4458 ( (This)->lpVtbl -> Release(This) )
4459
4460
4461#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
4462 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
4463
4464#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
4465 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
4466
4467#endif /* COBJMACROS */
4468
4469
4470#endif /* C style interface */
4471
4472
4473
4474
4475#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
4476
4477
4478/* interface __MIDL_itf_d3d12_0000_0003 */
4479/* [local] */
4480
4481typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
4482 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4483 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4484 _Out_ ID3DBlob** ppBlob,
4485 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4486
4487HRESULT WINAPI D3D12SerializeRootSignature(
4488 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4489 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4490 _Out_ ID3DBlob** ppBlob,
4491 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4492
4493typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
4494 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4495 _In_ SIZE_T SrcDataSizeInBytes,
4496 _In_ REFIID pRootSignatureDeserializerInterface,
4497 _Out_ void** ppRootSignatureDeserializer);
4498
4499HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
4500 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4501 _In_ SIZE_T SrcDataSizeInBytes,
4502 _In_ REFIID pRootSignatureDeserializerInterface,
4503 _Out_ void** ppRootSignatureDeserializer);
4504
4505typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
4506 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4507 _Out_ ID3DBlob** ppBlob,
4508 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4509
4510HRESULT WINAPI D3D12SerializeVersionedRootSignature(
4511 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4512 _Out_ ID3DBlob** ppBlob,
4513 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4514
4515typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
4516 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4517 _In_ SIZE_T SrcDataSizeInBytes,
4518 _In_ REFIID pRootSignatureDeserializerInterface,
4519 _Out_ void** ppRootSignatureDeserializer);
4520
4521HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
4522 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4523 _In_ SIZE_T SrcDataSizeInBytes,
4524 _In_ REFIID pRootSignatureDeserializerInterface,
4525 _Out_ void** ppRootSignatureDeserializer);
4526
4527typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
4528 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4529 _In_ SIZE_T SrcDataSizeInBytes,
4530 _In_ LPCWSTR RootSignatureSubobjectName,
4531 _In_ REFIID pRootSignatureDeserializerInterface,
4532 _Out_ void** ppRootSignatureDeserializer);
4533
4534HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
4535 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4536 _In_ SIZE_T SrcDataSizeInBytes,
4537 _In_opt_ LPCWSTR RootSignatureSubobjectName,
4538 _In_ REFIID pRootSignatureDeserializerInterface,
4539 _Out_ void** ppRootSignatureDeserializer);
4540
4541typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
4542 {
4543 SIZE_T ptr;
4544 } D3D12_CPU_DESCRIPTOR_HANDLE;
4545
4546typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
4547 {
4548 UINT64 ptr;
4549 } D3D12_GPU_DESCRIPTOR_HANDLE;
4550
4551// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
4552// must have 2D subresources with all specified subresources the same dimension.
4553typedef struct D3D12_DISCARD_REGION
4554 {
4555 UINT NumRects;
4556 _In_reads_(NumRects) const D3D12_RECT *pRects;
4557 UINT FirstSubresource;
4558 UINT NumSubresources;
4559 } D3D12_DISCARD_REGION;
4560
4561typedef
4562enum D3D12_QUERY_HEAP_TYPE
4563 {
4564 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
4565 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
4566 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
4567 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
4568 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
4569 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
4570 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
4571 } D3D12_QUERY_HEAP_TYPE;
4572
4573typedef struct D3D12_QUERY_HEAP_DESC
4574 {
4575 D3D12_QUERY_HEAP_TYPE Type;
4576 UINT Count;
4577 UINT NodeMask;
4578 } D3D12_QUERY_HEAP_DESC;
4579
4580typedef
4581enum D3D12_QUERY_TYPE
4582 {
4583 D3D12_QUERY_TYPE_OCCLUSION = 0,
4584 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
4585 D3D12_QUERY_TYPE_TIMESTAMP = 2,
4586 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
4587 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
4588 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
4589 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
4590 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
4591 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
4592 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
4593 } D3D12_QUERY_TYPE;
4594
4595typedef
4596enum D3D12_PREDICATION_OP
4597 {
4598 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
4599 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
4600 } D3D12_PREDICATION_OP;
4601
4602typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
4603 {
4604 UINT64 IAVertices;
4605 UINT64 IAPrimitives;
4606 UINT64 VSInvocations;
4607 UINT64 GSInvocations;
4608 UINT64 GSPrimitives;
4609 UINT64 CInvocations;
4610 UINT64 CPrimitives;
4611 UINT64 PSInvocations;
4612 UINT64 HSInvocations;
4613 UINT64 DSInvocations;
4614 UINT64 CSInvocations;
4615 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4616
4617typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4618 {
4619 UINT64 IAVertices;
4620 UINT64 IAPrimitives;
4621 UINT64 VSInvocations;
4622 UINT64 GSInvocations;
4623 UINT64 GSPrimitives;
4624 UINT64 CInvocations;
4625 UINT64 CPrimitives;
4626 UINT64 PSInvocations;
4627 UINT64 HSInvocations;
4628 UINT64 DSInvocations;
4629 UINT64 CSInvocations;
4630 UINT64 ASInvocations;
4631 UINT64 MSInvocations;
4632 UINT64 MSPrimitives;
4633 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4634
4635typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4636 {
4637 UINT64 NumPrimitivesWritten;
4638 UINT64 PrimitivesStorageNeeded;
4639 } D3D12_QUERY_DATA_SO_STATISTICS;
4640
4641typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4642 {
4643 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4644 UINT64 SizeInBytes;
4645 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4646 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4647
4648typedef struct D3D12_DRAW_ARGUMENTS
4649 {
4650 UINT VertexCountPerInstance;
4651 UINT InstanceCount;
4652 UINT StartVertexLocation;
4653 UINT StartInstanceLocation;
4654 } D3D12_DRAW_ARGUMENTS;
4655
4656typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4657 {
4658 UINT IndexCountPerInstance;
4659 UINT InstanceCount;
4660 UINT StartIndexLocation;
4661 INT BaseVertexLocation;
4662 UINT StartInstanceLocation;
4663 } D3D12_DRAW_INDEXED_ARGUMENTS;
4664
4665typedef struct D3D12_DISPATCH_ARGUMENTS
4666 {
4667 UINT ThreadGroupCountX;
4668 UINT ThreadGroupCountY;
4669 UINT ThreadGroupCountZ;
4670 } D3D12_DISPATCH_ARGUMENTS;
4671
4672typedef struct D3D12_VERTEX_BUFFER_VIEW
4673 {
4674 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4675 UINT SizeInBytes;
4676 UINT StrideInBytes;
4677 } D3D12_VERTEX_BUFFER_VIEW;
4678
4679typedef struct D3D12_INDEX_BUFFER_VIEW
4680 {
4681 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4682 UINT SizeInBytes;
4683 DXGI_FORMAT Format;
4684 } D3D12_INDEX_BUFFER_VIEW;
4685
4686typedef
4687enum D3D12_INDIRECT_ARGUMENT_TYPE
4688 {
4689 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4690 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4691 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4692 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4693 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4694 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4695 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4696 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4697 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4698 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4699 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
4700 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
4701 } D3D12_INDIRECT_ARGUMENT_TYPE;
4702
4703typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4704 {
4705 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4706 union
4707 {
4708 struct
4709 {
4710 UINT Slot;
4711 } VertexBuffer;
4712 struct
4713 {
4714 UINT RootParameterIndex;
4715 UINT DestOffsetIn32BitValues;
4716 UINT Num32BitValuesToSet;
4717 } Constant;
4718 struct
4719 {
4720 UINT RootParameterIndex;
4721 } ConstantBufferView;
4722 struct
4723 {
4724 UINT RootParameterIndex;
4725 } ShaderResourceView;
4726 struct
4727 {
4728 UINT RootParameterIndex;
4729 } UnorderedAccessView;
4730 struct
4731 {
4732 UINT RootParameterIndex;
4733 UINT DestOffsetIn32BitValues;
4734 } IncrementingConstant;
4735 } ;
4736 } D3D12_INDIRECT_ARGUMENT_DESC;
4737
4738typedef struct D3D12_COMMAND_SIGNATURE_DESC
4739 {
4740 UINT ByteStride;
4741 UINT NumArgumentDescs;
4742 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4743 UINT NodeMask;
4744 } D3D12_COMMAND_SIGNATURE_DESC;
4745
4746
4747
4748
4749extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4750extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4751
4752#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4753#define __ID3D12Pageable_INTERFACE_DEFINED__
4754
4755/* interface ID3D12Pageable */
4756/* [unique][local][object][uuid] */
4757
4758
4759EXTERN_C const IID IID_ID3D12Pageable;
4760
4761#if defined(__cplusplus) && !defined(CINTERFACE)
4762
4763 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4764 ID3D12Pageable : public ID3D12DeviceChild
4765 {
4766 public:
4767 };
4768
4769
4770#else /* C style interface */
4771
4772 typedef struct ID3D12PageableVtbl
4773 {
4774 BEGIN_INTERFACE
4775
4776 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4777 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4778 ID3D12Pageable * This,
4779 REFIID riid,
4780 _COM_Outptr_ void **ppvObject);
4781
4782 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4783 ULONG ( STDMETHODCALLTYPE *AddRef )(
4784 ID3D12Pageable * This);
4785
4786 DECLSPEC_XFGVIRT(IUnknown, Release)
4787 ULONG ( STDMETHODCALLTYPE *Release )(
4788 ID3D12Pageable * This);
4789
4790 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4791 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4792 ID3D12Pageable * This,
4793 _In_ REFGUID guid,
4794 _Inout_ UINT *pDataSize,
4795 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4796
4797 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4798 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4799 ID3D12Pageable * This,
4800 _In_ REFGUID guid,
4801 _In_ UINT DataSize,
4802 _In_reads_bytes_opt_( DataSize ) const void *pData);
4803
4804 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4805 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4806 ID3D12Pageable * This,
4807 _In_ REFGUID guid,
4808 _In_opt_ const IUnknown *pData);
4809
4810 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4811 HRESULT ( STDMETHODCALLTYPE *SetName )(
4812 ID3D12Pageable * This,
4813 _In_z_ LPCWSTR Name);
4814
4815 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4816 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4817 ID3D12Pageable * This,
4818 REFIID riid,
4819 _COM_Outptr_opt_ void **ppvDevice);
4820
4821 END_INTERFACE
4822 } ID3D12PageableVtbl;
4823
4824 interface ID3D12Pageable
4825 {
4826 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4827 };
4828
4829
4830
4831#ifdef COBJMACROS
4832
4833
4834#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4835 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4836
4837#define ID3D12Pageable_AddRef(This) \
4838 ( (This)->lpVtbl -> AddRef(This) )
4839
4840#define ID3D12Pageable_Release(This) \
4841 ( (This)->lpVtbl -> Release(This) )
4842
4843
4844#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4845 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4846
4847#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4848 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4849
4850#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4851 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4852
4853#define ID3D12Pageable_SetName(This,Name) \
4854 ( (This)->lpVtbl -> SetName(This,Name) )
4855
4856
4857#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4858 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4859
4860
4861#endif /* COBJMACROS */
4862
4863
4864#endif /* C style interface */
4865
4866
4867
4868
4869#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4870
4871
4872#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4873#define __ID3D12Heap_INTERFACE_DEFINED__
4874
4875/* interface ID3D12Heap */
4876/* [unique][local][object][uuid] */
4877
4878
4879EXTERN_C const IID IID_ID3D12Heap;
4880
4881#if defined(__cplusplus) && !defined(CINTERFACE)
4882
4883 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4884 ID3D12Heap : public ID3D12Pageable
4885 {
4886 public:
4887#if defined(_MSC_VER) || !defined(_WIN32)
4888 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4889#else
4890 virtual D3D12_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
4891 D3D12_HEAP_DESC * RetVal) = 0;
4892#endif
4893
4894 };
4895
4896
4897#else /* C style interface */
4898
4899 typedef struct ID3D12HeapVtbl
4900 {
4901 BEGIN_INTERFACE
4902
4903 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4904 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4905 ID3D12Heap * This,
4906 REFIID riid,
4907 _COM_Outptr_ void **ppvObject);
4908
4909 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4910 ULONG ( STDMETHODCALLTYPE *AddRef )(
4911 ID3D12Heap * This);
4912
4913 DECLSPEC_XFGVIRT(IUnknown, Release)
4914 ULONG ( STDMETHODCALLTYPE *Release )(
4915 ID3D12Heap * This);
4916
4917 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4918 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4919 ID3D12Heap * This,
4920 _In_ REFGUID guid,
4921 _Inout_ UINT *pDataSize,
4922 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4923
4924 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4925 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4926 ID3D12Heap * This,
4927 _In_ REFGUID guid,
4928 _In_ UINT DataSize,
4929 _In_reads_bytes_opt_( DataSize ) const void *pData);
4930
4931 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4932 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4933 ID3D12Heap * This,
4934 _In_ REFGUID guid,
4935 _In_opt_ const IUnknown *pData);
4936
4937 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4938 HRESULT ( STDMETHODCALLTYPE *SetName )(
4939 ID3D12Heap * This,
4940 _In_z_ LPCWSTR Name);
4941
4942 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4943 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4944 ID3D12Heap * This,
4945 REFIID riid,
4946 _COM_Outptr_opt_ void **ppvDevice);
4947
4948 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4949#if !defined(_WIN32)
4950 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4951 ID3D12Heap * This);
4952
4953#else
4954 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4955 ID3D12Heap * This,
4956 D3D12_HEAP_DESC * RetVal);
4957
4958#endif
4959
4960 END_INTERFACE
4961 } ID3D12HeapVtbl;
4962
4963 interface ID3D12Heap
4964 {
4965 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4966 };
4967
4968
4969
4970#ifdef COBJMACROS
4971
4972
4973#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4974 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4975
4976#define ID3D12Heap_AddRef(This) \
4977 ( (This)->lpVtbl -> AddRef(This) )
4978
4979#define ID3D12Heap_Release(This) \
4980 ( (This)->lpVtbl -> Release(This) )
4981
4982
4983#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4984 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4985
4986#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4987 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4988
4989#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4990 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4991
4992#define ID3D12Heap_SetName(This,Name) \
4993 ( (This)->lpVtbl -> SetName(This,Name) )
4994
4995
4996#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4997 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4998
4999
5000#if !defined(_WIN32)
5001
5002#define ID3D12Heap_GetDesc(This) \
5003 ( (This)->lpVtbl -> GetDesc(This) )
5004#else
5005#define ID3D12Heap_GetDesc(This,RetVal) \
5006 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5007#endif
5008
5009#endif /* COBJMACROS */
5010
5011
5012#endif /* C style interface */
5013
5014
5015
5016
5017#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
5018
5019
5020#ifndef __ID3D12Resource_INTERFACE_DEFINED__
5021#define __ID3D12Resource_INTERFACE_DEFINED__
5022
5023/* interface ID3D12Resource */
5024/* [unique][local][object][uuid] */
5025
5026
5027EXTERN_C const IID IID_ID3D12Resource;
5028
5029#if defined(__cplusplus) && !defined(CINTERFACE)
5030
5031 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
5032 ID3D12Resource : public ID3D12Pageable
5033 {
5034 public:
5035 virtual HRESULT STDMETHODCALLTYPE Map(
5036 UINT Subresource,
5037 _In_opt_ const D3D12_RANGE *pReadRange,
5038 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
5039
5040 virtual void STDMETHODCALLTYPE Unmap(
5041 UINT Subresource,
5042 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
5043
5044#if defined(_MSC_VER) || !defined(_WIN32)
5045 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5046#else
5047 virtual D3D12_RESOURCE_DESC *STDMETHODCALLTYPE GetDesc(
5048 D3D12_RESOURCE_DESC * RetVal) = 0;
5049#endif
5050
5051 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
5052
5053 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
5054 UINT DstSubresource,
5055 _In_opt_ const D3D12_BOX *pDstBox,
5056 _In_ const void *pSrcData,
5057 UINT SrcRowPitch,
5058 UINT SrcDepthPitch) = 0;
5059
5060 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
5061 _Out_ void *pDstData,
5062 UINT DstRowPitch,
5063 UINT DstDepthPitch,
5064 UINT SrcSubresource,
5065 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5066
5067 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
5068 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5069 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
5070
5071 };
5072
5073
5074#else /* C style interface */
5075
5076 typedef struct ID3D12ResourceVtbl
5077 {
5078 BEGIN_INTERFACE
5079
5080 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5081 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5082 ID3D12Resource * This,
5083 REFIID riid,
5084 _COM_Outptr_ void **ppvObject);
5085
5086 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5087 ULONG ( STDMETHODCALLTYPE *AddRef )(
5088 ID3D12Resource * This);
5089
5090 DECLSPEC_XFGVIRT(IUnknown, Release)
5091 ULONG ( STDMETHODCALLTYPE *Release )(
5092 ID3D12Resource * This);
5093
5094 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5095 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5096 ID3D12Resource * This,
5097 _In_ REFGUID guid,
5098 _Inout_ UINT *pDataSize,
5099 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5100
5101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5102 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5103 ID3D12Resource * This,
5104 _In_ REFGUID guid,
5105 _In_ UINT DataSize,
5106 _In_reads_bytes_opt_( DataSize ) const void *pData);
5107
5108 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5109 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5110 ID3D12Resource * This,
5111 _In_ REFGUID guid,
5112 _In_opt_ const IUnknown *pData);
5113
5114 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5115 HRESULT ( STDMETHODCALLTYPE *SetName )(
5116 ID3D12Resource * This,
5117 _In_z_ LPCWSTR Name);
5118
5119 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5120 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5121 ID3D12Resource * This,
5122 REFIID riid,
5123 _COM_Outptr_opt_ void **ppvDevice);
5124
5125 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
5126 HRESULT ( STDMETHODCALLTYPE *Map )(
5127 ID3D12Resource * This,
5128 UINT Subresource,
5129 _In_opt_ const D3D12_RANGE *pReadRange,
5130 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
5131
5132 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
5133 void ( STDMETHODCALLTYPE *Unmap )(
5134 ID3D12Resource * This,
5135 UINT Subresource,
5136 _In_opt_ const D3D12_RANGE *pWrittenRange);
5137
5138 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
5139#if !defined(_WIN32)
5140 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
5141 ID3D12Resource * This);
5142
5143#else
5144 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
5145 ID3D12Resource * This,
5146 D3D12_RESOURCE_DESC * RetVal);
5147
5148#endif
5149
5150 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
5151 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
5152 ID3D12Resource * This);
5153
5154 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
5155 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
5156 ID3D12Resource * This,
5157 UINT DstSubresource,
5158 _In_opt_ const D3D12_BOX *pDstBox,
5159 _In_ const void *pSrcData,
5160 UINT SrcRowPitch,
5161 UINT SrcDepthPitch);
5162
5163 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
5164 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
5165 ID3D12Resource * This,
5166 _Out_ void *pDstData,
5167 UINT DstRowPitch,
5168 UINT DstDepthPitch,
5169 UINT SrcSubresource,
5170 _In_opt_ const D3D12_BOX *pSrcBox);
5171
5172 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
5173 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
5174 ID3D12Resource * This,
5175 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5176 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
5177
5178 END_INTERFACE
5179 } ID3D12ResourceVtbl;
5180
5181 interface ID3D12Resource
5182 {
5183 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
5184 };
5185
5186
5187
5188#ifdef COBJMACROS
5189
5190
5191#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
5192 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5193
5194#define ID3D12Resource_AddRef(This) \
5195 ( (This)->lpVtbl -> AddRef(This) )
5196
5197#define ID3D12Resource_Release(This) \
5198 ( (This)->lpVtbl -> Release(This) )
5199
5200
5201#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
5202 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5203
5204#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
5205 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5206
5207#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
5208 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5209
5210#define ID3D12Resource_SetName(This,Name) \
5211 ( (This)->lpVtbl -> SetName(This,Name) )
5212
5213
5214#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
5215 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5216
5217
5218
5219#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
5220 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
5221
5222#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
5223 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
5224#if !defined(_WIN32)
5225
5226#define ID3D12Resource_GetDesc(This) \
5227 ( (This)->lpVtbl -> GetDesc(This) )
5228#else
5229#define ID3D12Resource_GetDesc(This,RetVal) \
5230 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5231#endif
5232
5233#define ID3D12Resource_GetGPUVirtualAddress(This) \
5234 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
5235
5236#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
5237 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
5238
5239#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
5240 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
5241
5242#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
5243 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
5244
5245#endif /* COBJMACROS */
5246
5247
5248#endif /* C style interface */
5249
5250
5251
5252
5253#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
5254
5255
5256#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
5257#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
5258
5259/* interface ID3D12CommandAllocator */
5260/* [unique][local][object][uuid] */
5261
5262
5263EXTERN_C const IID IID_ID3D12CommandAllocator;
5264
5265#if defined(__cplusplus) && !defined(CINTERFACE)
5266
5267 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
5268 ID3D12CommandAllocator : public ID3D12Pageable
5269 {
5270 public:
5271 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
5272
5273 };
5274
5275
5276#else /* C style interface */
5277
5278 typedef struct ID3D12CommandAllocatorVtbl
5279 {
5280 BEGIN_INTERFACE
5281
5282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5284 ID3D12CommandAllocator * This,
5285 REFIID riid,
5286 _COM_Outptr_ void **ppvObject);
5287
5288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5289 ULONG ( STDMETHODCALLTYPE *AddRef )(
5290 ID3D12CommandAllocator * This);
5291
5292 DECLSPEC_XFGVIRT(IUnknown, Release)
5293 ULONG ( STDMETHODCALLTYPE *Release )(
5294 ID3D12CommandAllocator * This);
5295
5296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5298 ID3D12CommandAllocator * This,
5299 _In_ REFGUID guid,
5300 _Inout_ UINT *pDataSize,
5301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5302
5303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5305 ID3D12CommandAllocator * This,
5306 _In_ REFGUID guid,
5307 _In_ UINT DataSize,
5308 _In_reads_bytes_opt_( DataSize ) const void *pData);
5309
5310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5312 ID3D12CommandAllocator * This,
5313 _In_ REFGUID guid,
5314 _In_opt_ const IUnknown *pData);
5315
5316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5317 HRESULT ( STDMETHODCALLTYPE *SetName )(
5318 ID3D12CommandAllocator * This,
5319 _In_z_ LPCWSTR Name);
5320
5321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5323 ID3D12CommandAllocator * This,
5324 REFIID riid,
5325 _COM_Outptr_opt_ void **ppvDevice);
5326
5327 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
5328 HRESULT ( STDMETHODCALLTYPE *Reset )(
5329 ID3D12CommandAllocator * This);
5330
5331 END_INTERFACE
5332 } ID3D12CommandAllocatorVtbl;
5333
5334 interface ID3D12CommandAllocator
5335 {
5336 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
5337 };
5338
5339
5340
5341#ifdef COBJMACROS
5342
5343
5344#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
5345 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5346
5347#define ID3D12CommandAllocator_AddRef(This) \
5348 ( (This)->lpVtbl -> AddRef(This) )
5349
5350#define ID3D12CommandAllocator_Release(This) \
5351 ( (This)->lpVtbl -> Release(This) )
5352
5353
5354#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
5355 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5356
5357#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
5358 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5359
5360#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
5361 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5362
5363#define ID3D12CommandAllocator_SetName(This,Name) \
5364 ( (This)->lpVtbl -> SetName(This,Name) )
5365
5366
5367#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
5368 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5369
5370
5371
5372#define ID3D12CommandAllocator_Reset(This) \
5373 ( (This)->lpVtbl -> Reset(This) )
5374
5375#endif /* COBJMACROS */
5376
5377
5378#endif /* C style interface */
5379
5380
5381
5382
5383#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
5384
5385
5386#ifndef __ID3D12Fence_INTERFACE_DEFINED__
5387#define __ID3D12Fence_INTERFACE_DEFINED__
5388
5389/* interface ID3D12Fence */
5390/* [unique][local][object][uuid] */
5391
5392
5393EXTERN_C const IID IID_ID3D12Fence;
5394
5395#if defined(__cplusplus) && !defined(CINTERFACE)
5396
5397 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
5398 ID3D12Fence : public ID3D12Pageable
5399 {
5400 public:
5401 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
5402
5403 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
5404 UINT64 Value,
5405 HANDLE hEvent) = 0;
5406
5407 virtual HRESULT STDMETHODCALLTYPE Signal(
5408 UINT64 Value) = 0;
5409
5410 };
5411
5412
5413#else /* C style interface */
5414
5415 typedef struct ID3D12FenceVtbl
5416 {
5417 BEGIN_INTERFACE
5418
5419 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5420 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5421 ID3D12Fence * This,
5422 REFIID riid,
5423 _COM_Outptr_ void **ppvObject);
5424
5425 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5426 ULONG ( STDMETHODCALLTYPE *AddRef )(
5427 ID3D12Fence * This);
5428
5429 DECLSPEC_XFGVIRT(IUnknown, Release)
5430 ULONG ( STDMETHODCALLTYPE *Release )(
5431 ID3D12Fence * This);
5432
5433 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5434 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5435 ID3D12Fence * This,
5436 _In_ REFGUID guid,
5437 _Inout_ UINT *pDataSize,
5438 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5439
5440 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5441 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5442 ID3D12Fence * This,
5443 _In_ REFGUID guid,
5444 _In_ UINT DataSize,
5445 _In_reads_bytes_opt_( DataSize ) const void *pData);
5446
5447 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5448 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5449 ID3D12Fence * This,
5450 _In_ REFGUID guid,
5451 _In_opt_ const IUnknown *pData);
5452
5453 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5454 HRESULT ( STDMETHODCALLTYPE *SetName )(
5455 ID3D12Fence * This,
5456 _In_z_ LPCWSTR Name);
5457
5458 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5459 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5460 ID3D12Fence * This,
5461 REFIID riid,
5462 _COM_Outptr_opt_ void **ppvDevice);
5463
5464 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5465 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5466 ID3D12Fence * This);
5467
5468 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5469 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5470 ID3D12Fence * This,
5471 UINT64 Value,
5472 HANDLE hEvent);
5473
5474 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5475 HRESULT ( STDMETHODCALLTYPE *Signal )(
5476 ID3D12Fence * This,
5477 UINT64 Value);
5478
5479 END_INTERFACE
5480 } ID3D12FenceVtbl;
5481
5482 interface ID3D12Fence
5483 {
5484 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
5485 };
5486
5487
5488
5489#ifdef COBJMACROS
5490
5491
5492#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
5493 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5494
5495#define ID3D12Fence_AddRef(This) \
5496 ( (This)->lpVtbl -> AddRef(This) )
5497
5498#define ID3D12Fence_Release(This) \
5499 ( (This)->lpVtbl -> Release(This) )
5500
5501
5502#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
5503 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5504
5505#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
5506 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5507
5508#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
5509 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5510
5511#define ID3D12Fence_SetName(This,Name) \
5512 ( (This)->lpVtbl -> SetName(This,Name) )
5513
5514
5515#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
5516 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5517
5518
5519
5520#define ID3D12Fence_GetCompletedValue(This) \
5521 ( (This)->lpVtbl -> GetCompletedValue(This) )
5522
5523#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
5524 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5525
5526#define ID3D12Fence_Signal(This,Value) \
5527 ( (This)->lpVtbl -> Signal(This,Value) )
5528
5529#endif /* COBJMACROS */
5530
5531
5532#endif /* C style interface */
5533
5534
5535
5536
5537#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
5538
5539
5540#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
5541#define __ID3D12Fence1_INTERFACE_DEFINED__
5542
5543/* interface ID3D12Fence1 */
5544/* [unique][local][object][uuid] */
5545
5546
5547EXTERN_C const IID IID_ID3D12Fence1;
5548
5549#if defined(__cplusplus) && !defined(CINTERFACE)
5550
5551 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
5552 ID3D12Fence1 : public ID3D12Fence
5553 {
5554 public:
5555 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
5556
5557 };
5558
5559
5560#else /* C style interface */
5561
5562 typedef struct ID3D12Fence1Vtbl
5563 {
5564 BEGIN_INTERFACE
5565
5566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5568 ID3D12Fence1 * This,
5569 REFIID riid,
5570 _COM_Outptr_ void **ppvObject);
5571
5572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5573 ULONG ( STDMETHODCALLTYPE *AddRef )(
5574 ID3D12Fence1 * This);
5575
5576 DECLSPEC_XFGVIRT(IUnknown, Release)
5577 ULONG ( STDMETHODCALLTYPE *Release )(
5578 ID3D12Fence1 * This);
5579
5580 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5581 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5582 ID3D12Fence1 * This,
5583 _In_ REFGUID guid,
5584 _Inout_ UINT *pDataSize,
5585 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5586
5587 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5588 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5589 ID3D12Fence1 * This,
5590 _In_ REFGUID guid,
5591 _In_ UINT DataSize,
5592 _In_reads_bytes_opt_( DataSize ) const void *pData);
5593
5594 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5595 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5596 ID3D12Fence1 * This,
5597 _In_ REFGUID guid,
5598 _In_opt_ const IUnknown *pData);
5599
5600 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5601 HRESULT ( STDMETHODCALLTYPE *SetName )(
5602 ID3D12Fence1 * This,
5603 _In_z_ LPCWSTR Name);
5604
5605 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5606 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5607 ID3D12Fence1 * This,
5608 REFIID riid,
5609 _COM_Outptr_opt_ void **ppvDevice);
5610
5611 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5612 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5613 ID3D12Fence1 * This);
5614
5615 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5616 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5617 ID3D12Fence1 * This,
5618 UINT64 Value,
5619 HANDLE hEvent);
5620
5621 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5622 HRESULT ( STDMETHODCALLTYPE *Signal )(
5623 ID3D12Fence1 * This,
5624 UINT64 Value);
5625
5626 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
5627 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
5628 ID3D12Fence1 * This);
5629
5630 END_INTERFACE
5631 } ID3D12Fence1Vtbl;
5632
5633 interface ID3D12Fence1
5634 {
5635 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
5636 };
5637
5638
5639
5640#ifdef COBJMACROS
5641
5642
5643#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
5644 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5645
5646#define ID3D12Fence1_AddRef(This) \
5647 ( (This)->lpVtbl -> AddRef(This) )
5648
5649#define ID3D12Fence1_Release(This) \
5650 ( (This)->lpVtbl -> Release(This) )
5651
5652
5653#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5654 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5655
5656#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5657 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5658
5659#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5660 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5661
5662#define ID3D12Fence1_SetName(This,Name) \
5663 ( (This)->lpVtbl -> SetName(This,Name) )
5664
5665
5666#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5667 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5668
5669
5670
5671#define ID3D12Fence1_GetCompletedValue(This) \
5672 ( (This)->lpVtbl -> GetCompletedValue(This) )
5673
5674#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5675 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5676
5677#define ID3D12Fence1_Signal(This,Value) \
5678 ( (This)->lpVtbl -> Signal(This,Value) )
5679
5680
5681#define ID3D12Fence1_GetCreationFlags(This) \
5682 ( (This)->lpVtbl -> GetCreationFlags(This) )
5683
5684#endif /* COBJMACROS */
5685
5686
5687#endif /* C style interface */
5688
5689
5690
5691
5692#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5693
5694
5695#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5696#define __ID3D12PipelineState_INTERFACE_DEFINED__
5697
5698/* interface ID3D12PipelineState */
5699/* [unique][local][object][uuid] */
5700
5701
5702EXTERN_C const IID IID_ID3D12PipelineState;
5703
5704#if defined(__cplusplus) && !defined(CINTERFACE)
5705
5706 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5707 ID3D12PipelineState : public ID3D12Pageable
5708 {
5709 public:
5710 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5711 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5712
5713 };
5714
5715
5716#else /* C style interface */
5717
5718 typedef struct ID3D12PipelineStateVtbl
5719 {
5720 BEGIN_INTERFACE
5721
5722 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5723 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5724 ID3D12PipelineState * This,
5725 REFIID riid,
5726 _COM_Outptr_ void **ppvObject);
5727
5728 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5729 ULONG ( STDMETHODCALLTYPE *AddRef )(
5730 ID3D12PipelineState * This);
5731
5732 DECLSPEC_XFGVIRT(IUnknown, Release)
5733 ULONG ( STDMETHODCALLTYPE *Release )(
5734 ID3D12PipelineState * This);
5735
5736 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5737 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5738 ID3D12PipelineState * This,
5739 _In_ REFGUID guid,
5740 _Inout_ UINT *pDataSize,
5741 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5742
5743 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5744 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5745 ID3D12PipelineState * This,
5746 _In_ REFGUID guid,
5747 _In_ UINT DataSize,
5748 _In_reads_bytes_opt_( DataSize ) const void *pData);
5749
5750 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5751 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5752 ID3D12PipelineState * This,
5753 _In_ REFGUID guid,
5754 _In_opt_ const IUnknown *pData);
5755
5756 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5757 HRESULT ( STDMETHODCALLTYPE *SetName )(
5758 ID3D12PipelineState * This,
5759 _In_z_ LPCWSTR Name);
5760
5761 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5762 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5763 ID3D12PipelineState * This,
5764 REFIID riid,
5765 _COM_Outptr_opt_ void **ppvDevice);
5766
5767 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5768 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5769 ID3D12PipelineState * This,
5770 _COM_Outptr_ ID3DBlob **ppBlob);
5771
5772 END_INTERFACE
5773 } ID3D12PipelineStateVtbl;
5774
5775 interface ID3D12PipelineState
5776 {
5777 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5778 };
5779
5780
5781
5782#ifdef COBJMACROS
5783
5784
5785#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5786 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5787
5788#define ID3D12PipelineState_AddRef(This) \
5789 ( (This)->lpVtbl -> AddRef(This) )
5790
5791#define ID3D12PipelineState_Release(This) \
5792 ( (This)->lpVtbl -> Release(This) )
5793
5794
5795#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5796 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5797
5798#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5799 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5800
5801#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5802 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5803
5804#define ID3D12PipelineState_SetName(This,Name) \
5805 ( (This)->lpVtbl -> SetName(This,Name) )
5806
5807
5808#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5809 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5810
5811
5812
5813#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5814 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5815
5816#endif /* COBJMACROS */
5817
5818
5819#endif /* C style interface */
5820
5821
5822
5823
5824#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5825
5826
5827#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
5828#define __ID3D12PipelineState1_INTERFACE_DEFINED__
5829
5830/* interface ID3D12PipelineState1 */
5831/* [unique][local][object][uuid] */
5832
5833
5834EXTERN_C const IID IID_ID3D12PipelineState1;
5835
5836#if defined(__cplusplus) && !defined(CINTERFACE)
5837
5838 MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
5839 ID3D12PipelineState1 : public ID3D12PipelineState
5840 {
5841 public:
5842 virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
5843 REFIID riid,
5844 _COM_Outptr_ void **ppvRootSignature) = 0;
5845
5846 };
5847
5848
5849#else /* C style interface */
5850
5851 typedef struct ID3D12PipelineState1Vtbl
5852 {
5853 BEGIN_INTERFACE
5854
5855 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5856 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5857 ID3D12PipelineState1 * This,
5858 REFIID riid,
5859 _COM_Outptr_ void **ppvObject);
5860
5861 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5862 ULONG ( STDMETHODCALLTYPE *AddRef )(
5863 ID3D12PipelineState1 * This);
5864
5865 DECLSPEC_XFGVIRT(IUnknown, Release)
5866 ULONG ( STDMETHODCALLTYPE *Release )(
5867 ID3D12PipelineState1 * This);
5868
5869 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5870 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5871 ID3D12PipelineState1 * This,
5872 _In_ REFGUID guid,
5873 _Inout_ UINT *pDataSize,
5874 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5875
5876 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5877 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5878 ID3D12PipelineState1 * This,
5879 _In_ REFGUID guid,
5880 _In_ UINT DataSize,
5881 _In_reads_bytes_opt_( DataSize ) const void *pData);
5882
5883 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5884 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5885 ID3D12PipelineState1 * This,
5886 _In_ REFGUID guid,
5887 _In_opt_ const IUnknown *pData);
5888
5889 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5890 HRESULT ( STDMETHODCALLTYPE *SetName )(
5891 ID3D12PipelineState1 * This,
5892 _In_z_ LPCWSTR Name);
5893
5894 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5895 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5896 ID3D12PipelineState1 * This,
5897 REFIID riid,
5898 _COM_Outptr_opt_ void **ppvDevice);
5899
5900 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5901 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5902 ID3D12PipelineState1 * This,
5903 _COM_Outptr_ ID3DBlob **ppBlob);
5904
5905 DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
5906 HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
5907 ID3D12PipelineState1 * This,
5908 REFIID riid,
5909 _COM_Outptr_ void **ppvRootSignature);
5910
5911 END_INTERFACE
5912 } ID3D12PipelineState1Vtbl;
5913
5914 interface ID3D12PipelineState1
5915 {
5916 CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
5917 };
5918
5919
5920
5921#ifdef COBJMACROS
5922
5923
5924#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
5925 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5926
5927#define ID3D12PipelineState1_AddRef(This) \
5928 ( (This)->lpVtbl -> AddRef(This) )
5929
5930#define ID3D12PipelineState1_Release(This) \
5931 ( (This)->lpVtbl -> Release(This) )
5932
5933
5934#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
5935 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5936
5937#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
5938 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5939
5940#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
5941 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5942
5943#define ID3D12PipelineState1_SetName(This,Name) \
5944 ( (This)->lpVtbl -> SetName(This,Name) )
5945
5946
5947#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
5948 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5949
5950
5951
5952#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
5953 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5954
5955
5956#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
5957 ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
5958
5959#endif /* COBJMACROS */
5960
5961
5962#endif /* C style interface */
5963
5964
5965
5966
5967#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
5968
5969
5970#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5971#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5972
5973/* interface ID3D12DescriptorHeap */
5974/* [unique][local][object][uuid] */
5975
5976
5977EXTERN_C const IID IID_ID3D12DescriptorHeap;
5978
5979#if defined(__cplusplus) && !defined(CINTERFACE)
5980
5981 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5982 ID3D12DescriptorHeap : public ID3D12Pageable
5983 {
5984 public:
5985#if defined(_MSC_VER) || !defined(_WIN32)
5986 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5987#else
5988 virtual D3D12_DESCRIPTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
5989 D3D12_DESCRIPTOR_HEAP_DESC * RetVal) = 0;
5990#endif
5991
5992#if defined(_MSC_VER) || !defined(_WIN32)
5993 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5994#else
5995 virtual D3D12_CPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
5996 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal) = 0;
5997#endif
5998
5999#if defined(_MSC_VER) || !defined(_WIN32)
6000 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
6001#else
6002 virtual D3D12_GPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
6003 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal) = 0;
6004#endif
6005
6006 };
6007
6008
6009#else /* C style interface */
6010
6011 typedef struct ID3D12DescriptorHeapVtbl
6012 {
6013 BEGIN_INTERFACE
6014
6015 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6016 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6017 ID3D12DescriptorHeap * This,
6018 REFIID riid,
6019 _COM_Outptr_ void **ppvObject);
6020
6021 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6022 ULONG ( STDMETHODCALLTYPE *AddRef )(
6023 ID3D12DescriptorHeap * This);
6024
6025 DECLSPEC_XFGVIRT(IUnknown, Release)
6026 ULONG ( STDMETHODCALLTYPE *Release )(
6027 ID3D12DescriptorHeap * This);
6028
6029 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6030 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6031 ID3D12DescriptorHeap * This,
6032 _In_ REFGUID guid,
6033 _Inout_ UINT *pDataSize,
6034 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6035
6036 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6037 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6038 ID3D12DescriptorHeap * This,
6039 _In_ REFGUID guid,
6040 _In_ UINT DataSize,
6041 _In_reads_bytes_opt_( DataSize ) const void *pData);
6042
6043 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6044 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6045 ID3D12DescriptorHeap * This,
6046 _In_ REFGUID guid,
6047 _In_opt_ const IUnknown *pData);
6048
6049 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6050 HRESULT ( STDMETHODCALLTYPE *SetName )(
6051 ID3D12DescriptorHeap * This,
6052 _In_z_ LPCWSTR Name);
6053
6054 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6055 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6056 ID3D12DescriptorHeap * This,
6057 REFIID riid,
6058 _COM_Outptr_opt_ void **ppvDevice);
6059
6060 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
6061#if !defined(_WIN32)
6062 D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
6063 ID3D12DescriptorHeap * This);
6064
6065#else
6066 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
6067 ID3D12DescriptorHeap * This,
6068 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
6069
6070#endif
6071
6072 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
6073#if !defined(_WIN32)
6074 D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6075 ID3D12DescriptorHeap * This);
6076
6077#else
6078 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6079 ID3D12DescriptorHeap * This,
6080 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
6081
6082#endif
6083
6084 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
6085#if !defined(_WIN32)
6086 D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6087 ID3D12DescriptorHeap * This);
6088
6089#else
6090 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6091 ID3D12DescriptorHeap * This,
6092 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
6093
6094#endif
6095
6096 END_INTERFACE
6097 } ID3D12DescriptorHeapVtbl;
6098
6099 interface ID3D12DescriptorHeap
6100 {
6101 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
6102 };
6103
6104
6105
6106#ifdef COBJMACROS
6107
6108
6109#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
6110 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6111
6112#define ID3D12DescriptorHeap_AddRef(This) \
6113 ( (This)->lpVtbl -> AddRef(This) )
6114
6115#define ID3D12DescriptorHeap_Release(This) \
6116 ( (This)->lpVtbl -> Release(This) )
6117
6118
6119#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
6120 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6121
6122#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
6123 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6124
6125#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
6126 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6127
6128#define ID3D12DescriptorHeap_SetName(This,Name) \
6129 ( (This)->lpVtbl -> SetName(This,Name) )
6130
6131
6132#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
6133 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6134
6135
6136#if !defined(_WIN32)
6137
6138#define ID3D12DescriptorHeap_GetDesc(This) \
6139 ( (This)->lpVtbl -> GetDesc(This) )
6140#else
6141#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
6142 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
6143#endif
6144#if !defined(_WIN32)
6145
6146#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
6147 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
6148#else
6149#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
6150 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
6151#endif
6152#if !defined(_WIN32)
6153
6154#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
6155 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
6156#else
6157#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
6158 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
6159#endif
6160
6161#endif /* COBJMACROS */
6162
6163
6164#endif /* C style interface */
6165
6166
6167
6168
6169#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
6170
6171
6172#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
6173#define __ID3D12QueryHeap_INTERFACE_DEFINED__
6174
6175/* interface ID3D12QueryHeap */
6176/* [unique][local][object][uuid] */
6177
6178
6179EXTERN_C const IID IID_ID3D12QueryHeap;
6180
6181#if defined(__cplusplus) && !defined(CINTERFACE)
6182
6183 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
6184 ID3D12QueryHeap : public ID3D12Pageable
6185 {
6186 public:
6187 };
6188
6189
6190#else /* C style interface */
6191
6192 typedef struct ID3D12QueryHeapVtbl
6193 {
6194 BEGIN_INTERFACE
6195
6196 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6197 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6198 ID3D12QueryHeap * This,
6199 REFIID riid,
6200 _COM_Outptr_ void **ppvObject);
6201
6202 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6203 ULONG ( STDMETHODCALLTYPE *AddRef )(
6204 ID3D12QueryHeap * This);
6205
6206 DECLSPEC_XFGVIRT(IUnknown, Release)
6207 ULONG ( STDMETHODCALLTYPE *Release )(
6208 ID3D12QueryHeap * This);
6209
6210 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6211 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6212 ID3D12QueryHeap * This,
6213 _In_ REFGUID guid,
6214 _Inout_ UINT *pDataSize,
6215 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6216
6217 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6218 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6219 ID3D12QueryHeap * This,
6220 _In_ REFGUID guid,
6221 _In_ UINT DataSize,
6222 _In_reads_bytes_opt_( DataSize ) const void *pData);
6223
6224 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6225 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6226 ID3D12QueryHeap * This,
6227 _In_ REFGUID guid,
6228 _In_opt_ const IUnknown *pData);
6229
6230 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6231 HRESULT ( STDMETHODCALLTYPE *SetName )(
6232 ID3D12QueryHeap * This,
6233 _In_z_ LPCWSTR Name);
6234
6235 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6236 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6237 ID3D12QueryHeap * This,
6238 REFIID riid,
6239 _COM_Outptr_opt_ void **ppvDevice);
6240
6241 END_INTERFACE
6242 } ID3D12QueryHeapVtbl;
6243
6244 interface ID3D12QueryHeap
6245 {
6246 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
6247 };
6248
6249
6250
6251#ifdef COBJMACROS
6252
6253
6254#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
6255 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6256
6257#define ID3D12QueryHeap_AddRef(This) \
6258 ( (This)->lpVtbl -> AddRef(This) )
6259
6260#define ID3D12QueryHeap_Release(This) \
6261 ( (This)->lpVtbl -> Release(This) )
6262
6263
6264#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
6265 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6266
6267#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
6268 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6269
6270#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
6271 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6272
6273#define ID3D12QueryHeap_SetName(This,Name) \
6274 ( (This)->lpVtbl -> SetName(This,Name) )
6275
6276
6277#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
6278 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6279
6280
6281
6282#endif /* COBJMACROS */
6283
6284
6285#endif /* C style interface */
6286
6287
6288
6289
6290#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
6291
6292
6293#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
6294#define __ID3D12CommandSignature_INTERFACE_DEFINED__
6295
6296/* interface ID3D12CommandSignature */
6297/* [unique][local][object][uuid] */
6298
6299
6300EXTERN_C const IID IID_ID3D12CommandSignature;
6301
6302#if defined(__cplusplus) && !defined(CINTERFACE)
6303
6304 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
6305 ID3D12CommandSignature : public ID3D12Pageable
6306 {
6307 public:
6308 };
6309
6310
6311#else /* C style interface */
6312
6313 typedef struct ID3D12CommandSignatureVtbl
6314 {
6315 BEGIN_INTERFACE
6316
6317 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6318 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6319 ID3D12CommandSignature * This,
6320 REFIID riid,
6321 _COM_Outptr_ void **ppvObject);
6322
6323 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6324 ULONG ( STDMETHODCALLTYPE *AddRef )(
6325 ID3D12CommandSignature * This);
6326
6327 DECLSPEC_XFGVIRT(IUnknown, Release)
6328 ULONG ( STDMETHODCALLTYPE *Release )(
6329 ID3D12CommandSignature * This);
6330
6331 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6332 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6333 ID3D12CommandSignature * This,
6334 _In_ REFGUID guid,
6335 _Inout_ UINT *pDataSize,
6336 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6337
6338 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6339 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6340 ID3D12CommandSignature * This,
6341 _In_ REFGUID guid,
6342 _In_ UINT DataSize,
6343 _In_reads_bytes_opt_( DataSize ) const void *pData);
6344
6345 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6346 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6347 ID3D12CommandSignature * This,
6348 _In_ REFGUID guid,
6349 _In_opt_ const IUnknown *pData);
6350
6351 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6352 HRESULT ( STDMETHODCALLTYPE *SetName )(
6353 ID3D12CommandSignature * This,
6354 _In_z_ LPCWSTR Name);
6355
6356 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6357 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6358 ID3D12CommandSignature * This,
6359 REFIID riid,
6360 _COM_Outptr_opt_ void **ppvDevice);
6361
6362 END_INTERFACE
6363 } ID3D12CommandSignatureVtbl;
6364
6365 interface ID3D12CommandSignature
6366 {
6367 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
6368 };
6369
6370
6371
6372#ifdef COBJMACROS
6373
6374
6375#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
6376 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6377
6378#define ID3D12CommandSignature_AddRef(This) \
6379 ( (This)->lpVtbl -> AddRef(This) )
6380
6381#define ID3D12CommandSignature_Release(This) \
6382 ( (This)->lpVtbl -> Release(This) )
6383
6384
6385#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
6386 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6387
6388#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
6389 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6390
6391#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
6392 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6393
6394#define ID3D12CommandSignature_SetName(This,Name) \
6395 ( (This)->lpVtbl -> SetName(This,Name) )
6396
6397
6398#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
6399 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6400
6401
6402
6403#endif /* COBJMACROS */
6404
6405
6406#endif /* C style interface */
6407
6408
6409
6410
6411#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
6412
6413
6414#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
6415#define __ID3D12CommandList_INTERFACE_DEFINED__
6416
6417/* interface ID3D12CommandList */
6418/* [unique][local][object][uuid] */
6419
6420
6421EXTERN_C const IID IID_ID3D12CommandList;
6422
6423#if defined(__cplusplus) && !defined(CINTERFACE)
6424
6425 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
6426 ID3D12CommandList : public ID3D12DeviceChild
6427 {
6428 public:
6429 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
6430
6431 };
6432
6433
6434#else /* C style interface */
6435
6436 typedef struct ID3D12CommandListVtbl
6437 {
6438 BEGIN_INTERFACE
6439
6440 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6441 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6442 ID3D12CommandList * This,
6443 REFIID riid,
6444 _COM_Outptr_ void **ppvObject);
6445
6446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6447 ULONG ( STDMETHODCALLTYPE *AddRef )(
6448 ID3D12CommandList * This);
6449
6450 DECLSPEC_XFGVIRT(IUnknown, Release)
6451 ULONG ( STDMETHODCALLTYPE *Release )(
6452 ID3D12CommandList * This);
6453
6454 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6455 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6456 ID3D12CommandList * This,
6457 _In_ REFGUID guid,
6458 _Inout_ UINT *pDataSize,
6459 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6460
6461 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6462 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6463 ID3D12CommandList * This,
6464 _In_ REFGUID guid,
6465 _In_ UINT DataSize,
6466 _In_reads_bytes_opt_( DataSize ) const void *pData);
6467
6468 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6469 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6470 ID3D12CommandList * This,
6471 _In_ REFGUID guid,
6472 _In_opt_ const IUnknown *pData);
6473
6474 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6475 HRESULT ( STDMETHODCALLTYPE *SetName )(
6476 ID3D12CommandList * This,
6477 _In_z_ LPCWSTR Name);
6478
6479 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6480 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6481 ID3D12CommandList * This,
6482 REFIID riid,
6483 _COM_Outptr_opt_ void **ppvDevice);
6484
6485 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6486 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6487 ID3D12CommandList * This);
6488
6489 END_INTERFACE
6490 } ID3D12CommandListVtbl;
6491
6492 interface ID3D12CommandList
6493 {
6494 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
6495 };
6496
6497
6498
6499#ifdef COBJMACROS
6500
6501
6502#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
6503 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6504
6505#define ID3D12CommandList_AddRef(This) \
6506 ( (This)->lpVtbl -> AddRef(This) )
6507
6508#define ID3D12CommandList_Release(This) \
6509 ( (This)->lpVtbl -> Release(This) )
6510
6511
6512#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
6513 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6514
6515#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
6516 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6517
6518#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
6519 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6520
6521#define ID3D12CommandList_SetName(This,Name) \
6522 ( (This)->lpVtbl -> SetName(This,Name) )
6523
6524
6525#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
6526 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6527
6528
6529#define ID3D12CommandList_GetType(This) \
6530 ( (This)->lpVtbl -> GetType(This) )
6531
6532#endif /* COBJMACROS */
6533
6534
6535#endif /* C style interface */
6536
6537
6538
6539
6540#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
6541
6542
6543#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6544#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6545
6546/* interface ID3D12GraphicsCommandList */
6547/* [unique][local][object][uuid] */
6548
6549
6550EXTERN_C const IID IID_ID3D12GraphicsCommandList;
6551
6552#if defined(__cplusplus) && !defined(CINTERFACE)
6553
6554 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
6555 ID3D12GraphicsCommandList : public ID3D12CommandList
6556 {
6557 public:
6558 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
6559
6560 virtual HRESULT STDMETHODCALLTYPE Reset(
6561 _In_ ID3D12CommandAllocator *pAllocator,
6562 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
6563
6564 virtual void STDMETHODCALLTYPE ClearState(
6565 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
6566
6567 virtual void STDMETHODCALLTYPE DrawInstanced(
6568 _In_ UINT VertexCountPerInstance,
6569 _In_ UINT InstanceCount,
6570 _In_ UINT StartVertexLocation,
6571 _In_ UINT StartInstanceLocation) = 0;
6572
6573 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
6574 _In_ UINT IndexCountPerInstance,
6575 _In_ UINT InstanceCount,
6576 _In_ UINT StartIndexLocation,
6577 _In_ INT BaseVertexLocation,
6578 _In_ UINT StartInstanceLocation) = 0;
6579
6580 virtual void STDMETHODCALLTYPE Dispatch(
6581 _In_ UINT ThreadGroupCountX,
6582 _In_ UINT ThreadGroupCountY,
6583 _In_ UINT ThreadGroupCountZ) = 0;
6584
6585 virtual void STDMETHODCALLTYPE CopyBufferRegion(
6586 _In_ ID3D12Resource *pDstBuffer,
6587 UINT64 DstOffset,
6588 _In_ ID3D12Resource *pSrcBuffer,
6589 UINT64 SrcOffset,
6590 UINT64 NumBytes) = 0;
6591
6592 virtual void STDMETHODCALLTYPE CopyTextureRegion(
6593 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6594 UINT DstX,
6595 UINT DstY,
6596 UINT DstZ,
6597 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6598 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
6599
6600 virtual void STDMETHODCALLTYPE CopyResource(
6601 _In_ ID3D12Resource *pDstResource,
6602 _In_ ID3D12Resource *pSrcResource) = 0;
6603
6604 virtual void STDMETHODCALLTYPE CopyTiles(
6605 _In_ ID3D12Resource *pTiledResource,
6606 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6607 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6608 _In_ ID3D12Resource *pBuffer,
6609 UINT64 BufferStartOffsetInBytes,
6610 D3D12_TILE_COPY_FLAGS Flags) = 0;
6611
6612 virtual void STDMETHODCALLTYPE ResolveSubresource(
6613 _In_ ID3D12Resource *pDstResource,
6614 _In_ UINT DstSubresource,
6615 _In_ ID3D12Resource *pSrcResource,
6616 _In_ UINT SrcSubresource,
6617 _In_ DXGI_FORMAT Format) = 0;
6618
6619 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
6620 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
6621
6622 virtual void STDMETHODCALLTYPE RSSetViewports(
6623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6624 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
6625
6626 virtual void STDMETHODCALLTYPE RSSetScissorRects(
6627 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6628 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
6629
6630 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
6631 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
6632
6633 virtual void STDMETHODCALLTYPE OMSetStencilRef(
6634 _In_ UINT StencilRef) = 0;
6635
6636 virtual void STDMETHODCALLTYPE SetPipelineState(
6637 _In_ ID3D12PipelineState *pPipelineState) = 0;
6638
6639 virtual void STDMETHODCALLTYPE ResourceBarrier(
6640 _In_ UINT NumBarriers,
6641 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
6642
6643 virtual void STDMETHODCALLTYPE ExecuteBundle(
6644 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
6645
6646 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
6647 _In_ UINT NumDescriptorHeaps,
6648 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
6649
6650 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
6651 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6652
6653 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
6654 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6655
6656 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
6657 _In_ UINT RootParameterIndex,
6658 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6659
6660 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
6661 _In_ UINT RootParameterIndex,
6662 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6663
6664 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
6665 _In_ UINT RootParameterIndex,
6666 _In_ UINT SrcData,
6667 _In_ UINT DestOffsetIn32BitValues) = 0;
6668
6669 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
6670 _In_ UINT RootParameterIndex,
6671 _In_ UINT SrcData,
6672 _In_ UINT DestOffsetIn32BitValues) = 0;
6673
6674 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
6675 _In_ UINT RootParameterIndex,
6676 _In_ UINT Num32BitValuesToSet,
6677 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6678 _In_ UINT DestOffsetIn32BitValues) = 0;
6679
6680 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
6681 _In_ UINT RootParameterIndex,
6682 _In_ UINT Num32BitValuesToSet,
6683 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6684 _In_ UINT DestOffsetIn32BitValues) = 0;
6685
6686 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
6687 _In_ UINT RootParameterIndex,
6688 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6689
6690 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
6691 _In_ UINT RootParameterIndex,
6692 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6693
6694 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
6695 _In_ UINT RootParameterIndex,
6696 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6697
6698 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
6699 _In_ UINT RootParameterIndex,
6700 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6701
6702 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
6703 _In_ UINT RootParameterIndex,
6704 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6705
6706 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
6707 _In_ UINT RootParameterIndex,
6708 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6709
6710 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
6711 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
6712
6713 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
6714 _In_ UINT StartSlot,
6715 _In_ UINT NumViews,
6716 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
6717
6718 virtual void STDMETHODCALLTYPE SOSetTargets(
6719 _In_ UINT StartSlot,
6720 _In_ UINT NumViews,
6721 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
6722
6723 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
6724 _In_ UINT NumRenderTargetDescriptors,
6725 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6726 _In_ BOOL RTsSingleHandleToDescriptorRange,
6727 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
6728
6729 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
6730 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6731 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6732 _In_ FLOAT Depth,
6733 _In_ UINT8 Stencil,
6734 _In_ UINT NumRects,
6735 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6736
6737 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
6738 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6739 _In_ const FLOAT ColorRGBA[ 4 ],
6740 _In_ UINT NumRects,
6741 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6742
6743 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
6744 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6745 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6746 _In_ ID3D12Resource *pResource,
6747 _In_ const UINT Values[ 4 ],
6748 _In_ UINT NumRects,
6749 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6750
6751 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
6752 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6753 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6754 _In_ ID3D12Resource *pResource,
6755 _In_ const FLOAT Values[ 4 ],
6756 _In_ UINT NumRects,
6757 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6758
6759 virtual void STDMETHODCALLTYPE DiscardResource(
6760 _In_ ID3D12Resource *pResource,
6761 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
6762
6763 virtual void STDMETHODCALLTYPE BeginQuery(
6764 _In_ ID3D12QueryHeap *pQueryHeap,
6765 _In_ D3D12_QUERY_TYPE Type,
6766 _In_ UINT Index) = 0;
6767
6768 virtual void STDMETHODCALLTYPE EndQuery(
6769 _In_ ID3D12QueryHeap *pQueryHeap,
6770 _In_ D3D12_QUERY_TYPE Type,
6771 _In_ UINT Index) = 0;
6772
6773 virtual void STDMETHODCALLTYPE ResolveQueryData(
6774 _In_ ID3D12QueryHeap *pQueryHeap,
6775 _In_ D3D12_QUERY_TYPE Type,
6776 _In_ UINT StartIndex,
6777 _In_ UINT NumQueries,
6778 _In_ ID3D12Resource *pDestinationBuffer,
6779 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
6780
6781 virtual void STDMETHODCALLTYPE SetPredication(
6782 _In_opt_ ID3D12Resource *pBuffer,
6783 _In_ UINT64 AlignedBufferOffset,
6784 _In_ D3D12_PREDICATION_OP Operation) = 0;
6785
6786 virtual void STDMETHODCALLTYPE SetMarker(
6787 UINT Metadata,
6788 _In_reads_bytes_opt_(Size) const void *pData,
6789 UINT Size) = 0;
6790
6791 virtual void STDMETHODCALLTYPE BeginEvent(
6792 UINT Metadata,
6793 _In_reads_bytes_opt_(Size) const void *pData,
6794 UINT Size) = 0;
6795
6796 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
6797
6798 virtual void STDMETHODCALLTYPE ExecuteIndirect(
6799 _In_ ID3D12CommandSignature *pCommandSignature,
6800 _In_ UINT MaxCommandCount,
6801 _In_ ID3D12Resource *pArgumentBuffer,
6802 _In_ UINT64 ArgumentBufferOffset,
6803 _In_opt_ ID3D12Resource *pCountBuffer,
6804 _In_ UINT64 CountBufferOffset) = 0;
6805
6806 };
6807
6808
6809#else /* C style interface */
6810
6811 typedef struct ID3D12GraphicsCommandListVtbl
6812 {
6813 BEGIN_INTERFACE
6814
6815 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6816 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6817 ID3D12GraphicsCommandList * This,
6818 REFIID riid,
6819 _COM_Outptr_ void **ppvObject);
6820
6821 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6822 ULONG ( STDMETHODCALLTYPE *AddRef )(
6823 ID3D12GraphicsCommandList * This);
6824
6825 DECLSPEC_XFGVIRT(IUnknown, Release)
6826 ULONG ( STDMETHODCALLTYPE *Release )(
6827 ID3D12GraphicsCommandList * This);
6828
6829 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6830 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6831 ID3D12GraphicsCommandList * This,
6832 _In_ REFGUID guid,
6833 _Inout_ UINT *pDataSize,
6834 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6835
6836 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6837 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6838 ID3D12GraphicsCommandList * This,
6839 _In_ REFGUID guid,
6840 _In_ UINT DataSize,
6841 _In_reads_bytes_opt_( DataSize ) const void *pData);
6842
6843 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6844 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6845 ID3D12GraphicsCommandList * This,
6846 _In_ REFGUID guid,
6847 _In_opt_ const IUnknown *pData);
6848
6849 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6850 HRESULT ( STDMETHODCALLTYPE *SetName )(
6851 ID3D12GraphicsCommandList * This,
6852 _In_z_ LPCWSTR Name);
6853
6854 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6855 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6856 ID3D12GraphicsCommandList * This,
6857 REFIID riid,
6858 _COM_Outptr_opt_ void **ppvDevice);
6859
6860 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6861 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6862 ID3D12GraphicsCommandList * This);
6863
6864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6865 HRESULT ( STDMETHODCALLTYPE *Close )(
6866 ID3D12GraphicsCommandList * This);
6867
6868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6869 HRESULT ( STDMETHODCALLTYPE *Reset )(
6870 ID3D12GraphicsCommandList * This,
6871 _In_ ID3D12CommandAllocator *pAllocator,
6872 _In_opt_ ID3D12PipelineState *pInitialState);
6873
6874 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6875 void ( STDMETHODCALLTYPE *ClearState )(
6876 ID3D12GraphicsCommandList * This,
6877 _In_opt_ ID3D12PipelineState *pPipelineState);
6878
6879 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6880 void ( STDMETHODCALLTYPE *DrawInstanced )(
6881 ID3D12GraphicsCommandList * This,
6882 _In_ UINT VertexCountPerInstance,
6883 _In_ UINT InstanceCount,
6884 _In_ UINT StartVertexLocation,
6885 _In_ UINT StartInstanceLocation);
6886
6887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6888 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6889 ID3D12GraphicsCommandList * This,
6890 _In_ UINT IndexCountPerInstance,
6891 _In_ UINT InstanceCount,
6892 _In_ UINT StartIndexLocation,
6893 _In_ INT BaseVertexLocation,
6894 _In_ UINT StartInstanceLocation);
6895
6896 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6897 void ( STDMETHODCALLTYPE *Dispatch )(
6898 ID3D12GraphicsCommandList * This,
6899 _In_ UINT ThreadGroupCountX,
6900 _In_ UINT ThreadGroupCountY,
6901 _In_ UINT ThreadGroupCountZ);
6902
6903 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6904 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6905 ID3D12GraphicsCommandList * This,
6906 _In_ ID3D12Resource *pDstBuffer,
6907 UINT64 DstOffset,
6908 _In_ ID3D12Resource *pSrcBuffer,
6909 UINT64 SrcOffset,
6910 UINT64 NumBytes);
6911
6912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6913 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6914 ID3D12GraphicsCommandList * This,
6915 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6916 UINT DstX,
6917 UINT DstY,
6918 UINT DstZ,
6919 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6920 _In_opt_ const D3D12_BOX *pSrcBox);
6921
6922 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6923 void ( STDMETHODCALLTYPE *CopyResource )(
6924 ID3D12GraphicsCommandList * This,
6925 _In_ ID3D12Resource *pDstResource,
6926 _In_ ID3D12Resource *pSrcResource);
6927
6928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6929 void ( STDMETHODCALLTYPE *CopyTiles )(
6930 ID3D12GraphicsCommandList * This,
6931 _In_ ID3D12Resource *pTiledResource,
6932 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6933 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6934 _In_ ID3D12Resource *pBuffer,
6935 UINT64 BufferStartOffsetInBytes,
6936 D3D12_TILE_COPY_FLAGS Flags);
6937
6938 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6939 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6940 ID3D12GraphicsCommandList * This,
6941 _In_ ID3D12Resource *pDstResource,
6942 _In_ UINT DstSubresource,
6943 _In_ ID3D12Resource *pSrcResource,
6944 _In_ UINT SrcSubresource,
6945 _In_ DXGI_FORMAT Format);
6946
6947 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6948 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6949 ID3D12GraphicsCommandList * This,
6950 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6951
6952 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6953 void ( STDMETHODCALLTYPE *RSSetViewports )(
6954 ID3D12GraphicsCommandList * This,
6955 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6956 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6957
6958 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6959 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6960 ID3D12GraphicsCommandList * This,
6961 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6962 _In_reads_( NumRects) const D3D12_RECT *pRects);
6963
6964 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6965 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6966 ID3D12GraphicsCommandList * This,
6967 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6968
6969 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6970 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6971 ID3D12GraphicsCommandList * This,
6972 _In_ UINT StencilRef);
6973
6974 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6975 void ( STDMETHODCALLTYPE *SetPipelineState )(
6976 ID3D12GraphicsCommandList * This,
6977 _In_ ID3D12PipelineState *pPipelineState);
6978
6979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6980 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6981 ID3D12GraphicsCommandList * This,
6982 _In_ UINT NumBarriers,
6983 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6984
6985 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6986 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6987 ID3D12GraphicsCommandList * This,
6988 _In_ ID3D12GraphicsCommandList *pCommandList);
6989
6990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6991 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6992 ID3D12GraphicsCommandList * This,
6993 _In_ UINT NumDescriptorHeaps,
6994 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6995
6996 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6997 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6998 ID3D12GraphicsCommandList * This,
6999 _In_opt_ ID3D12RootSignature *pRootSignature);
7000
7001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7002 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7003 ID3D12GraphicsCommandList * This,
7004 _In_opt_ ID3D12RootSignature *pRootSignature);
7005
7006 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7007 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7008 ID3D12GraphicsCommandList * This,
7009 _In_ UINT RootParameterIndex,
7010 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7011
7012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7013 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7014 ID3D12GraphicsCommandList * This,
7015 _In_ UINT RootParameterIndex,
7016 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7017
7018 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7019 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7020 ID3D12GraphicsCommandList * This,
7021 _In_ UINT RootParameterIndex,
7022 _In_ UINT SrcData,
7023 _In_ UINT DestOffsetIn32BitValues);
7024
7025 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7026 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7027 ID3D12GraphicsCommandList * This,
7028 _In_ UINT RootParameterIndex,
7029 _In_ UINT SrcData,
7030 _In_ UINT DestOffsetIn32BitValues);
7031
7032 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7033 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7034 ID3D12GraphicsCommandList * This,
7035 _In_ UINT RootParameterIndex,
7036 _In_ UINT Num32BitValuesToSet,
7037 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7038 _In_ UINT DestOffsetIn32BitValues);
7039
7040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7041 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7042 ID3D12GraphicsCommandList * This,
7043 _In_ UINT RootParameterIndex,
7044 _In_ UINT Num32BitValuesToSet,
7045 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7046 _In_ UINT DestOffsetIn32BitValues);
7047
7048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7049 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7050 ID3D12GraphicsCommandList * This,
7051 _In_ UINT RootParameterIndex,
7052 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7053
7054 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7055 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7056 ID3D12GraphicsCommandList * This,
7057 _In_ UINT RootParameterIndex,
7058 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7059
7060 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7061 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7062 ID3D12GraphicsCommandList * This,
7063 _In_ UINT RootParameterIndex,
7064 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7065
7066 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7067 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7068 ID3D12GraphicsCommandList * This,
7069 _In_ UINT RootParameterIndex,
7070 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7071
7072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7073 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7074 ID3D12GraphicsCommandList * This,
7075 _In_ UINT RootParameterIndex,
7076 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7077
7078 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7079 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7080 ID3D12GraphicsCommandList * This,
7081 _In_ UINT RootParameterIndex,
7082 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7083
7084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7085 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7086 ID3D12GraphicsCommandList * This,
7087 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7088
7089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7090 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7091 ID3D12GraphicsCommandList * This,
7092 _In_ UINT StartSlot,
7093 _In_ UINT NumViews,
7094 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7095
7096 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7097 void ( STDMETHODCALLTYPE *SOSetTargets )(
7098 ID3D12GraphicsCommandList * This,
7099 _In_ UINT StartSlot,
7100 _In_ UINT NumViews,
7101 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7102
7103 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7104 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7105 ID3D12GraphicsCommandList * This,
7106 _In_ UINT NumRenderTargetDescriptors,
7107 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7108 _In_ BOOL RTsSingleHandleToDescriptorRange,
7109 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7110
7111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7112 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7113 ID3D12GraphicsCommandList * This,
7114 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7115 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7116 _In_ FLOAT Depth,
7117 _In_ UINT8 Stencil,
7118 _In_ UINT NumRects,
7119 _In_reads_(NumRects) const D3D12_RECT *pRects);
7120
7121 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7122 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7123 ID3D12GraphicsCommandList * This,
7124 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7125 _In_ const FLOAT ColorRGBA[ 4 ],
7126 _In_ UINT NumRects,
7127 _In_reads_(NumRects) const D3D12_RECT *pRects);
7128
7129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7130 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7131 ID3D12GraphicsCommandList * This,
7132 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7133 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7134 _In_ ID3D12Resource *pResource,
7135 _In_ const UINT Values[ 4 ],
7136 _In_ UINT NumRects,
7137 _In_reads_(NumRects) const D3D12_RECT *pRects);
7138
7139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7140 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7141 ID3D12GraphicsCommandList * This,
7142 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7143 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7144 _In_ ID3D12Resource *pResource,
7145 _In_ const FLOAT Values[ 4 ],
7146 _In_ UINT NumRects,
7147 _In_reads_(NumRects) const D3D12_RECT *pRects);
7148
7149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7150 void ( STDMETHODCALLTYPE *DiscardResource )(
7151 ID3D12GraphicsCommandList * This,
7152 _In_ ID3D12Resource *pResource,
7153 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7154
7155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7156 void ( STDMETHODCALLTYPE *BeginQuery )(
7157 ID3D12GraphicsCommandList * This,
7158 _In_ ID3D12QueryHeap *pQueryHeap,
7159 _In_ D3D12_QUERY_TYPE Type,
7160 _In_ UINT Index);
7161
7162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7163 void ( STDMETHODCALLTYPE *EndQuery )(
7164 ID3D12GraphicsCommandList * This,
7165 _In_ ID3D12QueryHeap *pQueryHeap,
7166 _In_ D3D12_QUERY_TYPE Type,
7167 _In_ UINT Index);
7168
7169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7170 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7171 ID3D12GraphicsCommandList * This,
7172 _In_ ID3D12QueryHeap *pQueryHeap,
7173 _In_ D3D12_QUERY_TYPE Type,
7174 _In_ UINT StartIndex,
7175 _In_ UINT NumQueries,
7176 _In_ ID3D12Resource *pDestinationBuffer,
7177 _In_ UINT64 AlignedDestinationBufferOffset);
7178
7179 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7180 void ( STDMETHODCALLTYPE *SetPredication )(
7181 ID3D12GraphicsCommandList * This,
7182 _In_opt_ ID3D12Resource *pBuffer,
7183 _In_ UINT64 AlignedBufferOffset,
7184 _In_ D3D12_PREDICATION_OP Operation);
7185
7186 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7187 void ( STDMETHODCALLTYPE *SetMarker )(
7188 ID3D12GraphicsCommandList * This,
7189 UINT Metadata,
7190 _In_reads_bytes_opt_(Size) const void *pData,
7191 UINT Size);
7192
7193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7194 void ( STDMETHODCALLTYPE *BeginEvent )(
7195 ID3D12GraphicsCommandList * This,
7196 UINT Metadata,
7197 _In_reads_bytes_opt_(Size) const void *pData,
7198 UINT Size);
7199
7200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7201 void ( STDMETHODCALLTYPE *EndEvent )(
7202 ID3D12GraphicsCommandList * This);
7203
7204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7205 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7206 ID3D12GraphicsCommandList * This,
7207 _In_ ID3D12CommandSignature *pCommandSignature,
7208 _In_ UINT MaxCommandCount,
7209 _In_ ID3D12Resource *pArgumentBuffer,
7210 _In_ UINT64 ArgumentBufferOffset,
7211 _In_opt_ ID3D12Resource *pCountBuffer,
7212 _In_ UINT64 CountBufferOffset);
7213
7214 END_INTERFACE
7215 } ID3D12GraphicsCommandListVtbl;
7216
7217 interface ID3D12GraphicsCommandList
7218 {
7219 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
7220 };
7221
7222
7223
7224#ifdef COBJMACROS
7225
7226
7227#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
7228 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7229
7230#define ID3D12GraphicsCommandList_AddRef(This) \
7231 ( (This)->lpVtbl -> AddRef(This) )
7232
7233#define ID3D12GraphicsCommandList_Release(This) \
7234 ( (This)->lpVtbl -> Release(This) )
7235
7236
7237#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
7238 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7239
7240#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
7241 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7242
7243#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
7244 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7245
7246#define ID3D12GraphicsCommandList_SetName(This,Name) \
7247 ( (This)->lpVtbl -> SetName(This,Name) )
7248
7249
7250#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
7251 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7252
7253
7254#define ID3D12GraphicsCommandList_GetType(This) \
7255 ( (This)->lpVtbl -> GetType(This) )
7256
7257
7258#define ID3D12GraphicsCommandList_Close(This) \
7259 ( (This)->lpVtbl -> Close(This) )
7260
7261#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
7262 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7263
7264#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
7265 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7266
7267#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7268 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7269
7270#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7271 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7272
7273#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7274 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7275
7276#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7277 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7278
7279#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7280 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7281
7282#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
7283 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7284
7285#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7286 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7287
7288#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7289 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7290
7291#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
7292 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7293
7294#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
7295 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7296
7297#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
7298 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7299
7300#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
7301 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7302
7303#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
7304 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7305
7306#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
7307 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7308
7309#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
7310 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7311
7312#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
7313 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7314
7315#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7316 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7317
7318#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
7319 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7320
7321#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
7322 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7323
7324#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7325 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7326
7327#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7328 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7329
7330#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7331 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7332
7333#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7334 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7335
7336#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7337 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7338
7339#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7340 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7341
7342#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7343 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7344
7345#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7346 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7347
7348#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7349 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7350
7351#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7352 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7353
7354#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7355 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7356
7357#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7358 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7359
7360#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
7361 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7362
7363#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7364 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7365
7366#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
7367 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7368
7369#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7370 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7371
7372#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7373 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7374
7375#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7376 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7377
7378#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7379 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7380
7381#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7382 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7383
7384#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
7385 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7386
7387#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
7388 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7389
7390#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
7391 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7392
7393#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7394 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7395
7396#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7397 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7398
7399#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
7400 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7401
7402#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
7403 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7404
7405#define ID3D12GraphicsCommandList_EndEvent(This) \
7406 ( (This)->lpVtbl -> EndEvent(This) )
7407
7408#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7409 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7410
7411#endif /* COBJMACROS */
7412
7413
7414#endif /* C style interface */
7415
7416
7417
7418
7419#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
7420
7421
7422#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7423#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7424
7425/* interface ID3D12GraphicsCommandList1 */
7426/* [unique][local][object][uuid] */
7427
7428
7429EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
7430
7431#if defined(__cplusplus) && !defined(CINTERFACE)
7432
7433 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
7434 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
7435 {
7436 public:
7437 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
7438 _In_ ID3D12Resource *pDstBuffer,
7439 UINT64 DstOffset,
7440 _In_ ID3D12Resource *pSrcBuffer,
7441 UINT64 SrcOffset,
7442 UINT Dependencies,
7443 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7444 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7445
7446 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
7447 _In_ ID3D12Resource *pDstBuffer,
7448 UINT64 DstOffset,
7449 _In_ ID3D12Resource *pSrcBuffer,
7450 UINT64 SrcOffset,
7451 UINT Dependencies,
7452 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7453 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7454
7455 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
7456 _In_ FLOAT Min,
7457 _In_ FLOAT Max) = 0;
7458
7459 virtual void STDMETHODCALLTYPE SetSamplePositions(
7460 _In_ UINT NumSamplesPerPixel,
7461 _In_ UINT NumPixels,
7462 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
7463
7464 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
7465 _In_ ID3D12Resource *pDstResource,
7466 _In_ UINT DstSubresource,
7467 _In_ UINT DstX,
7468 _In_ UINT DstY,
7469 _In_ ID3D12Resource *pSrcResource,
7470 _In_ UINT SrcSubresource,
7471 _In_opt_ D3D12_RECT *pSrcRect,
7472 _In_ DXGI_FORMAT Format,
7473 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
7474
7475 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
7476 _In_ UINT Mask) = 0;
7477
7478 };
7479
7480
7481#else /* C style interface */
7482
7483 typedef struct ID3D12GraphicsCommandList1Vtbl
7484 {
7485 BEGIN_INTERFACE
7486
7487 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7488 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7489 ID3D12GraphicsCommandList1 * This,
7490 REFIID riid,
7491 _COM_Outptr_ void **ppvObject);
7492
7493 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7494 ULONG ( STDMETHODCALLTYPE *AddRef )(
7495 ID3D12GraphicsCommandList1 * This);
7496
7497 DECLSPEC_XFGVIRT(IUnknown, Release)
7498 ULONG ( STDMETHODCALLTYPE *Release )(
7499 ID3D12GraphicsCommandList1 * This);
7500
7501 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7502 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7503 ID3D12GraphicsCommandList1 * This,
7504 _In_ REFGUID guid,
7505 _Inout_ UINT *pDataSize,
7506 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7507
7508 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7509 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7510 ID3D12GraphicsCommandList1 * This,
7511 _In_ REFGUID guid,
7512 _In_ UINT DataSize,
7513 _In_reads_bytes_opt_( DataSize ) const void *pData);
7514
7515 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7516 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7517 ID3D12GraphicsCommandList1 * This,
7518 _In_ REFGUID guid,
7519 _In_opt_ const IUnknown *pData);
7520
7521 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7522 HRESULT ( STDMETHODCALLTYPE *SetName )(
7523 ID3D12GraphicsCommandList1 * This,
7524 _In_z_ LPCWSTR Name);
7525
7526 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7527 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7528 ID3D12GraphicsCommandList1 * This,
7529 REFIID riid,
7530 _COM_Outptr_opt_ void **ppvDevice);
7531
7532 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7533 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7534 ID3D12GraphicsCommandList1 * This);
7535
7536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7537 HRESULT ( STDMETHODCALLTYPE *Close )(
7538 ID3D12GraphicsCommandList1 * This);
7539
7540 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7541 HRESULT ( STDMETHODCALLTYPE *Reset )(
7542 ID3D12GraphicsCommandList1 * This,
7543 _In_ ID3D12CommandAllocator *pAllocator,
7544 _In_opt_ ID3D12PipelineState *pInitialState);
7545
7546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7547 void ( STDMETHODCALLTYPE *ClearState )(
7548 ID3D12GraphicsCommandList1 * This,
7549 _In_opt_ ID3D12PipelineState *pPipelineState);
7550
7551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7552 void ( STDMETHODCALLTYPE *DrawInstanced )(
7553 ID3D12GraphicsCommandList1 * This,
7554 _In_ UINT VertexCountPerInstance,
7555 _In_ UINT InstanceCount,
7556 _In_ UINT StartVertexLocation,
7557 _In_ UINT StartInstanceLocation);
7558
7559 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7560 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7561 ID3D12GraphicsCommandList1 * This,
7562 _In_ UINT IndexCountPerInstance,
7563 _In_ UINT InstanceCount,
7564 _In_ UINT StartIndexLocation,
7565 _In_ INT BaseVertexLocation,
7566 _In_ UINT StartInstanceLocation);
7567
7568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7569 void ( STDMETHODCALLTYPE *Dispatch )(
7570 ID3D12GraphicsCommandList1 * This,
7571 _In_ UINT ThreadGroupCountX,
7572 _In_ UINT ThreadGroupCountY,
7573 _In_ UINT ThreadGroupCountZ);
7574
7575 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7576 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7577 ID3D12GraphicsCommandList1 * This,
7578 _In_ ID3D12Resource *pDstBuffer,
7579 UINT64 DstOffset,
7580 _In_ ID3D12Resource *pSrcBuffer,
7581 UINT64 SrcOffset,
7582 UINT64 NumBytes);
7583
7584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7585 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7586 ID3D12GraphicsCommandList1 * This,
7587 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7588 UINT DstX,
7589 UINT DstY,
7590 UINT DstZ,
7591 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7592 _In_opt_ const D3D12_BOX *pSrcBox);
7593
7594 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7595 void ( STDMETHODCALLTYPE *CopyResource )(
7596 ID3D12GraphicsCommandList1 * This,
7597 _In_ ID3D12Resource *pDstResource,
7598 _In_ ID3D12Resource *pSrcResource);
7599
7600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7601 void ( STDMETHODCALLTYPE *CopyTiles )(
7602 ID3D12GraphicsCommandList1 * This,
7603 _In_ ID3D12Resource *pTiledResource,
7604 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7605 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7606 _In_ ID3D12Resource *pBuffer,
7607 UINT64 BufferStartOffsetInBytes,
7608 D3D12_TILE_COPY_FLAGS Flags);
7609
7610 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7611 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7612 ID3D12GraphicsCommandList1 * This,
7613 _In_ ID3D12Resource *pDstResource,
7614 _In_ UINT DstSubresource,
7615 _In_ ID3D12Resource *pSrcResource,
7616 _In_ UINT SrcSubresource,
7617 _In_ DXGI_FORMAT Format);
7618
7619 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7620 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7621 ID3D12GraphicsCommandList1 * This,
7622 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7623
7624 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7625 void ( STDMETHODCALLTYPE *RSSetViewports )(
7626 ID3D12GraphicsCommandList1 * This,
7627 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7628 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7629
7630 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7631 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7632 ID3D12GraphicsCommandList1 * This,
7633 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7634 _In_reads_( NumRects) const D3D12_RECT *pRects);
7635
7636 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7637 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7638 ID3D12GraphicsCommandList1 * This,
7639 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7640
7641 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7642 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7643 ID3D12GraphicsCommandList1 * This,
7644 _In_ UINT StencilRef);
7645
7646 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7647 void ( STDMETHODCALLTYPE *SetPipelineState )(
7648 ID3D12GraphicsCommandList1 * This,
7649 _In_ ID3D12PipelineState *pPipelineState);
7650
7651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7652 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7653 ID3D12GraphicsCommandList1 * This,
7654 _In_ UINT NumBarriers,
7655 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7656
7657 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7658 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7659 ID3D12GraphicsCommandList1 * This,
7660 _In_ ID3D12GraphicsCommandList *pCommandList);
7661
7662 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7663 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7664 ID3D12GraphicsCommandList1 * This,
7665 _In_ UINT NumDescriptorHeaps,
7666 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7667
7668 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7669 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7670 ID3D12GraphicsCommandList1 * This,
7671 _In_opt_ ID3D12RootSignature *pRootSignature);
7672
7673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7674 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7675 ID3D12GraphicsCommandList1 * This,
7676 _In_opt_ ID3D12RootSignature *pRootSignature);
7677
7678 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7679 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7680 ID3D12GraphicsCommandList1 * This,
7681 _In_ UINT RootParameterIndex,
7682 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7683
7684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7685 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7686 ID3D12GraphicsCommandList1 * This,
7687 _In_ UINT RootParameterIndex,
7688 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7689
7690 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7691 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7692 ID3D12GraphicsCommandList1 * This,
7693 _In_ UINT RootParameterIndex,
7694 _In_ UINT SrcData,
7695 _In_ UINT DestOffsetIn32BitValues);
7696
7697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7698 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7699 ID3D12GraphicsCommandList1 * This,
7700 _In_ UINT RootParameterIndex,
7701 _In_ UINT SrcData,
7702 _In_ UINT DestOffsetIn32BitValues);
7703
7704 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7705 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7706 ID3D12GraphicsCommandList1 * This,
7707 _In_ UINT RootParameterIndex,
7708 _In_ UINT Num32BitValuesToSet,
7709 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7710 _In_ UINT DestOffsetIn32BitValues);
7711
7712 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7713 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7714 ID3D12GraphicsCommandList1 * This,
7715 _In_ UINT RootParameterIndex,
7716 _In_ UINT Num32BitValuesToSet,
7717 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7718 _In_ UINT DestOffsetIn32BitValues);
7719
7720 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7721 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7722 ID3D12GraphicsCommandList1 * This,
7723 _In_ UINT RootParameterIndex,
7724 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7725
7726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7727 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7728 ID3D12GraphicsCommandList1 * This,
7729 _In_ UINT RootParameterIndex,
7730 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7731
7732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7733 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7734 ID3D12GraphicsCommandList1 * This,
7735 _In_ UINT RootParameterIndex,
7736 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7737
7738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7739 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7740 ID3D12GraphicsCommandList1 * This,
7741 _In_ UINT RootParameterIndex,
7742 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7743
7744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7745 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7746 ID3D12GraphicsCommandList1 * This,
7747 _In_ UINT RootParameterIndex,
7748 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7749
7750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7751 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7752 ID3D12GraphicsCommandList1 * This,
7753 _In_ UINT RootParameterIndex,
7754 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7755
7756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7757 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7758 ID3D12GraphicsCommandList1 * This,
7759 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7760
7761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7762 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7763 ID3D12GraphicsCommandList1 * This,
7764 _In_ UINT StartSlot,
7765 _In_ UINT NumViews,
7766 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7767
7768 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7769 void ( STDMETHODCALLTYPE *SOSetTargets )(
7770 ID3D12GraphicsCommandList1 * This,
7771 _In_ UINT StartSlot,
7772 _In_ UINT NumViews,
7773 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7774
7775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7776 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7777 ID3D12GraphicsCommandList1 * This,
7778 _In_ UINT NumRenderTargetDescriptors,
7779 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7780 _In_ BOOL RTsSingleHandleToDescriptorRange,
7781 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7782
7783 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7784 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7785 ID3D12GraphicsCommandList1 * This,
7786 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7787 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7788 _In_ FLOAT Depth,
7789 _In_ UINT8 Stencil,
7790 _In_ UINT NumRects,
7791 _In_reads_(NumRects) const D3D12_RECT *pRects);
7792
7793 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7794 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7795 ID3D12GraphicsCommandList1 * This,
7796 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7797 _In_ const FLOAT ColorRGBA[ 4 ],
7798 _In_ UINT NumRects,
7799 _In_reads_(NumRects) const D3D12_RECT *pRects);
7800
7801 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7802 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7803 ID3D12GraphicsCommandList1 * This,
7804 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7805 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7806 _In_ ID3D12Resource *pResource,
7807 _In_ const UINT Values[ 4 ],
7808 _In_ UINT NumRects,
7809 _In_reads_(NumRects) const D3D12_RECT *pRects);
7810
7811 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7812 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7813 ID3D12GraphicsCommandList1 * This,
7814 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7815 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7816 _In_ ID3D12Resource *pResource,
7817 _In_ const FLOAT Values[ 4 ],
7818 _In_ UINT NumRects,
7819 _In_reads_(NumRects) const D3D12_RECT *pRects);
7820
7821 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7822 void ( STDMETHODCALLTYPE *DiscardResource )(
7823 ID3D12GraphicsCommandList1 * This,
7824 _In_ ID3D12Resource *pResource,
7825 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7826
7827 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7828 void ( STDMETHODCALLTYPE *BeginQuery )(
7829 ID3D12GraphicsCommandList1 * This,
7830 _In_ ID3D12QueryHeap *pQueryHeap,
7831 _In_ D3D12_QUERY_TYPE Type,
7832 _In_ UINT Index);
7833
7834 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7835 void ( STDMETHODCALLTYPE *EndQuery )(
7836 ID3D12GraphicsCommandList1 * This,
7837 _In_ ID3D12QueryHeap *pQueryHeap,
7838 _In_ D3D12_QUERY_TYPE Type,
7839 _In_ UINT Index);
7840
7841 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7842 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7843 ID3D12GraphicsCommandList1 * This,
7844 _In_ ID3D12QueryHeap *pQueryHeap,
7845 _In_ D3D12_QUERY_TYPE Type,
7846 _In_ UINT StartIndex,
7847 _In_ UINT NumQueries,
7848 _In_ ID3D12Resource *pDestinationBuffer,
7849 _In_ UINT64 AlignedDestinationBufferOffset);
7850
7851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7852 void ( STDMETHODCALLTYPE *SetPredication )(
7853 ID3D12GraphicsCommandList1 * This,
7854 _In_opt_ ID3D12Resource *pBuffer,
7855 _In_ UINT64 AlignedBufferOffset,
7856 _In_ D3D12_PREDICATION_OP Operation);
7857
7858 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7859 void ( STDMETHODCALLTYPE *SetMarker )(
7860 ID3D12GraphicsCommandList1 * This,
7861 UINT Metadata,
7862 _In_reads_bytes_opt_(Size) const void *pData,
7863 UINT Size);
7864
7865 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7866 void ( STDMETHODCALLTYPE *BeginEvent )(
7867 ID3D12GraphicsCommandList1 * This,
7868 UINT Metadata,
7869 _In_reads_bytes_opt_(Size) const void *pData,
7870 UINT Size);
7871
7872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7873 void ( STDMETHODCALLTYPE *EndEvent )(
7874 ID3D12GraphicsCommandList1 * This);
7875
7876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7877 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7878 ID3D12GraphicsCommandList1 * This,
7879 _In_ ID3D12CommandSignature *pCommandSignature,
7880 _In_ UINT MaxCommandCount,
7881 _In_ ID3D12Resource *pArgumentBuffer,
7882 _In_ UINT64 ArgumentBufferOffset,
7883 _In_opt_ ID3D12Resource *pCountBuffer,
7884 _In_ UINT64 CountBufferOffset);
7885
7886 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7887 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7888 ID3D12GraphicsCommandList1 * This,
7889 _In_ ID3D12Resource *pDstBuffer,
7890 UINT64 DstOffset,
7891 _In_ ID3D12Resource *pSrcBuffer,
7892 UINT64 SrcOffset,
7893 UINT Dependencies,
7894 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7895 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7896
7897 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7898 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7899 ID3D12GraphicsCommandList1 * This,
7900 _In_ ID3D12Resource *pDstBuffer,
7901 UINT64 DstOffset,
7902 _In_ ID3D12Resource *pSrcBuffer,
7903 UINT64 SrcOffset,
7904 UINT Dependencies,
7905 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7906 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7907
7908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7909 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7910 ID3D12GraphicsCommandList1 * This,
7911 _In_ FLOAT Min,
7912 _In_ FLOAT Max);
7913
7914 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7915 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7916 ID3D12GraphicsCommandList1 * This,
7917 _In_ UINT NumSamplesPerPixel,
7918 _In_ UINT NumPixels,
7919 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7920
7921 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7922 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7923 ID3D12GraphicsCommandList1 * This,
7924 _In_ ID3D12Resource *pDstResource,
7925 _In_ UINT DstSubresource,
7926 _In_ UINT DstX,
7927 _In_ UINT DstY,
7928 _In_ ID3D12Resource *pSrcResource,
7929 _In_ UINT SrcSubresource,
7930 _In_opt_ D3D12_RECT *pSrcRect,
7931 _In_ DXGI_FORMAT Format,
7932 _In_ D3D12_RESOLVE_MODE ResolveMode);
7933
7934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7935 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7936 ID3D12GraphicsCommandList1 * This,
7937 _In_ UINT Mask);
7938
7939 END_INTERFACE
7940 } ID3D12GraphicsCommandList1Vtbl;
7941
7942 interface ID3D12GraphicsCommandList1
7943 {
7944 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7945 };
7946
7947
7948
7949#ifdef COBJMACROS
7950
7951
7952#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7953 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7954
7955#define ID3D12GraphicsCommandList1_AddRef(This) \
7956 ( (This)->lpVtbl -> AddRef(This) )
7957
7958#define ID3D12GraphicsCommandList1_Release(This) \
7959 ( (This)->lpVtbl -> Release(This) )
7960
7961
7962#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7963 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7964
7965#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7966 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7967
7968#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7969 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7970
7971#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7972 ( (This)->lpVtbl -> SetName(This,Name) )
7973
7974
7975#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7976 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7977
7978
7979#define ID3D12GraphicsCommandList1_GetType(This) \
7980 ( (This)->lpVtbl -> GetType(This) )
7981
7982
7983#define ID3D12GraphicsCommandList1_Close(This) \
7984 ( (This)->lpVtbl -> Close(This) )
7985
7986#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7987 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7988
7989#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7990 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7991
7992#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7993 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7994
7995#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7996 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7997
7998#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7999 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8000
8001#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8002 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8003
8004#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8005 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8006
8007#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
8008 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8009
8010#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8011 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8012
8013#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8014 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8015
8016#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
8017 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8018
8019#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
8020 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8021
8022#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
8023 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8024
8025#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
8026 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8027
8028#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
8029 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8030
8031#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
8032 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8033
8034#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
8035 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8036
8037#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
8038 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8039
8040#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8041 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8042
8043#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
8044 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8045
8046#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
8047 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8048
8049#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8050 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8051
8052#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8053 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8054
8055#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8056 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8057
8058#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8059 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8060
8061#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8062 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8063
8064#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8065 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8066
8067#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8068 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8069
8070#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8071 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8072
8073#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8074 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8075
8076#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8077 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8078
8079#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8080 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8081
8082#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8083 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8084
8085#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
8086 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8087
8088#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8089 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8090
8091#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
8092 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8093
8094#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8095 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8096
8097#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8098 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8099
8100#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8101 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8102
8103#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8104 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8105
8106#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8107 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8108
8109#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
8110 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8111
8112#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
8113 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8114
8115#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
8116 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8117
8118#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8119 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8120
8121#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8122 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8123
8124#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
8125 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8126
8127#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
8128 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8129
8130#define ID3D12GraphicsCommandList1_EndEvent(This) \
8131 ( (This)->lpVtbl -> EndEvent(This) )
8132
8133#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8134 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8135
8136
8137#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8138 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8139
8140#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8141 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8142
8143#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
8144 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8145
8146#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8147 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8148
8149#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8150 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8151
8152#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
8153 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8154
8155#endif /* COBJMACROS */
8156
8157
8158#endif /* C style interface */
8159
8160
8161
8162
8163#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
8164
8165
8166/* interface __MIDL_itf_d3d12_0000_0019 */
8167/* [local] */
8168
8169typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
8170 {
8171 D3D12_GPU_VIRTUAL_ADDRESS Dest;
8172 UINT32 Value;
8173 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
8174
8175typedef
8176enum D3D12_WRITEBUFFERIMMEDIATE_MODE
8177 {
8178 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
8179 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
8180 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
8181 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
8182
8183
8184
8185extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
8186extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
8187
8188#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8189#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8190
8191/* interface ID3D12GraphicsCommandList2 */
8192/* [unique][local][object][uuid] */
8193
8194
8195EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
8196
8197#if defined(__cplusplus) && !defined(CINTERFACE)
8198
8199 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
8200 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
8201 {
8202 public:
8203 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
8204 UINT Count,
8205 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8206 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
8207
8208 };
8209
8210
8211#else /* C style interface */
8212
8213 typedef struct ID3D12GraphicsCommandList2Vtbl
8214 {
8215 BEGIN_INTERFACE
8216
8217 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8218 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8219 ID3D12GraphicsCommandList2 * This,
8220 REFIID riid,
8221 _COM_Outptr_ void **ppvObject);
8222
8223 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8224 ULONG ( STDMETHODCALLTYPE *AddRef )(
8225 ID3D12GraphicsCommandList2 * This);
8226
8227 DECLSPEC_XFGVIRT(IUnknown, Release)
8228 ULONG ( STDMETHODCALLTYPE *Release )(
8229 ID3D12GraphicsCommandList2 * This);
8230
8231 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8232 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8233 ID3D12GraphicsCommandList2 * This,
8234 _In_ REFGUID guid,
8235 _Inout_ UINT *pDataSize,
8236 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8237
8238 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8239 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8240 ID3D12GraphicsCommandList2 * This,
8241 _In_ REFGUID guid,
8242 _In_ UINT DataSize,
8243 _In_reads_bytes_opt_( DataSize ) const void *pData);
8244
8245 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8246 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8247 ID3D12GraphicsCommandList2 * This,
8248 _In_ REFGUID guid,
8249 _In_opt_ const IUnknown *pData);
8250
8251 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8252 HRESULT ( STDMETHODCALLTYPE *SetName )(
8253 ID3D12GraphicsCommandList2 * This,
8254 _In_z_ LPCWSTR Name);
8255
8256 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8257 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8258 ID3D12GraphicsCommandList2 * This,
8259 REFIID riid,
8260 _COM_Outptr_opt_ void **ppvDevice);
8261
8262 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8263 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8264 ID3D12GraphicsCommandList2 * This);
8265
8266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
8267 HRESULT ( STDMETHODCALLTYPE *Close )(
8268 ID3D12GraphicsCommandList2 * This);
8269
8270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
8271 HRESULT ( STDMETHODCALLTYPE *Reset )(
8272 ID3D12GraphicsCommandList2 * This,
8273 _In_ ID3D12CommandAllocator *pAllocator,
8274 _In_opt_ ID3D12PipelineState *pInitialState);
8275
8276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
8277 void ( STDMETHODCALLTYPE *ClearState )(
8278 ID3D12GraphicsCommandList2 * This,
8279 _In_opt_ ID3D12PipelineState *pPipelineState);
8280
8281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
8282 void ( STDMETHODCALLTYPE *DrawInstanced )(
8283 ID3D12GraphicsCommandList2 * This,
8284 _In_ UINT VertexCountPerInstance,
8285 _In_ UINT InstanceCount,
8286 _In_ UINT StartVertexLocation,
8287 _In_ UINT StartInstanceLocation);
8288
8289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
8290 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
8291 ID3D12GraphicsCommandList2 * This,
8292 _In_ UINT IndexCountPerInstance,
8293 _In_ UINT InstanceCount,
8294 _In_ UINT StartIndexLocation,
8295 _In_ INT BaseVertexLocation,
8296 _In_ UINT StartInstanceLocation);
8297
8298 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
8299 void ( STDMETHODCALLTYPE *Dispatch )(
8300 ID3D12GraphicsCommandList2 * This,
8301 _In_ UINT ThreadGroupCountX,
8302 _In_ UINT ThreadGroupCountY,
8303 _In_ UINT ThreadGroupCountZ);
8304
8305 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
8306 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
8307 ID3D12GraphicsCommandList2 * This,
8308 _In_ ID3D12Resource *pDstBuffer,
8309 UINT64 DstOffset,
8310 _In_ ID3D12Resource *pSrcBuffer,
8311 UINT64 SrcOffset,
8312 UINT64 NumBytes);
8313
8314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
8315 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
8316 ID3D12GraphicsCommandList2 * This,
8317 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
8318 UINT DstX,
8319 UINT DstY,
8320 UINT DstZ,
8321 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
8322 _In_opt_ const D3D12_BOX *pSrcBox);
8323
8324 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
8325 void ( STDMETHODCALLTYPE *CopyResource )(
8326 ID3D12GraphicsCommandList2 * This,
8327 _In_ ID3D12Resource *pDstResource,
8328 _In_ ID3D12Resource *pSrcResource);
8329
8330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
8331 void ( STDMETHODCALLTYPE *CopyTiles )(
8332 ID3D12GraphicsCommandList2 * This,
8333 _In_ ID3D12Resource *pTiledResource,
8334 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
8335 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
8336 _In_ ID3D12Resource *pBuffer,
8337 UINT64 BufferStartOffsetInBytes,
8338 D3D12_TILE_COPY_FLAGS Flags);
8339
8340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
8341 void ( STDMETHODCALLTYPE *ResolveSubresource )(
8342 ID3D12GraphicsCommandList2 * This,
8343 _In_ ID3D12Resource *pDstResource,
8344 _In_ UINT DstSubresource,
8345 _In_ ID3D12Resource *pSrcResource,
8346 _In_ UINT SrcSubresource,
8347 _In_ DXGI_FORMAT Format);
8348
8349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
8350 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
8351 ID3D12GraphicsCommandList2 * This,
8352 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
8353
8354 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
8355 void ( STDMETHODCALLTYPE *RSSetViewports )(
8356 ID3D12GraphicsCommandList2 * This,
8357 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
8358 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
8359
8360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
8361 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
8362 ID3D12GraphicsCommandList2 * This,
8363 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
8364 _In_reads_( NumRects) const D3D12_RECT *pRects);
8365
8366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
8367 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
8368 ID3D12GraphicsCommandList2 * This,
8369 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
8370
8371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
8372 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
8373 ID3D12GraphicsCommandList2 * This,
8374 _In_ UINT StencilRef);
8375
8376 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
8377 void ( STDMETHODCALLTYPE *SetPipelineState )(
8378 ID3D12GraphicsCommandList2 * This,
8379 _In_ ID3D12PipelineState *pPipelineState);
8380
8381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
8382 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8383 ID3D12GraphicsCommandList2 * This,
8384 _In_ UINT NumBarriers,
8385 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8386
8387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
8388 void ( STDMETHODCALLTYPE *ExecuteBundle )(
8389 ID3D12GraphicsCommandList2 * This,
8390 _In_ ID3D12GraphicsCommandList *pCommandList);
8391
8392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
8393 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
8394 ID3D12GraphicsCommandList2 * This,
8395 _In_ UINT NumDescriptorHeaps,
8396 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
8397
8398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
8399 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
8400 ID3D12GraphicsCommandList2 * This,
8401 _In_opt_ ID3D12RootSignature *pRootSignature);
8402
8403 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
8404 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
8405 ID3D12GraphicsCommandList2 * This,
8406 _In_opt_ ID3D12RootSignature *pRootSignature);
8407
8408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
8409 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
8410 ID3D12GraphicsCommandList2 * This,
8411 _In_ UINT RootParameterIndex,
8412 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8413
8414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
8415 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
8416 ID3D12GraphicsCommandList2 * This,
8417 _In_ UINT RootParameterIndex,
8418 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8419
8420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
8421 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
8422 ID3D12GraphicsCommandList2 * This,
8423 _In_ UINT RootParameterIndex,
8424 _In_ UINT SrcData,
8425 _In_ UINT DestOffsetIn32BitValues);
8426
8427 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
8428 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
8429 ID3D12GraphicsCommandList2 * This,
8430 _In_ UINT RootParameterIndex,
8431 _In_ UINT SrcData,
8432 _In_ UINT DestOffsetIn32BitValues);
8433
8434 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
8435 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
8436 ID3D12GraphicsCommandList2 * This,
8437 _In_ UINT RootParameterIndex,
8438 _In_ UINT Num32BitValuesToSet,
8439 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8440 _In_ UINT DestOffsetIn32BitValues);
8441
8442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
8443 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
8444 ID3D12GraphicsCommandList2 * This,
8445 _In_ UINT RootParameterIndex,
8446 _In_ UINT Num32BitValuesToSet,
8447 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8448 _In_ UINT DestOffsetIn32BitValues);
8449
8450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
8451 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
8452 ID3D12GraphicsCommandList2 * This,
8453 _In_ UINT RootParameterIndex,
8454 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8455
8456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
8457 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
8458 ID3D12GraphicsCommandList2 * This,
8459 _In_ UINT RootParameterIndex,
8460 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8461
8462 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
8463 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
8464 ID3D12GraphicsCommandList2 * This,
8465 _In_ UINT RootParameterIndex,
8466 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8467
8468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
8469 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
8470 ID3D12GraphicsCommandList2 * This,
8471 _In_ UINT RootParameterIndex,
8472 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8473
8474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
8475 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
8476 ID3D12GraphicsCommandList2 * This,
8477 _In_ UINT RootParameterIndex,
8478 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8479
8480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
8481 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
8482 ID3D12GraphicsCommandList2 * This,
8483 _In_ UINT RootParameterIndex,
8484 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8485
8486 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
8487 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
8488 ID3D12GraphicsCommandList2 * This,
8489 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
8490
8491 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
8492 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
8493 ID3D12GraphicsCommandList2 * This,
8494 _In_ UINT StartSlot,
8495 _In_ UINT NumViews,
8496 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
8497
8498 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
8499 void ( STDMETHODCALLTYPE *SOSetTargets )(
8500 ID3D12GraphicsCommandList2 * This,
8501 _In_ UINT StartSlot,
8502 _In_ UINT NumViews,
8503 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
8504
8505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
8506 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
8507 ID3D12GraphicsCommandList2 * This,
8508 _In_ UINT NumRenderTargetDescriptors,
8509 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
8510 _In_ BOOL RTsSingleHandleToDescriptorRange,
8511 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
8512
8513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
8514 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
8515 ID3D12GraphicsCommandList2 * This,
8516 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
8517 _In_ D3D12_CLEAR_FLAGS ClearFlags,
8518 _In_ FLOAT Depth,
8519 _In_ UINT8 Stencil,
8520 _In_ UINT NumRects,
8521 _In_reads_(NumRects) const D3D12_RECT *pRects);
8522
8523 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
8524 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
8525 ID3D12GraphicsCommandList2 * This,
8526 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
8527 _In_ const FLOAT ColorRGBA[ 4 ],
8528 _In_ UINT NumRects,
8529 _In_reads_(NumRects) const D3D12_RECT *pRects);
8530
8531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
8532 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
8533 ID3D12GraphicsCommandList2 * This,
8534 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8535 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8536 _In_ ID3D12Resource *pResource,
8537 _In_ const UINT Values[ 4 ],
8538 _In_ UINT NumRects,
8539 _In_reads_(NumRects) const D3D12_RECT *pRects);
8540
8541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
8542 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
8543 ID3D12GraphicsCommandList2 * This,
8544 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8545 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8546 _In_ ID3D12Resource *pResource,
8547 _In_ const FLOAT Values[ 4 ],
8548 _In_ UINT NumRects,
8549 _In_reads_(NumRects) const D3D12_RECT *pRects);
8550
8551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
8552 void ( STDMETHODCALLTYPE *DiscardResource )(
8553 ID3D12GraphicsCommandList2 * This,
8554 _In_ ID3D12Resource *pResource,
8555 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8556
8557 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
8558 void ( STDMETHODCALLTYPE *BeginQuery )(
8559 ID3D12GraphicsCommandList2 * This,
8560 _In_ ID3D12QueryHeap *pQueryHeap,
8561 _In_ D3D12_QUERY_TYPE Type,
8562 _In_ UINT Index);
8563
8564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
8565 void ( STDMETHODCALLTYPE *EndQuery )(
8566 ID3D12GraphicsCommandList2 * This,
8567 _In_ ID3D12QueryHeap *pQueryHeap,
8568 _In_ D3D12_QUERY_TYPE Type,
8569 _In_ UINT Index);
8570
8571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
8572 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8573 ID3D12GraphicsCommandList2 * This,
8574 _In_ ID3D12QueryHeap *pQueryHeap,
8575 _In_ D3D12_QUERY_TYPE Type,
8576 _In_ UINT StartIndex,
8577 _In_ UINT NumQueries,
8578 _In_ ID3D12Resource *pDestinationBuffer,
8579 _In_ UINT64 AlignedDestinationBufferOffset);
8580
8581 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
8582 void ( STDMETHODCALLTYPE *SetPredication )(
8583 ID3D12GraphicsCommandList2 * This,
8584 _In_opt_ ID3D12Resource *pBuffer,
8585 _In_ UINT64 AlignedBufferOffset,
8586 _In_ D3D12_PREDICATION_OP Operation);
8587
8588 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
8589 void ( STDMETHODCALLTYPE *SetMarker )(
8590 ID3D12GraphicsCommandList2 * This,
8591 UINT Metadata,
8592 _In_reads_bytes_opt_(Size) const void *pData,
8593 UINT Size);
8594
8595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
8596 void ( STDMETHODCALLTYPE *BeginEvent )(
8597 ID3D12GraphicsCommandList2 * This,
8598 UINT Metadata,
8599 _In_reads_bytes_opt_(Size) const void *pData,
8600 UINT Size);
8601
8602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
8603 void ( STDMETHODCALLTYPE *EndEvent )(
8604 ID3D12GraphicsCommandList2 * This);
8605
8606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
8607 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
8608 ID3D12GraphicsCommandList2 * This,
8609 _In_ ID3D12CommandSignature *pCommandSignature,
8610 _In_ UINT MaxCommandCount,
8611 _In_ ID3D12Resource *pArgumentBuffer,
8612 _In_ UINT64 ArgumentBufferOffset,
8613 _In_opt_ ID3D12Resource *pCountBuffer,
8614 _In_ UINT64 CountBufferOffset);
8615
8616 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
8617 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
8618 ID3D12GraphicsCommandList2 * This,
8619 _In_ ID3D12Resource *pDstBuffer,
8620 UINT64 DstOffset,
8621 _In_ ID3D12Resource *pSrcBuffer,
8622 UINT64 SrcOffset,
8623 UINT Dependencies,
8624 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8625 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8626
8627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
8628 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
8629 ID3D12GraphicsCommandList2 * This,
8630 _In_ ID3D12Resource *pDstBuffer,
8631 UINT64 DstOffset,
8632 _In_ ID3D12Resource *pSrcBuffer,
8633 UINT64 SrcOffset,
8634 UINT Dependencies,
8635 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8636 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8637
8638 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
8639 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
8640 ID3D12GraphicsCommandList2 * This,
8641 _In_ FLOAT Min,
8642 _In_ FLOAT Max);
8643
8644 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
8645 void ( STDMETHODCALLTYPE *SetSamplePositions )(
8646 ID3D12GraphicsCommandList2 * This,
8647 _In_ UINT NumSamplesPerPixel,
8648 _In_ UINT NumPixels,
8649 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
8650
8651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
8652 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
8653 ID3D12GraphicsCommandList2 * This,
8654 _In_ ID3D12Resource *pDstResource,
8655 _In_ UINT DstSubresource,
8656 _In_ UINT DstX,
8657 _In_ UINT DstY,
8658 _In_ ID3D12Resource *pSrcResource,
8659 _In_ UINT SrcSubresource,
8660 _In_opt_ D3D12_RECT *pSrcRect,
8661 _In_ DXGI_FORMAT Format,
8662 _In_ D3D12_RESOLVE_MODE ResolveMode);
8663
8664 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
8665 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
8666 ID3D12GraphicsCommandList2 * This,
8667 _In_ UINT Mask);
8668
8669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
8670 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8671 ID3D12GraphicsCommandList2 * This,
8672 UINT Count,
8673 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8674 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8675
8676 END_INTERFACE
8677 } ID3D12GraphicsCommandList2Vtbl;
8678
8679 interface ID3D12GraphicsCommandList2
8680 {
8681 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
8682 };
8683
8684
8685
8686#ifdef COBJMACROS
8687
8688
8689#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
8690 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8691
8692#define ID3D12GraphicsCommandList2_AddRef(This) \
8693 ( (This)->lpVtbl -> AddRef(This) )
8694
8695#define ID3D12GraphicsCommandList2_Release(This) \
8696 ( (This)->lpVtbl -> Release(This) )
8697
8698
8699#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8700 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8701
8702#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8703 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8704
8705#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
8706 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8707
8708#define ID3D12GraphicsCommandList2_SetName(This,Name) \
8709 ( (This)->lpVtbl -> SetName(This,Name) )
8710
8711
8712#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
8713 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8714
8715
8716#define ID3D12GraphicsCommandList2_GetType(This) \
8717 ( (This)->lpVtbl -> GetType(This) )
8718
8719
8720#define ID3D12GraphicsCommandList2_Close(This) \
8721 ( (This)->lpVtbl -> Close(This) )
8722
8723#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
8724 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
8725
8726#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
8727 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
8728
8729#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
8730 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
8731
8732#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
8733 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
8734
8735#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
8736 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8737
8738#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8739 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8740
8741#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8742 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8743
8744#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
8745 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8746
8747#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8748 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8749
8750#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8751 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8752
8753#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
8754 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8755
8756#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
8757 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8758
8759#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
8760 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8761
8762#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
8763 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8764
8765#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
8766 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8767
8768#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
8769 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8770
8771#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8772 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8773
8774#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
8775 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8776
8777#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8778 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8779
8780#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
8781 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8782
8783#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
8784 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8785
8786#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8787 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8788
8789#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8790 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8791
8792#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8793 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8794
8795#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8796 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8797
8798#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8799 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8800
8801#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8802 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8803
8804#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8805 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8806
8807#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8808 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8809
8810#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8811 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8812
8813#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8814 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8815
8816#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8817 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8818
8819#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8820 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8821
8822#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
8823 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8824
8825#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8826 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8827
8828#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
8829 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8830
8831#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8832 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8833
8834#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8835 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8836
8837#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8838 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8839
8840#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8841 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8842
8843#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8844 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8845
8846#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8847 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8848
8849#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8850 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8851
8852#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8853 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8854
8855#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8856 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8857
8858#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8859 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8860
8861#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8862 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8863
8864#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8865 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8866
8867#define ID3D12GraphicsCommandList2_EndEvent(This) \
8868 ( (This)->lpVtbl -> EndEvent(This) )
8869
8870#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8871 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8872
8873
8874#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8875 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8876
8877#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8878 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8879
8880#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8881 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8882
8883#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8884 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8885
8886#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8887 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8888
8889#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8890 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8891
8892
8893#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8894 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8895
8896#endif /* COBJMACROS */
8897
8898
8899#endif /* C style interface */
8900
8901
8902
8903
8904#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8905
8906
8907#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8908#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8909
8910/* interface ID3D12CommandQueue */
8911/* [unique][local][object][uuid] */
8912
8913
8914EXTERN_C const IID IID_ID3D12CommandQueue;
8915
8916#if defined(__cplusplus) && !defined(CINTERFACE)
8917
8918 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8919 ID3D12CommandQueue : public ID3D12Pageable
8920 {
8921 public:
8922 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8923 _In_ ID3D12Resource *pResource,
8924 UINT NumResourceRegions,
8925 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8926 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8927 _In_opt_ ID3D12Heap *pHeap,
8928 UINT NumRanges,
8929 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8930 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8931 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8932 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8933
8934 virtual void STDMETHODCALLTYPE CopyTileMappings(
8935 _In_ ID3D12Resource *pDstResource,
8936 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8937 _In_ ID3D12Resource *pSrcResource,
8938 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8939 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8940 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8941
8942 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8943 _In_ UINT NumCommandLists,
8944 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8945
8946 virtual void STDMETHODCALLTYPE SetMarker(
8947 UINT Metadata,
8948 _In_reads_bytes_opt_(Size) const void *pData,
8949 UINT Size) = 0;
8950
8951 virtual void STDMETHODCALLTYPE BeginEvent(
8952 UINT Metadata,
8953 _In_reads_bytes_opt_(Size) const void *pData,
8954 UINT Size) = 0;
8955
8956 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8957
8958 virtual HRESULT STDMETHODCALLTYPE Signal(
8959 ID3D12Fence *pFence,
8960 UINT64 Value) = 0;
8961
8962 virtual HRESULT STDMETHODCALLTYPE Wait(
8963 ID3D12Fence *pFence,
8964 UINT64 Value) = 0;
8965
8966 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8967 _Out_ UINT64 *pFrequency) = 0;
8968
8969 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8970 _Out_ UINT64 *pGpuTimestamp,
8971 _Out_ UINT64 *pCpuTimestamp) = 0;
8972
8973#if defined(_MSC_VER) || !defined(_WIN32)
8974 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8975#else
8976 virtual D3D12_COMMAND_QUEUE_DESC *STDMETHODCALLTYPE GetDesc(
8977 D3D12_COMMAND_QUEUE_DESC * RetVal) = 0;
8978#endif
8979
8980 };
8981
8982
8983#else /* C style interface */
8984
8985 typedef struct ID3D12CommandQueueVtbl
8986 {
8987 BEGIN_INTERFACE
8988
8989 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8990 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8991 ID3D12CommandQueue * This,
8992 REFIID riid,
8993 _COM_Outptr_ void **ppvObject);
8994
8995 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8996 ULONG ( STDMETHODCALLTYPE *AddRef )(
8997 ID3D12CommandQueue * This);
8998
8999 DECLSPEC_XFGVIRT(IUnknown, Release)
9000 ULONG ( STDMETHODCALLTYPE *Release )(
9001 ID3D12CommandQueue * This);
9002
9003 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9004 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9005 ID3D12CommandQueue * This,
9006 _In_ REFGUID guid,
9007 _Inout_ UINT *pDataSize,
9008 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9009
9010 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9011 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9012 ID3D12CommandQueue * This,
9013 _In_ REFGUID guid,
9014 _In_ UINT DataSize,
9015 _In_reads_bytes_opt_( DataSize ) const void *pData);
9016
9017 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9018 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9019 ID3D12CommandQueue * This,
9020 _In_ REFGUID guid,
9021 _In_opt_ const IUnknown *pData);
9022
9023 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9024 HRESULT ( STDMETHODCALLTYPE *SetName )(
9025 ID3D12CommandQueue * This,
9026 _In_z_ LPCWSTR Name);
9027
9028 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9029 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9030 ID3D12CommandQueue * This,
9031 REFIID riid,
9032 _COM_Outptr_opt_ void **ppvDevice);
9033
9034 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9035 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9036 ID3D12CommandQueue * This,
9037 _In_ ID3D12Resource *pResource,
9038 UINT NumResourceRegions,
9039 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9040 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9041 _In_opt_ ID3D12Heap *pHeap,
9042 UINT NumRanges,
9043 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9044 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9045 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9046 D3D12_TILE_MAPPING_FLAGS Flags);
9047
9048 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9049 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9050 ID3D12CommandQueue * This,
9051 _In_ ID3D12Resource *pDstResource,
9052 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9053 _In_ ID3D12Resource *pSrcResource,
9054 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9055 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9056 D3D12_TILE_MAPPING_FLAGS Flags);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9059 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9060 ID3D12CommandQueue * This,
9061 _In_ UINT NumCommandLists,
9062 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9063
9064 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9065 void ( STDMETHODCALLTYPE *SetMarker )(
9066 ID3D12CommandQueue * This,
9067 UINT Metadata,
9068 _In_reads_bytes_opt_(Size) const void *pData,
9069 UINT Size);
9070
9071 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9072 void ( STDMETHODCALLTYPE *BeginEvent )(
9073 ID3D12CommandQueue * This,
9074 UINT Metadata,
9075 _In_reads_bytes_opt_(Size) const void *pData,
9076 UINT Size);
9077
9078 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9079 void ( STDMETHODCALLTYPE *EndEvent )(
9080 ID3D12CommandQueue * This);
9081
9082 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9083 HRESULT ( STDMETHODCALLTYPE *Signal )(
9084 ID3D12CommandQueue * This,
9085 ID3D12Fence *pFence,
9086 UINT64 Value);
9087
9088 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9089 HRESULT ( STDMETHODCALLTYPE *Wait )(
9090 ID3D12CommandQueue * This,
9091 ID3D12Fence *pFence,
9092 UINT64 Value);
9093
9094 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9095 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9096 ID3D12CommandQueue * This,
9097 _Out_ UINT64 *pFrequency);
9098
9099 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9100 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9101 ID3D12CommandQueue * This,
9102 _Out_ UINT64 *pGpuTimestamp,
9103 _Out_ UINT64 *pCpuTimestamp);
9104
9105 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9106#if !defined(_WIN32)
9107 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9108 ID3D12CommandQueue * This);
9109
9110#else
9111 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9112 ID3D12CommandQueue * This,
9113 D3D12_COMMAND_QUEUE_DESC * RetVal);
9114
9115#endif
9116
9117 END_INTERFACE
9118 } ID3D12CommandQueueVtbl;
9119
9120 interface ID3D12CommandQueue
9121 {
9122 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
9123 };
9124
9125
9126
9127#ifdef COBJMACROS
9128
9129
9130#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
9131 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9132
9133#define ID3D12CommandQueue_AddRef(This) \
9134 ( (This)->lpVtbl -> AddRef(This) )
9135
9136#define ID3D12CommandQueue_Release(This) \
9137 ( (This)->lpVtbl -> Release(This) )
9138
9139
9140#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
9141 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9142
9143#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
9144 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9145
9146#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
9147 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9148
9149#define ID3D12CommandQueue_SetName(This,Name) \
9150 ( (This)->lpVtbl -> SetName(This,Name) )
9151
9152
9153#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
9154 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9155
9156
9157
9158#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9159 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9160
9161#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9162 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9163
9164#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9165 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9166
9167#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
9168 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9169
9170#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
9171 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9172
9173#define ID3D12CommandQueue_EndEvent(This) \
9174 ( (This)->lpVtbl -> EndEvent(This) )
9175
9176#define ID3D12CommandQueue_Signal(This,pFence,Value) \
9177 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9178
9179#define ID3D12CommandQueue_Wait(This,pFence,Value) \
9180 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9181
9182#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
9183 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9184
9185#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9186 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9187#if !defined(_WIN32)
9188
9189#define ID3D12CommandQueue_GetDesc(This) \
9190 ( (This)->lpVtbl -> GetDesc(This) )
9191#else
9192#define ID3D12CommandQueue_GetDesc(This,RetVal) \
9193 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9194#endif
9195
9196#endif /* COBJMACROS */
9197
9198
9199#endif /* C style interface */
9200
9201
9202
9203
9204#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
9205
9206
9207/* interface __MIDL_itf_d3d12_0000_0021 */
9208/* [local] */
9209
9210typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
9211 {
9212 _Out_ UINT ComputeQueuesPer3DQueue;
9213 } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
9214
9215typedef
9216enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
9217 {
9218 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
9219 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
9220 } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
9221
9222typedef
9223enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
9224 {
9225 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
9226 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
9227 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
9228 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
9229 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
9230 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
9231 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
9232 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
9233 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
9234 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
9235 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
9236 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
9237 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
9238 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
9239 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
9240 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
9241 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
9242 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
9243 } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
9244
9245
9246
9247extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
9248extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
9249
9250#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
9251#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
9252
9253/* interface ID3D12CommandQueue1 */
9254/* [unique][local][object][uuid] */
9255
9256
9257EXTERN_C const IID IID_ID3D12CommandQueue1;
9258
9259#if defined(__cplusplus) && !defined(CINTERFACE)
9260
9261 MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
9262 ID3D12CommandQueue1 : public ID3D12CommandQueue
9263 {
9264 public:
9265 virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
9266 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
9267
9268 virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
9269 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
9270
9271 virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
9272 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
9273
9274 virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
9275 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
9276
9277 };
9278
9279
9280#else /* C style interface */
9281
9282 typedef struct ID3D12CommandQueue1Vtbl
9283 {
9284 BEGIN_INTERFACE
9285
9286 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9287 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9288 ID3D12CommandQueue1 * This,
9289 REFIID riid,
9290 _COM_Outptr_ void **ppvObject);
9291
9292 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9293 ULONG ( STDMETHODCALLTYPE *AddRef )(
9294 ID3D12CommandQueue1 * This);
9295
9296 DECLSPEC_XFGVIRT(IUnknown, Release)
9297 ULONG ( STDMETHODCALLTYPE *Release )(
9298 ID3D12CommandQueue1 * This);
9299
9300 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9301 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9302 ID3D12CommandQueue1 * This,
9303 _In_ REFGUID guid,
9304 _Inout_ UINT *pDataSize,
9305 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9306
9307 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9308 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9309 ID3D12CommandQueue1 * This,
9310 _In_ REFGUID guid,
9311 _In_ UINT DataSize,
9312 _In_reads_bytes_opt_( DataSize ) const void *pData);
9313
9314 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9315 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9316 ID3D12CommandQueue1 * This,
9317 _In_ REFGUID guid,
9318 _In_opt_ const IUnknown *pData);
9319
9320 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9321 HRESULT ( STDMETHODCALLTYPE *SetName )(
9322 ID3D12CommandQueue1 * This,
9323 _In_z_ LPCWSTR Name);
9324
9325 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9326 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9327 ID3D12CommandQueue1 * This,
9328 REFIID riid,
9329 _COM_Outptr_opt_ void **ppvDevice);
9330
9331 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9332 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9333 ID3D12CommandQueue1 * This,
9334 _In_ ID3D12Resource *pResource,
9335 UINT NumResourceRegions,
9336 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9337 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9338 _In_opt_ ID3D12Heap *pHeap,
9339 UINT NumRanges,
9340 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9341 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9342 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9343 D3D12_TILE_MAPPING_FLAGS Flags);
9344
9345 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9346 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9347 ID3D12CommandQueue1 * This,
9348 _In_ ID3D12Resource *pDstResource,
9349 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9350 _In_ ID3D12Resource *pSrcResource,
9351 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9352 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9353 D3D12_TILE_MAPPING_FLAGS Flags);
9354
9355 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9356 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9357 ID3D12CommandQueue1 * This,
9358 _In_ UINT NumCommandLists,
9359 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9360
9361 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9362 void ( STDMETHODCALLTYPE *SetMarker )(
9363 ID3D12CommandQueue1 * This,
9364 UINT Metadata,
9365 _In_reads_bytes_opt_(Size) const void *pData,
9366 UINT Size);
9367
9368 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9369 void ( STDMETHODCALLTYPE *BeginEvent )(
9370 ID3D12CommandQueue1 * This,
9371 UINT Metadata,
9372 _In_reads_bytes_opt_(Size) const void *pData,
9373 UINT Size);
9374
9375 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9376 void ( STDMETHODCALLTYPE *EndEvent )(
9377 ID3D12CommandQueue1 * This);
9378
9379 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9380 HRESULT ( STDMETHODCALLTYPE *Signal )(
9381 ID3D12CommandQueue1 * This,
9382 ID3D12Fence *pFence,
9383 UINT64 Value);
9384
9385 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9386 HRESULT ( STDMETHODCALLTYPE *Wait )(
9387 ID3D12CommandQueue1 * This,
9388 ID3D12Fence *pFence,
9389 UINT64 Value);
9390
9391 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9392 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9393 ID3D12CommandQueue1 * This,
9394 _Out_ UINT64 *pFrequency);
9395
9396 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9397 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9398 ID3D12CommandQueue1 * This,
9399 _Out_ UINT64 *pGpuTimestamp,
9400 _Out_ UINT64 *pCpuTimestamp);
9401
9402 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9403#if !defined(_WIN32)
9404 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9405 ID3D12CommandQueue1 * This);
9406
9407#else
9408 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9409 ID3D12CommandQueue1 * This,
9410 D3D12_COMMAND_QUEUE_DESC * RetVal);
9411
9412#endif
9413
9414 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
9415 HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
9416 ID3D12CommandQueue1 * This,
9417 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
9418
9419 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
9420 HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
9421 ID3D12CommandQueue1 * This,
9422 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
9423
9424 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
9425 HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
9426 ID3D12CommandQueue1 * This,
9427 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
9428
9429 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
9430 HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
9431 ID3D12CommandQueue1 * This,
9432 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
9433
9434 END_INTERFACE
9435 } ID3D12CommandQueue1Vtbl;
9436
9437 interface ID3D12CommandQueue1
9438 {
9439 CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
9440 };
9441
9442
9443
9444#ifdef COBJMACROS
9445
9446
9447#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
9448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9449
9450#define ID3D12CommandQueue1_AddRef(This) \
9451 ( (This)->lpVtbl -> AddRef(This) )
9452
9453#define ID3D12CommandQueue1_Release(This) \
9454 ( (This)->lpVtbl -> Release(This) )
9455
9456
9457#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
9458 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9459
9460#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
9461 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9462
9463#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
9464 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9465
9466#define ID3D12CommandQueue1_SetName(This,Name) \
9467 ( (This)->lpVtbl -> SetName(This,Name) )
9468
9469
9470#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
9471 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9472
9473
9474
9475#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9476 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9477
9478#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9479 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9480
9481#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9482 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9483
9484#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
9485 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9486
9487#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
9488 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9489
9490#define ID3D12CommandQueue1_EndEvent(This) \
9491 ( (This)->lpVtbl -> EndEvent(This) )
9492
9493#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
9494 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9495
9496#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
9497 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9498
9499#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
9500 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9501
9502#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9503 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9504#if !defined(_WIN32)
9505
9506#define ID3D12CommandQueue1_GetDesc(This) \
9507 ( (This)->lpVtbl -> GetDesc(This) )
9508#else
9509#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
9510 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9511#endif
9512
9513
9514#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
9515 ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
9516
9517#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
9518 ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
9519
9520#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
9521 ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
9522
9523#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
9524 ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
9525
9526#endif /* COBJMACROS */
9527
9528
9529#endif /* C style interface */
9530
9531
9532
9533
9534#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
9535
9536
9537#ifndef __ID3D12Device_INTERFACE_DEFINED__
9538#define __ID3D12Device_INTERFACE_DEFINED__
9539
9540/* interface ID3D12Device */
9541/* [unique][local][object][uuid] */
9542
9543
9544EXTERN_C const IID IID_ID3D12Device;
9545
9546#if defined(__cplusplus) && !defined(CINTERFACE)
9547
9548 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
9549 ID3D12Device : public ID3D12Object
9550 {
9551 public:
9552 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
9553
9554 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
9555 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9556 REFIID riid,
9557 _COM_Outptr_ void **ppCommandQueue) = 0;
9558
9559 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
9560 _In_ D3D12_COMMAND_LIST_TYPE type,
9561 REFIID riid,
9562 _COM_Outptr_ void **ppCommandAllocator) = 0;
9563
9564 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
9565 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9566 REFIID riid,
9567 _COM_Outptr_ void **ppPipelineState) = 0;
9568
9569 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
9570 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9571 REFIID riid,
9572 _COM_Outptr_ void **ppPipelineState) = 0;
9573
9574 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
9575 _In_ UINT nodeMask,
9576 _In_ D3D12_COMMAND_LIST_TYPE type,
9577 _In_ ID3D12CommandAllocator *pCommandAllocator,
9578 _In_opt_ ID3D12PipelineState *pInitialState,
9579 REFIID riid,
9580 _COM_Outptr_ void **ppCommandList) = 0;
9581
9582 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
9583 D3D12_FEATURE Feature,
9584 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9585 UINT FeatureSupportDataSize) = 0;
9586
9587 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
9588 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9589 REFIID riid,
9590 _COM_Outptr_ void **ppvHeap) = 0;
9591
9592 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
9593 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
9594
9595 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
9596 _In_ UINT nodeMask,
9597 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9598 _In_ SIZE_T blobLengthInBytes,
9599 REFIID riid,
9600 _COM_Outptr_ void **ppvRootSignature) = 0;
9601
9602 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
9603 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9604 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9605
9606 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
9607 _In_opt_ ID3D12Resource *pResource,
9608 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9609 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9610
9611 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
9612 _In_opt_ ID3D12Resource *pResource,
9613 _In_opt_ ID3D12Resource *pCounterResource,
9614 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9615 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9616
9617 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
9618 _In_opt_ ID3D12Resource *pResource,
9619 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9620 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9621
9622 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
9623 _In_opt_ ID3D12Resource *pResource,
9624 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9626
9627 virtual void STDMETHODCALLTYPE CreateSampler(
9628 _In_ const D3D12_SAMPLER_DESC *pDesc,
9629 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9630
9631 virtual void STDMETHODCALLTYPE CopyDescriptors(
9632 _In_ UINT NumDestDescriptorRanges,
9633 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9634 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9635 _In_ UINT NumSrcDescriptorRanges,
9636 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9637 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9638 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9639
9640 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
9641 _In_ UINT NumDescriptors,
9642 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9643 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9644 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9645
9646#if defined(_MSC_VER) || !defined(_WIN32)
9647 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
9648 _In_ UINT visibleMask,
9649 _In_ UINT numResourceDescs,
9650 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9651#else
9652 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
9653 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9654 _In_ UINT visibleMask,
9655 _In_ UINT numResourceDescs,
9656 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9657#endif
9658
9659#if defined(_MSC_VER) || !defined(_WIN32)
9660 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
9661 _In_ UINT nodeMask,
9662 D3D12_HEAP_TYPE heapType) = 0;
9663#else
9664 virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
9665 D3D12_HEAP_PROPERTIES * RetVal,
9666 _In_ UINT nodeMask,
9667 D3D12_HEAP_TYPE heapType) = 0;
9668#endif
9669
9670 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
9671 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9672 D3D12_HEAP_FLAGS HeapFlags,
9673 _In_ const D3D12_RESOURCE_DESC *pDesc,
9674 D3D12_RESOURCE_STATES InitialResourceState,
9675 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9676 REFIID riidResource,
9677 _COM_Outptr_opt_ void **ppvResource) = 0;
9678
9679 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
9680 _In_ const D3D12_HEAP_DESC *pDesc,
9681 REFIID riid,
9682 _COM_Outptr_opt_ void **ppvHeap) = 0;
9683
9684 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
9685 _In_ ID3D12Heap *pHeap,
9686 UINT64 HeapOffset,
9687 _In_ const D3D12_RESOURCE_DESC *pDesc,
9688 D3D12_RESOURCE_STATES InitialState,
9689 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9690 REFIID riid,
9691 _COM_Outptr_opt_ void **ppvResource) = 0;
9692
9693 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
9694 _In_ const D3D12_RESOURCE_DESC *pDesc,
9695 D3D12_RESOURCE_STATES InitialState,
9696 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9697 REFIID riid,
9698 _COM_Outptr_opt_ void **ppvResource) = 0;
9699
9700 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
9701 _In_ ID3D12DeviceChild *pObject,
9702 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9703 DWORD Access,
9704 _In_opt_ LPCWSTR Name,
9705 _Out_ HANDLE *pHandle) = 0;
9706
9707 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
9708 _In_ HANDLE NTHandle,
9709 REFIID riid,
9710 _COM_Outptr_opt_ void **ppvObj) = 0;
9711
9712 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
9713 _In_ LPCWSTR Name,
9714 DWORD Access,
9715 /* [annotation][out] */
9716 _Out_ HANDLE *pNTHandle) = 0;
9717
9718 virtual HRESULT STDMETHODCALLTYPE MakeResident(
9719 UINT NumObjects,
9720 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9721
9722 virtual HRESULT STDMETHODCALLTYPE Evict(
9723 UINT NumObjects,
9724 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9725
9726 virtual HRESULT STDMETHODCALLTYPE CreateFence(
9727 UINT64 InitialValue,
9728 D3D12_FENCE_FLAGS Flags,
9729 REFIID riid,
9730 _COM_Outptr_ void **ppFence) = 0;
9731
9732 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
9733
9734 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
9735 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9736 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9737 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9738 UINT64 BaseOffset,
9739 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9740 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9741 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9742 _Out_opt_ UINT64 *pTotalBytes) = 0;
9743
9744 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
9745 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9746 REFIID riid,
9747 _COM_Outptr_opt_ void **ppvHeap) = 0;
9748
9749 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
9750 BOOL Enable) = 0;
9751
9752 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
9753 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9754 _In_opt_ ID3D12RootSignature *pRootSignature,
9755 REFIID riid,
9756 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
9757
9758 virtual void STDMETHODCALLTYPE GetResourceTiling(
9759 _In_ ID3D12Resource *pTiledResource,
9760 _Out_opt_ UINT *pNumTilesForEntireResource,
9761 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9762 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9763 _Inout_opt_ UINT *pNumSubresourceTilings,
9764 _In_ UINT FirstSubresourceTilingToGet,
9765 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
9766
9767#if defined(_MSC_VER) || !defined(_WIN32)
9768 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
9769#else
9770 virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
9771 LUID * RetVal) = 0;
9772#endif
9773
9774 };
9775
9776
9777#else /* C style interface */
9778
9779 typedef struct ID3D12DeviceVtbl
9780 {
9781 BEGIN_INTERFACE
9782
9783 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9784 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9785 ID3D12Device * This,
9786 REFIID riid,
9787 _COM_Outptr_ void **ppvObject);
9788
9789 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9790 ULONG ( STDMETHODCALLTYPE *AddRef )(
9791 ID3D12Device * This);
9792
9793 DECLSPEC_XFGVIRT(IUnknown, Release)
9794 ULONG ( STDMETHODCALLTYPE *Release )(
9795 ID3D12Device * This);
9796
9797 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9798 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9799 ID3D12Device * This,
9800 _In_ REFGUID guid,
9801 _Inout_ UINT *pDataSize,
9802 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9803
9804 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9805 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9806 ID3D12Device * This,
9807 _In_ REFGUID guid,
9808 _In_ UINT DataSize,
9809 _In_reads_bytes_opt_( DataSize ) const void *pData);
9810
9811 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9812 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9813 ID3D12Device * This,
9814 _In_ REFGUID guid,
9815 _In_opt_ const IUnknown *pData);
9816
9817 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9818 HRESULT ( STDMETHODCALLTYPE *SetName )(
9819 ID3D12Device * This,
9820 _In_z_ LPCWSTR Name);
9821
9822 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9823 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9824 ID3D12Device * This);
9825
9826 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9827 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9828 ID3D12Device * This,
9829 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9830 REFIID riid,
9831 _COM_Outptr_ void **ppCommandQueue);
9832
9833 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9834 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9835 ID3D12Device * This,
9836 _In_ D3D12_COMMAND_LIST_TYPE type,
9837 REFIID riid,
9838 _COM_Outptr_ void **ppCommandAllocator);
9839
9840 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9841 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9842 ID3D12Device * This,
9843 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9844 REFIID riid,
9845 _COM_Outptr_ void **ppPipelineState);
9846
9847 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9848 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9849 ID3D12Device * This,
9850 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9851 REFIID riid,
9852 _COM_Outptr_ void **ppPipelineState);
9853
9854 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9855 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9856 ID3D12Device * This,
9857 _In_ UINT nodeMask,
9858 _In_ D3D12_COMMAND_LIST_TYPE type,
9859 _In_ ID3D12CommandAllocator *pCommandAllocator,
9860 _In_opt_ ID3D12PipelineState *pInitialState,
9861 REFIID riid,
9862 _COM_Outptr_ void **ppCommandList);
9863
9864 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9865 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9866 ID3D12Device * This,
9867 D3D12_FEATURE Feature,
9868 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9869 UINT FeatureSupportDataSize);
9870
9871 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9872 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9873 ID3D12Device * This,
9874 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9875 REFIID riid,
9876 _COM_Outptr_ void **ppvHeap);
9877
9878 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9879 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9880 ID3D12Device * This,
9881 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9882
9883 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9884 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9885 ID3D12Device * This,
9886 _In_ UINT nodeMask,
9887 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9888 _In_ SIZE_T blobLengthInBytes,
9889 REFIID riid,
9890 _COM_Outptr_ void **ppvRootSignature);
9891
9892 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9893 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9894 ID3D12Device * This,
9895 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9896 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9897
9898 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9899 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9900 ID3D12Device * This,
9901 _In_opt_ ID3D12Resource *pResource,
9902 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9903 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9904
9905 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9906 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9907 ID3D12Device * This,
9908 _In_opt_ ID3D12Resource *pResource,
9909 _In_opt_ ID3D12Resource *pCounterResource,
9910 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9911 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9912
9913 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9914 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9915 ID3D12Device * This,
9916 _In_opt_ ID3D12Resource *pResource,
9917 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9918 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9919
9920 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9921 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9922 ID3D12Device * This,
9923 _In_opt_ ID3D12Resource *pResource,
9924 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9925 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9926
9927 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9928 void ( STDMETHODCALLTYPE *CreateSampler )(
9929 ID3D12Device * This,
9930 _In_ const D3D12_SAMPLER_DESC *pDesc,
9931 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9932
9933 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9934 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9935 ID3D12Device * This,
9936 _In_ UINT NumDestDescriptorRanges,
9937 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9938 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9939 _In_ UINT NumSrcDescriptorRanges,
9940 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9941 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9942 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9943
9944 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9945 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9946 ID3D12Device * This,
9947 _In_ UINT NumDescriptors,
9948 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9949 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9950 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9951
9952 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9953#if !defined(_WIN32)
9954 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9955 ID3D12Device * This,
9956 _In_ UINT visibleMask,
9957 _In_ UINT numResourceDescs,
9958 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9959
9960#else
9961 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9962 ID3D12Device * This,
9963 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9964 _In_ UINT visibleMask,
9965 _In_ UINT numResourceDescs,
9966 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9967
9968#endif
9969
9970 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9971#if !defined(_WIN32)
9972 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9973 ID3D12Device * This,
9974 _In_ UINT nodeMask,
9975 D3D12_HEAP_TYPE heapType);
9976
9977#else
9978 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9979 ID3D12Device * This,
9980 D3D12_HEAP_PROPERTIES * RetVal,
9981 _In_ UINT nodeMask,
9982 D3D12_HEAP_TYPE heapType);
9983
9984#endif
9985
9986 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9987 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9988 ID3D12Device * This,
9989 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9990 D3D12_HEAP_FLAGS HeapFlags,
9991 _In_ const D3D12_RESOURCE_DESC *pDesc,
9992 D3D12_RESOURCE_STATES InitialResourceState,
9993 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9994 REFIID riidResource,
9995 _COM_Outptr_opt_ void **ppvResource);
9996
9997 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9998 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9999 ID3D12Device * This,
10000 _In_ const D3D12_HEAP_DESC *pDesc,
10001 REFIID riid,
10002 _COM_Outptr_opt_ void **ppvHeap);
10003
10004 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10005 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10006 ID3D12Device * This,
10007 _In_ ID3D12Heap *pHeap,
10008 UINT64 HeapOffset,
10009 _In_ const D3D12_RESOURCE_DESC *pDesc,
10010 D3D12_RESOURCE_STATES InitialState,
10011 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10012 REFIID riid,
10013 _COM_Outptr_opt_ void **ppvResource);
10014
10015 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10016 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10017 ID3D12Device * This,
10018 _In_ const D3D12_RESOURCE_DESC *pDesc,
10019 D3D12_RESOURCE_STATES InitialState,
10020 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10021 REFIID riid,
10022 _COM_Outptr_opt_ void **ppvResource);
10023
10024 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10025 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10026 ID3D12Device * This,
10027 _In_ ID3D12DeviceChild *pObject,
10028 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10029 DWORD Access,
10030 _In_opt_ LPCWSTR Name,
10031 _Out_ HANDLE *pHandle);
10032
10033 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10034 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10035 ID3D12Device * This,
10036 _In_ HANDLE NTHandle,
10037 REFIID riid,
10038 _COM_Outptr_opt_ void **ppvObj);
10039
10040 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10041 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10042 ID3D12Device * This,
10043 _In_ LPCWSTR Name,
10044 DWORD Access,
10045 /* [annotation][out] */
10046 _Out_ HANDLE *pNTHandle);
10047
10048 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10049 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10050 ID3D12Device * This,
10051 UINT NumObjects,
10052 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10053
10054 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10055 HRESULT ( STDMETHODCALLTYPE *Evict )(
10056 ID3D12Device * This,
10057 UINT NumObjects,
10058 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10059
10060 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10061 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10062 ID3D12Device * This,
10063 UINT64 InitialValue,
10064 D3D12_FENCE_FLAGS Flags,
10065 REFIID riid,
10066 _COM_Outptr_ void **ppFence);
10067
10068 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10069 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10070 ID3D12Device * This);
10071
10072 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10073 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10074 ID3D12Device * This,
10075 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10076 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10077 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10078 UINT64 BaseOffset,
10079 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10080 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10081 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10082 _Out_opt_ UINT64 *pTotalBytes);
10083
10084 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10085 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10086 ID3D12Device * This,
10087 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10088 REFIID riid,
10089 _COM_Outptr_opt_ void **ppvHeap);
10090
10091 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10092 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10093 ID3D12Device * This,
10094 BOOL Enable);
10095
10096 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10097 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10098 ID3D12Device * This,
10099 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10100 _In_opt_ ID3D12RootSignature *pRootSignature,
10101 REFIID riid,
10102 _COM_Outptr_opt_ void **ppvCommandSignature);
10103
10104 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10105 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10106 ID3D12Device * This,
10107 _In_ ID3D12Resource *pTiledResource,
10108 _Out_opt_ UINT *pNumTilesForEntireResource,
10109 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10110 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10111 _Inout_opt_ UINT *pNumSubresourceTilings,
10112 _In_ UINT FirstSubresourceTilingToGet,
10113 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10114
10115 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10116#if !defined(_WIN32)
10117 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
10118 ID3D12Device * This);
10119
10120#else
10121 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10122 ID3D12Device * This,
10123 LUID * RetVal);
10124
10125#endif
10126
10127 END_INTERFACE
10128 } ID3D12DeviceVtbl;
10129
10130 interface ID3D12Device
10131 {
10132 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
10133 };
10134
10135
10136
10137#ifdef COBJMACROS
10138
10139
10140#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
10141 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10142
10143#define ID3D12Device_AddRef(This) \
10144 ( (This)->lpVtbl -> AddRef(This) )
10145
10146#define ID3D12Device_Release(This) \
10147 ( (This)->lpVtbl -> Release(This) )
10148
10149
10150#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
10151 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10152
10153#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
10154 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10155
10156#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
10157 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10158
10159#define ID3D12Device_SetName(This,Name) \
10160 ( (This)->lpVtbl -> SetName(This,Name) )
10161
10162
10163#define ID3D12Device_GetNodeCount(This) \
10164 ( (This)->lpVtbl -> GetNodeCount(This) )
10165
10166#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10167 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10168
10169#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10170 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10171
10172#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10173 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10174
10175#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10176 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10177
10178#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10179 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10180
10181#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10182 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10183
10184#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10185 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10186
10187#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10188 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10189
10190#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10191 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10192
10193#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10194 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10195
10196#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10197 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10198
10199#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10200 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10201
10202#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10203 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10204
10205#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10206 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10207
10208#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
10209 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10210
10211#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10212 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10213
10214#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10215 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10216#if !defined(_WIN32)
10217
10218#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
10219 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
10220#else
10221#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10222 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10223#endif
10224#if !defined(_WIN32)
10225
10226#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
10227 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
10228#else
10229#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10230 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10231#endif
10232
10233#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10234 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10235
10236#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
10237 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10238
10239#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10240 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10241
10242#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10243 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10244
10245#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10246 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10247
10248#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10249 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10250
10251#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10252 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10253
10254#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
10255 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10256
10257#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
10258 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10259
10260#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10261 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10262
10263#define ID3D12Device_GetDeviceRemovedReason(This) \
10264 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10265
10266#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10267 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10268
10269#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10270 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10271
10272#define ID3D12Device_SetStablePowerState(This,Enable) \
10273 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10274
10275#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10276 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10277
10278#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10279 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10280#if !defined(_WIN32)
10281
10282#define ID3D12Device_GetAdapterLuid(This) \
10283 ( (This)->lpVtbl -> GetAdapterLuid(This) )
10284#else
10285#define ID3D12Device_GetAdapterLuid(This,RetVal) \
10286 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10287#endif
10288
10289#endif /* COBJMACROS */
10290
10291
10292#endif /* C style interface */
10293
10294
10295
10296
10297#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
10298
10299
10300#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10301#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10302
10303/* interface ID3D12PipelineLibrary */
10304/* [unique][local][object][uuid] */
10305
10306
10307EXTERN_C const IID IID_ID3D12PipelineLibrary;
10308
10309#if defined(__cplusplus) && !defined(CINTERFACE)
10310
10311 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
10312 ID3D12PipelineLibrary : public ID3D12DeviceChild
10313 {
10314 public:
10315 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
10316 _In_opt_ LPCWSTR pName,
10317 _In_ ID3D12PipelineState *pPipeline) = 0;
10318
10319 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
10320 _In_ LPCWSTR pName,
10321 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10322 REFIID riid,
10323 _COM_Outptr_ void **ppPipelineState) = 0;
10324
10325 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
10326 _In_ LPCWSTR pName,
10327 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10328 REFIID riid,
10329 _COM_Outptr_ void **ppPipelineState) = 0;
10330
10331 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
10332
10333 virtual HRESULT STDMETHODCALLTYPE Serialize(
10334 _Out_writes_(DataSizeInBytes) void *pData,
10335 SIZE_T DataSizeInBytes) = 0;
10336
10337 };
10338
10339
10340#else /* C style interface */
10341
10342 typedef struct ID3D12PipelineLibraryVtbl
10343 {
10344 BEGIN_INTERFACE
10345
10346 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10347 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10348 ID3D12PipelineLibrary * This,
10349 REFIID riid,
10350 _COM_Outptr_ void **ppvObject);
10351
10352 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10353 ULONG ( STDMETHODCALLTYPE *AddRef )(
10354 ID3D12PipelineLibrary * This);
10355
10356 DECLSPEC_XFGVIRT(IUnknown, Release)
10357 ULONG ( STDMETHODCALLTYPE *Release )(
10358 ID3D12PipelineLibrary * This);
10359
10360 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10361 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10362 ID3D12PipelineLibrary * This,
10363 _In_ REFGUID guid,
10364 _Inout_ UINT *pDataSize,
10365 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10366
10367 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10368 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10369 ID3D12PipelineLibrary * This,
10370 _In_ REFGUID guid,
10371 _In_ UINT DataSize,
10372 _In_reads_bytes_opt_( DataSize ) const void *pData);
10373
10374 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10375 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10376 ID3D12PipelineLibrary * This,
10377 _In_ REFGUID guid,
10378 _In_opt_ const IUnknown *pData);
10379
10380 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10381 HRESULT ( STDMETHODCALLTYPE *SetName )(
10382 ID3D12PipelineLibrary * This,
10383 _In_z_ LPCWSTR Name);
10384
10385 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10386 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10387 ID3D12PipelineLibrary * This,
10388 REFIID riid,
10389 _COM_Outptr_opt_ void **ppvDevice);
10390
10391 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10392 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10393 ID3D12PipelineLibrary * This,
10394 _In_opt_ LPCWSTR pName,
10395 _In_ ID3D12PipelineState *pPipeline);
10396
10397 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10398 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10399 ID3D12PipelineLibrary * This,
10400 _In_ LPCWSTR pName,
10401 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10402 REFIID riid,
10403 _COM_Outptr_ void **ppPipelineState);
10404
10405 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10406 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10407 ID3D12PipelineLibrary * This,
10408 _In_ LPCWSTR pName,
10409 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10410 REFIID riid,
10411 _COM_Outptr_ void **ppPipelineState);
10412
10413 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10414 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10415 ID3D12PipelineLibrary * This);
10416
10417 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10418 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10419 ID3D12PipelineLibrary * This,
10420 _Out_writes_(DataSizeInBytes) void *pData,
10421 SIZE_T DataSizeInBytes);
10422
10423 END_INTERFACE
10424 } ID3D12PipelineLibraryVtbl;
10425
10426 interface ID3D12PipelineLibrary
10427 {
10428 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
10429 };
10430
10431
10432
10433#ifdef COBJMACROS
10434
10435
10436#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
10437 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10438
10439#define ID3D12PipelineLibrary_AddRef(This) \
10440 ( (This)->lpVtbl -> AddRef(This) )
10441
10442#define ID3D12PipelineLibrary_Release(This) \
10443 ( (This)->lpVtbl -> Release(This) )
10444
10445
10446#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
10447 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10448
10449#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
10450 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10451
10452#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
10453 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10454
10455#define ID3D12PipelineLibrary_SetName(This,Name) \
10456 ( (This)->lpVtbl -> SetName(This,Name) )
10457
10458
10459#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
10460 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10461
10462
10463#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
10464 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10465
10466#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10467 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10468
10469#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10470 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10471
10472#define ID3D12PipelineLibrary_GetSerializedSize(This) \
10473 ( (This)->lpVtbl -> GetSerializedSize(This) )
10474
10475#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
10476 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10477
10478#endif /* COBJMACROS */
10479
10480
10481#endif /* C style interface */
10482
10483
10484
10485
10486#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
10487
10488
10489#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10490#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10491
10492/* interface ID3D12PipelineLibrary1 */
10493/* [unique][local][object][uuid] */
10494
10495
10496EXTERN_C const IID IID_ID3D12PipelineLibrary1;
10497
10498#if defined(__cplusplus) && !defined(CINTERFACE)
10499
10500 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
10501 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
10502 {
10503 public:
10504 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
10505 _In_ LPCWSTR pName,
10506 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10507 REFIID riid,
10508 _COM_Outptr_ void **ppPipelineState) = 0;
10509
10510 };
10511
10512
10513#else /* C style interface */
10514
10515 typedef struct ID3D12PipelineLibrary1Vtbl
10516 {
10517 BEGIN_INTERFACE
10518
10519 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10520 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10521 ID3D12PipelineLibrary1 * This,
10522 REFIID riid,
10523 _COM_Outptr_ void **ppvObject);
10524
10525 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10526 ULONG ( STDMETHODCALLTYPE *AddRef )(
10527 ID3D12PipelineLibrary1 * This);
10528
10529 DECLSPEC_XFGVIRT(IUnknown, Release)
10530 ULONG ( STDMETHODCALLTYPE *Release )(
10531 ID3D12PipelineLibrary1 * This);
10532
10533 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10534 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10535 ID3D12PipelineLibrary1 * This,
10536 _In_ REFGUID guid,
10537 _Inout_ UINT *pDataSize,
10538 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10539
10540 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10541 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10542 ID3D12PipelineLibrary1 * This,
10543 _In_ REFGUID guid,
10544 _In_ UINT DataSize,
10545 _In_reads_bytes_opt_( DataSize ) const void *pData);
10546
10547 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10548 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10549 ID3D12PipelineLibrary1 * This,
10550 _In_ REFGUID guid,
10551 _In_opt_ const IUnknown *pData);
10552
10553 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10554 HRESULT ( STDMETHODCALLTYPE *SetName )(
10555 ID3D12PipelineLibrary1 * This,
10556 _In_z_ LPCWSTR Name);
10557
10558 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10559 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10560 ID3D12PipelineLibrary1 * This,
10561 REFIID riid,
10562 _COM_Outptr_opt_ void **ppvDevice);
10563
10564 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10565 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10566 ID3D12PipelineLibrary1 * This,
10567 _In_opt_ LPCWSTR pName,
10568 _In_ ID3D12PipelineState *pPipeline);
10569
10570 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10571 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10572 ID3D12PipelineLibrary1 * This,
10573 _In_ LPCWSTR pName,
10574 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10575 REFIID riid,
10576 _COM_Outptr_ void **ppPipelineState);
10577
10578 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10579 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10580 ID3D12PipelineLibrary1 * This,
10581 _In_ LPCWSTR pName,
10582 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10583 REFIID riid,
10584 _COM_Outptr_ void **ppPipelineState);
10585
10586 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10587 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10588 ID3D12PipelineLibrary1 * This);
10589
10590 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10591 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10592 ID3D12PipelineLibrary1 * This,
10593 _Out_writes_(DataSizeInBytes) void *pData,
10594 SIZE_T DataSizeInBytes);
10595
10596 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
10597 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
10598 ID3D12PipelineLibrary1 * This,
10599 _In_ LPCWSTR pName,
10600 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10601 REFIID riid,
10602 _COM_Outptr_ void **ppPipelineState);
10603
10604 END_INTERFACE
10605 } ID3D12PipelineLibrary1Vtbl;
10606
10607 interface ID3D12PipelineLibrary1
10608 {
10609 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
10610 };
10611
10612
10613
10614#ifdef COBJMACROS
10615
10616
10617#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
10618 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10619
10620#define ID3D12PipelineLibrary1_AddRef(This) \
10621 ( (This)->lpVtbl -> AddRef(This) )
10622
10623#define ID3D12PipelineLibrary1_Release(This) \
10624 ( (This)->lpVtbl -> Release(This) )
10625
10626
10627#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
10628 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10629
10630#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
10631 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10632
10633#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
10634 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10635
10636#define ID3D12PipelineLibrary1_SetName(This,Name) \
10637 ( (This)->lpVtbl -> SetName(This,Name) )
10638
10639
10640#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
10641 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10642
10643
10644#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
10645 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10646
10647#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10648 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10649
10650#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10651 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10652
10653#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
10654 ( (This)->lpVtbl -> GetSerializedSize(This) )
10655
10656#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
10657 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10658
10659
10660#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
10661 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
10662
10663#endif /* COBJMACROS */
10664
10665
10666#endif /* C style interface */
10667
10668
10669
10670
10671#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
10672
10673
10674/* interface __MIDL_itf_d3d12_0000_0025 */
10675/* [local] */
10676
10677typedef
10678enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
10679 {
10680 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
10681 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
10682 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
10683 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
10684
10685DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
10686typedef
10687enum D3D12_RESIDENCY_PRIORITY
10688 {
10689 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
10690 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
10691 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
10692 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
10693 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
10694 } D3D12_RESIDENCY_PRIORITY;
10695
10696
10697
10698extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10699extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10700
10701#ifndef __ID3D12Device1_INTERFACE_DEFINED__
10702#define __ID3D12Device1_INTERFACE_DEFINED__
10703
10704/* interface ID3D12Device1 */
10705/* [unique][local][object][uuid] */
10706
10707
10708EXTERN_C const IID IID_ID3D12Device1;
10709
10710#if defined(__cplusplus) && !defined(CINTERFACE)
10711
10712 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
10713 ID3D12Device1 : public ID3D12Device
10714 {
10715 public:
10716 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
10717 _In_reads_(BlobLength) const void *pLibraryBlob,
10718 SIZE_T BlobLength,
10719 REFIID riid,
10720 _COM_Outptr_ void **ppPipelineLibrary) = 0;
10721
10722 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
10723 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10724 _In_reads_(NumFences) const UINT64 *pFenceValues,
10725 UINT NumFences,
10726 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10727 HANDLE hEvent) = 0;
10728
10729 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
10730 UINT NumObjects,
10731 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10732 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
10733
10734 };
10735
10736
10737#else /* C style interface */
10738
10739 typedef struct ID3D12Device1Vtbl
10740 {
10741 BEGIN_INTERFACE
10742
10743 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10744 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10745 ID3D12Device1 * This,
10746 REFIID riid,
10747 _COM_Outptr_ void **ppvObject);
10748
10749 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10750 ULONG ( STDMETHODCALLTYPE *AddRef )(
10751 ID3D12Device1 * This);
10752
10753 DECLSPEC_XFGVIRT(IUnknown, Release)
10754 ULONG ( STDMETHODCALLTYPE *Release )(
10755 ID3D12Device1 * This);
10756
10757 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10758 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10759 ID3D12Device1 * This,
10760 _In_ REFGUID guid,
10761 _Inout_ UINT *pDataSize,
10762 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10763
10764 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10765 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10766 ID3D12Device1 * This,
10767 _In_ REFGUID guid,
10768 _In_ UINT DataSize,
10769 _In_reads_bytes_opt_( DataSize ) const void *pData);
10770
10771 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10772 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10773 ID3D12Device1 * This,
10774 _In_ REFGUID guid,
10775 _In_opt_ const IUnknown *pData);
10776
10777 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10778 HRESULT ( STDMETHODCALLTYPE *SetName )(
10779 ID3D12Device1 * This,
10780 _In_z_ LPCWSTR Name);
10781
10782 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10783 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10784 ID3D12Device1 * This);
10785
10786 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10787 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10788 ID3D12Device1 * This,
10789 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10790 REFIID riid,
10791 _COM_Outptr_ void **ppCommandQueue);
10792
10793 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10794 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10795 ID3D12Device1 * This,
10796 _In_ D3D12_COMMAND_LIST_TYPE type,
10797 REFIID riid,
10798 _COM_Outptr_ void **ppCommandAllocator);
10799
10800 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10801 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10802 ID3D12Device1 * This,
10803 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10804 REFIID riid,
10805 _COM_Outptr_ void **ppPipelineState);
10806
10807 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10808 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10809 ID3D12Device1 * This,
10810 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10811 REFIID riid,
10812 _COM_Outptr_ void **ppPipelineState);
10813
10814 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10815 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10816 ID3D12Device1 * This,
10817 _In_ UINT nodeMask,
10818 _In_ D3D12_COMMAND_LIST_TYPE type,
10819 _In_ ID3D12CommandAllocator *pCommandAllocator,
10820 _In_opt_ ID3D12PipelineState *pInitialState,
10821 REFIID riid,
10822 _COM_Outptr_ void **ppCommandList);
10823
10824 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10825 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10826 ID3D12Device1 * This,
10827 D3D12_FEATURE Feature,
10828 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10829 UINT FeatureSupportDataSize);
10830
10831 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10832 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10833 ID3D12Device1 * This,
10834 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10835 REFIID riid,
10836 _COM_Outptr_ void **ppvHeap);
10837
10838 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10839 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10840 ID3D12Device1 * This,
10841 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10842
10843 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10844 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10845 ID3D12Device1 * This,
10846 _In_ UINT nodeMask,
10847 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10848 _In_ SIZE_T blobLengthInBytes,
10849 REFIID riid,
10850 _COM_Outptr_ void **ppvRootSignature);
10851
10852 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10853 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10854 ID3D12Device1 * This,
10855 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10856 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10857
10858 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10859 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10860 ID3D12Device1 * This,
10861 _In_opt_ ID3D12Resource *pResource,
10862 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10863 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10864
10865 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10866 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10867 ID3D12Device1 * This,
10868 _In_opt_ ID3D12Resource *pResource,
10869 _In_opt_ ID3D12Resource *pCounterResource,
10870 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10871 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10872
10873 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10874 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10875 ID3D12Device1 * This,
10876 _In_opt_ ID3D12Resource *pResource,
10877 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10878 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10879
10880 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10881 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10882 ID3D12Device1 * This,
10883 _In_opt_ ID3D12Resource *pResource,
10884 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10885 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10886
10887 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10888 void ( STDMETHODCALLTYPE *CreateSampler )(
10889 ID3D12Device1 * This,
10890 _In_ const D3D12_SAMPLER_DESC *pDesc,
10891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10892
10893 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10894 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10895 ID3D12Device1 * This,
10896 _In_ UINT NumDestDescriptorRanges,
10897 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10898 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10899 _In_ UINT NumSrcDescriptorRanges,
10900 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10901 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10902 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10903
10904 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10905 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10906 ID3D12Device1 * This,
10907 _In_ UINT NumDescriptors,
10908 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10909 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10910 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10911
10912 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10913#if !defined(_WIN32)
10914 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10915 ID3D12Device1 * This,
10916 _In_ UINT visibleMask,
10917 _In_ UINT numResourceDescs,
10918 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10919
10920#else
10921 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10922 ID3D12Device1 * This,
10923 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10924 _In_ UINT visibleMask,
10925 _In_ UINT numResourceDescs,
10926 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10927
10928#endif
10929
10930 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10931#if !defined(_WIN32)
10932 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10933 ID3D12Device1 * This,
10934 _In_ UINT nodeMask,
10935 D3D12_HEAP_TYPE heapType);
10936
10937#else
10938 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10939 ID3D12Device1 * This,
10940 D3D12_HEAP_PROPERTIES * RetVal,
10941 _In_ UINT nodeMask,
10942 D3D12_HEAP_TYPE heapType);
10943
10944#endif
10945
10946 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10947 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10948 ID3D12Device1 * This,
10949 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10950 D3D12_HEAP_FLAGS HeapFlags,
10951 _In_ const D3D12_RESOURCE_DESC *pDesc,
10952 D3D12_RESOURCE_STATES InitialResourceState,
10953 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10954 REFIID riidResource,
10955 _COM_Outptr_opt_ void **ppvResource);
10956
10957 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10958 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10959 ID3D12Device1 * This,
10960 _In_ const D3D12_HEAP_DESC *pDesc,
10961 REFIID riid,
10962 _COM_Outptr_opt_ void **ppvHeap);
10963
10964 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10965 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10966 ID3D12Device1 * This,
10967 _In_ ID3D12Heap *pHeap,
10968 UINT64 HeapOffset,
10969 _In_ const D3D12_RESOURCE_DESC *pDesc,
10970 D3D12_RESOURCE_STATES InitialState,
10971 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10972 REFIID riid,
10973 _COM_Outptr_opt_ void **ppvResource);
10974
10975 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10976 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10977 ID3D12Device1 * This,
10978 _In_ const D3D12_RESOURCE_DESC *pDesc,
10979 D3D12_RESOURCE_STATES InitialState,
10980 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10981 REFIID riid,
10982 _COM_Outptr_opt_ void **ppvResource);
10983
10984 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10985 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10986 ID3D12Device1 * This,
10987 _In_ ID3D12DeviceChild *pObject,
10988 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10989 DWORD Access,
10990 _In_opt_ LPCWSTR Name,
10991 _Out_ HANDLE *pHandle);
10992
10993 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10994 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10995 ID3D12Device1 * This,
10996 _In_ HANDLE NTHandle,
10997 REFIID riid,
10998 _COM_Outptr_opt_ void **ppvObj);
10999
11000 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11001 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11002 ID3D12Device1 * This,
11003 _In_ LPCWSTR Name,
11004 DWORD Access,
11005 /* [annotation][out] */
11006 _Out_ HANDLE *pNTHandle);
11007
11008 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11009 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11010 ID3D12Device1 * This,
11011 UINT NumObjects,
11012 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11013
11014 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11015 HRESULT ( STDMETHODCALLTYPE *Evict )(
11016 ID3D12Device1 * This,
11017 UINT NumObjects,
11018 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11019
11020 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11021 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11022 ID3D12Device1 * This,
11023 UINT64 InitialValue,
11024 D3D12_FENCE_FLAGS Flags,
11025 REFIID riid,
11026 _COM_Outptr_ void **ppFence);
11027
11028 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11029 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11030 ID3D12Device1 * This);
11031
11032 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11033 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11034 ID3D12Device1 * This,
11035 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11036 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11037 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11038 UINT64 BaseOffset,
11039 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11040 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11041 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11042 _Out_opt_ UINT64 *pTotalBytes);
11043
11044 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11045 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11046 ID3D12Device1 * This,
11047 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11048 REFIID riid,
11049 _COM_Outptr_opt_ void **ppvHeap);
11050
11051 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11052 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11053 ID3D12Device1 * This,
11054 BOOL Enable);
11055
11056 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11057 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11058 ID3D12Device1 * This,
11059 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11060 _In_opt_ ID3D12RootSignature *pRootSignature,
11061 REFIID riid,
11062 _COM_Outptr_opt_ void **ppvCommandSignature);
11063
11064 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11065 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11066 ID3D12Device1 * This,
11067 _In_ ID3D12Resource *pTiledResource,
11068 _Out_opt_ UINT *pNumTilesForEntireResource,
11069 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11070 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11071 _Inout_opt_ UINT *pNumSubresourceTilings,
11072 _In_ UINT FirstSubresourceTilingToGet,
11073 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11074
11075 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11076#if !defined(_WIN32)
11077 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11078 ID3D12Device1 * This);
11079
11080#else
11081 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11082 ID3D12Device1 * This,
11083 LUID * RetVal);
11084
11085#endif
11086
11087 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11088 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11089 ID3D12Device1 * This,
11090 _In_reads_(BlobLength) const void *pLibraryBlob,
11091 SIZE_T BlobLength,
11092 REFIID riid,
11093 _COM_Outptr_ void **ppPipelineLibrary);
11094
11095 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11096 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11097 ID3D12Device1 * This,
11098 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11099 _In_reads_(NumFences) const UINT64 *pFenceValues,
11100 UINT NumFences,
11101 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11102 HANDLE hEvent);
11103
11104 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11105 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11106 ID3D12Device1 * This,
11107 UINT NumObjects,
11108 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11109 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11110
11111 END_INTERFACE
11112 } ID3D12Device1Vtbl;
11113
11114 interface ID3D12Device1
11115 {
11116 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
11117 };
11118
11119
11120
11121#ifdef COBJMACROS
11122
11123
11124#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
11125 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11126
11127#define ID3D12Device1_AddRef(This) \
11128 ( (This)->lpVtbl -> AddRef(This) )
11129
11130#define ID3D12Device1_Release(This) \
11131 ( (This)->lpVtbl -> Release(This) )
11132
11133
11134#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
11135 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11136
11137#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
11138 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11139
11140#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
11141 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11142
11143#define ID3D12Device1_SetName(This,Name) \
11144 ( (This)->lpVtbl -> SetName(This,Name) )
11145
11146
11147#define ID3D12Device1_GetNodeCount(This) \
11148 ( (This)->lpVtbl -> GetNodeCount(This) )
11149
11150#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11151 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11152
11153#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11154 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11155
11156#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11157 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11158
11159#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11160 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11161
11162#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11163 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11164
11165#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11166 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11167
11168#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11169 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11170
11171#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11172 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11173
11174#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11175 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11176
11177#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11178 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11179
11180#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11181 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11182
11183#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11184 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11185
11186#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11187 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11188
11189#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11190 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11191
11192#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
11193 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11194
11195#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11196 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11197
11198#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11199 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11200#if !defined(_WIN32)
11201
11202#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11203 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11204#else
11205#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11206 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11207#endif
11208#if !defined(_WIN32)
11209
11210#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
11211 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11212#else
11213#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11214 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11215#endif
11216
11217#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11218 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11219
11220#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
11221 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11222
11223#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11224 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11225
11226#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11227 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11228
11229#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11230 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11231
11232#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11233 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11234
11235#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11236 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11237
11238#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
11239 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11240
11241#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
11242 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11243
11244#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11245 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11246
11247#define ID3D12Device1_GetDeviceRemovedReason(This) \
11248 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11249
11250#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11251 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11252
11253#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11254 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11255
11256#define ID3D12Device1_SetStablePowerState(This,Enable) \
11257 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11258
11259#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11260 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11261
11262#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11263 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11264#if !defined(_WIN32)
11265
11266#define ID3D12Device1_GetAdapterLuid(This) \
11267 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11268#else
11269#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
11270 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11271#endif
11272
11273
11274#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11275 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11276
11277#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11278 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11279
11280#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11281 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11282
11283#endif /* COBJMACROS */
11284
11285
11286#endif /* C style interface */
11287
11288
11289
11290
11291#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
11292
11293
11294#ifndef __ID3D12Device2_INTERFACE_DEFINED__
11295#define __ID3D12Device2_INTERFACE_DEFINED__
11296
11297/* interface ID3D12Device2 */
11298/* [unique][local][object][uuid] */
11299
11300
11301EXTERN_C const IID IID_ID3D12Device2;
11302
11303#if defined(__cplusplus) && !defined(CINTERFACE)
11304
11305 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
11306 ID3D12Device2 : public ID3D12Device1
11307 {
11308 public:
11309 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
11310 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11311 REFIID riid,
11312 _COM_Outptr_ void **ppPipelineState) = 0;
11313
11314 };
11315
11316
11317#else /* C style interface */
11318
11319 typedef struct ID3D12Device2Vtbl
11320 {
11321 BEGIN_INTERFACE
11322
11323 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11324 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11325 ID3D12Device2 * This,
11326 REFIID riid,
11327 _COM_Outptr_ void **ppvObject);
11328
11329 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11330 ULONG ( STDMETHODCALLTYPE *AddRef )(
11331 ID3D12Device2 * This);
11332
11333 DECLSPEC_XFGVIRT(IUnknown, Release)
11334 ULONG ( STDMETHODCALLTYPE *Release )(
11335 ID3D12Device2 * This);
11336
11337 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11338 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11339 ID3D12Device2 * This,
11340 _In_ REFGUID guid,
11341 _Inout_ UINT *pDataSize,
11342 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11343
11344 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11345 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11346 ID3D12Device2 * This,
11347 _In_ REFGUID guid,
11348 _In_ UINT DataSize,
11349 _In_reads_bytes_opt_( DataSize ) const void *pData);
11350
11351 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11352 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11353 ID3D12Device2 * This,
11354 _In_ REFGUID guid,
11355 _In_opt_ const IUnknown *pData);
11356
11357 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11358 HRESULT ( STDMETHODCALLTYPE *SetName )(
11359 ID3D12Device2 * This,
11360 _In_z_ LPCWSTR Name);
11361
11362 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11363 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11364 ID3D12Device2 * This);
11365
11366 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11367 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11368 ID3D12Device2 * This,
11369 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11370 REFIID riid,
11371 _COM_Outptr_ void **ppCommandQueue);
11372
11373 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11374 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11375 ID3D12Device2 * This,
11376 _In_ D3D12_COMMAND_LIST_TYPE type,
11377 REFIID riid,
11378 _COM_Outptr_ void **ppCommandAllocator);
11379
11380 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11381 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11382 ID3D12Device2 * This,
11383 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11384 REFIID riid,
11385 _COM_Outptr_ void **ppPipelineState);
11386
11387 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11388 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11389 ID3D12Device2 * This,
11390 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11391 REFIID riid,
11392 _COM_Outptr_ void **ppPipelineState);
11393
11394 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11395 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11396 ID3D12Device2 * This,
11397 _In_ UINT nodeMask,
11398 _In_ D3D12_COMMAND_LIST_TYPE type,
11399 _In_ ID3D12CommandAllocator *pCommandAllocator,
11400 _In_opt_ ID3D12PipelineState *pInitialState,
11401 REFIID riid,
11402 _COM_Outptr_ void **ppCommandList);
11403
11404 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11405 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11406 ID3D12Device2 * This,
11407 D3D12_FEATURE Feature,
11408 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11409 UINT FeatureSupportDataSize);
11410
11411 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11412 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11413 ID3D12Device2 * This,
11414 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11415 REFIID riid,
11416 _COM_Outptr_ void **ppvHeap);
11417
11418 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11419 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11420 ID3D12Device2 * This,
11421 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11422
11423 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11424 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11425 ID3D12Device2 * This,
11426 _In_ UINT nodeMask,
11427 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11428 _In_ SIZE_T blobLengthInBytes,
11429 REFIID riid,
11430 _COM_Outptr_ void **ppvRootSignature);
11431
11432 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11433 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11434 ID3D12Device2 * This,
11435 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11436 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11437
11438 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11439 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11440 ID3D12Device2 * This,
11441 _In_opt_ ID3D12Resource *pResource,
11442 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11443 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11444
11445 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11446 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11447 ID3D12Device2 * This,
11448 _In_opt_ ID3D12Resource *pResource,
11449 _In_opt_ ID3D12Resource *pCounterResource,
11450 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11451 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11452
11453 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11454 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11455 ID3D12Device2 * This,
11456 _In_opt_ ID3D12Resource *pResource,
11457 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11458 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11459
11460 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11461 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11462 ID3D12Device2 * This,
11463 _In_opt_ ID3D12Resource *pResource,
11464 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11465 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11466
11467 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11468 void ( STDMETHODCALLTYPE *CreateSampler )(
11469 ID3D12Device2 * This,
11470 _In_ const D3D12_SAMPLER_DESC *pDesc,
11471 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11472
11473 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11474 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11475 ID3D12Device2 * This,
11476 _In_ UINT NumDestDescriptorRanges,
11477 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11478 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11479 _In_ UINT NumSrcDescriptorRanges,
11480 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11481 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11482 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11483
11484 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11485 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11486 ID3D12Device2 * This,
11487 _In_ UINT NumDescriptors,
11488 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11489 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11490 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11491
11492 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11493#if !defined(_WIN32)
11494 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11495 ID3D12Device2 * This,
11496 _In_ UINT visibleMask,
11497 _In_ UINT numResourceDescs,
11498 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11499
11500#else
11501 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11502 ID3D12Device2 * This,
11503 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11504 _In_ UINT visibleMask,
11505 _In_ UINT numResourceDescs,
11506 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11507
11508#endif
11509
11510 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11511#if !defined(_WIN32)
11512 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11513 ID3D12Device2 * This,
11514 _In_ UINT nodeMask,
11515 D3D12_HEAP_TYPE heapType);
11516
11517#else
11518 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11519 ID3D12Device2 * This,
11520 D3D12_HEAP_PROPERTIES * RetVal,
11521 _In_ UINT nodeMask,
11522 D3D12_HEAP_TYPE heapType);
11523
11524#endif
11525
11526 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11527 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11528 ID3D12Device2 * This,
11529 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11530 D3D12_HEAP_FLAGS HeapFlags,
11531 _In_ const D3D12_RESOURCE_DESC *pDesc,
11532 D3D12_RESOURCE_STATES InitialResourceState,
11533 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11534 REFIID riidResource,
11535 _COM_Outptr_opt_ void **ppvResource);
11536
11537 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11538 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11539 ID3D12Device2 * This,
11540 _In_ const D3D12_HEAP_DESC *pDesc,
11541 REFIID riid,
11542 _COM_Outptr_opt_ void **ppvHeap);
11543
11544 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11545 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11546 ID3D12Device2 * This,
11547 _In_ ID3D12Heap *pHeap,
11548 UINT64 HeapOffset,
11549 _In_ const D3D12_RESOURCE_DESC *pDesc,
11550 D3D12_RESOURCE_STATES InitialState,
11551 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11552 REFIID riid,
11553 _COM_Outptr_opt_ void **ppvResource);
11554
11555 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11556 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11557 ID3D12Device2 * This,
11558 _In_ const D3D12_RESOURCE_DESC *pDesc,
11559 D3D12_RESOURCE_STATES InitialState,
11560 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11561 REFIID riid,
11562 _COM_Outptr_opt_ void **ppvResource);
11563
11564 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11565 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11566 ID3D12Device2 * This,
11567 _In_ ID3D12DeviceChild *pObject,
11568 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11569 DWORD Access,
11570 _In_opt_ LPCWSTR Name,
11571 _Out_ HANDLE *pHandle);
11572
11573 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11574 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11575 ID3D12Device2 * This,
11576 _In_ HANDLE NTHandle,
11577 REFIID riid,
11578 _COM_Outptr_opt_ void **ppvObj);
11579
11580 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11581 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11582 ID3D12Device2 * This,
11583 _In_ LPCWSTR Name,
11584 DWORD Access,
11585 /* [annotation][out] */
11586 _Out_ HANDLE *pNTHandle);
11587
11588 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11589 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11590 ID3D12Device2 * This,
11591 UINT NumObjects,
11592 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11593
11594 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11595 HRESULT ( STDMETHODCALLTYPE *Evict )(
11596 ID3D12Device2 * This,
11597 UINT NumObjects,
11598 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11599
11600 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11601 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11602 ID3D12Device2 * This,
11603 UINT64 InitialValue,
11604 D3D12_FENCE_FLAGS Flags,
11605 REFIID riid,
11606 _COM_Outptr_ void **ppFence);
11607
11608 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11609 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11610 ID3D12Device2 * This);
11611
11612 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11613 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11614 ID3D12Device2 * This,
11615 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11616 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11617 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11618 UINT64 BaseOffset,
11619 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11620 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11621 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11622 _Out_opt_ UINT64 *pTotalBytes);
11623
11624 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11625 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11626 ID3D12Device2 * This,
11627 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11628 REFIID riid,
11629 _COM_Outptr_opt_ void **ppvHeap);
11630
11631 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11632 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11633 ID3D12Device2 * This,
11634 BOOL Enable);
11635
11636 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11637 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11638 ID3D12Device2 * This,
11639 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11640 _In_opt_ ID3D12RootSignature *pRootSignature,
11641 REFIID riid,
11642 _COM_Outptr_opt_ void **ppvCommandSignature);
11643
11644 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11645 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11646 ID3D12Device2 * This,
11647 _In_ ID3D12Resource *pTiledResource,
11648 _Out_opt_ UINT *pNumTilesForEntireResource,
11649 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11650 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11651 _Inout_opt_ UINT *pNumSubresourceTilings,
11652 _In_ UINT FirstSubresourceTilingToGet,
11653 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11654
11655 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11656#if !defined(_WIN32)
11657 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11658 ID3D12Device2 * This);
11659
11660#else
11661 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11662 ID3D12Device2 * This,
11663 LUID * RetVal);
11664
11665#endif
11666
11667 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11668 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11669 ID3D12Device2 * This,
11670 _In_reads_(BlobLength) const void *pLibraryBlob,
11671 SIZE_T BlobLength,
11672 REFIID riid,
11673 _COM_Outptr_ void **ppPipelineLibrary);
11674
11675 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11676 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11677 ID3D12Device2 * This,
11678 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11679 _In_reads_(NumFences) const UINT64 *pFenceValues,
11680 UINT NumFences,
11681 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11682 HANDLE hEvent);
11683
11684 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11685 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11686 ID3D12Device2 * This,
11687 UINT NumObjects,
11688 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11689 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11690
11691 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11692 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11693 ID3D12Device2 * This,
11694 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11695 REFIID riid,
11696 _COM_Outptr_ void **ppPipelineState);
11697
11698 END_INTERFACE
11699 } ID3D12Device2Vtbl;
11700
11701 interface ID3D12Device2
11702 {
11703 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
11704 };
11705
11706
11707
11708#ifdef COBJMACROS
11709
11710
11711#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
11712 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11713
11714#define ID3D12Device2_AddRef(This) \
11715 ( (This)->lpVtbl -> AddRef(This) )
11716
11717#define ID3D12Device2_Release(This) \
11718 ( (This)->lpVtbl -> Release(This) )
11719
11720
11721#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
11722 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11723
11724#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
11725 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11726
11727#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
11728 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11729
11730#define ID3D12Device2_SetName(This,Name) \
11731 ( (This)->lpVtbl -> SetName(This,Name) )
11732
11733
11734#define ID3D12Device2_GetNodeCount(This) \
11735 ( (This)->lpVtbl -> GetNodeCount(This) )
11736
11737#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11738 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11739
11740#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11741 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11742
11743#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11744 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11745
11746#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11747 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11748
11749#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11750 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11751
11752#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11753 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11754
11755#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11756 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11757
11758#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11759 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11760
11761#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11762 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11763
11764#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11765 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11766
11767#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11768 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11769
11770#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11771 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11772
11773#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11774 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11775
11776#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11777 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11778
11779#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
11780 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11781
11782#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11783 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11784
11785#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11786 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11787#if !defined(_WIN32)
11788
11789#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11790 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11791#else
11792#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11793 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11794#endif
11795#if !defined(_WIN32)
11796
11797#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
11798 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11799#else
11800#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11801 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11802#endif
11803
11804#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11805 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11806
11807#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
11808 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11809
11810#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11811 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11812
11813#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11814 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11815
11816#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11817 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11818
11819#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11820 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11821
11822#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11823 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11824
11825#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
11826 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11827
11828#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
11829 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11830
11831#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11832 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11833
11834#define ID3D12Device2_GetDeviceRemovedReason(This) \
11835 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11836
11837#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11838 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11839
11840#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11841 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11842
11843#define ID3D12Device2_SetStablePowerState(This,Enable) \
11844 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11845
11846#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11847 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11848
11849#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11850 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11851#if !defined(_WIN32)
11852
11853#define ID3D12Device2_GetAdapterLuid(This) \
11854 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11855#else
11856#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
11857 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11858#endif
11859
11860
11861#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11862 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11863
11864#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11865 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11866
11867#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11868 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11869
11870
11871#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11872 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11873
11874#endif /* COBJMACROS */
11875
11876
11877#endif /* C style interface */
11878
11879
11880
11881
11882#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
11883
11884
11885/* interface __MIDL_itf_d3d12_0000_0027 */
11886/* [local] */
11887
11888typedef
11889enum D3D12_RESIDENCY_FLAGS
11890 {
11891 D3D12_RESIDENCY_FLAG_NONE = 0,
11892 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
11893 } D3D12_RESIDENCY_FLAGS;
11894
11895DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
11896
11897
11898extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11899extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11900
11901#ifndef __ID3D12Device3_INTERFACE_DEFINED__
11902#define __ID3D12Device3_INTERFACE_DEFINED__
11903
11904/* interface ID3D12Device3 */
11905/* [unique][local][object][uuid] */
11906
11907
11908EXTERN_C const IID IID_ID3D12Device3;
11909
11910#if defined(__cplusplus) && !defined(CINTERFACE)
11911
11912 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
11913 ID3D12Device3 : public ID3D12Device2
11914 {
11915 public:
11916 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
11917 _In_ const void *pAddress,
11918 REFIID riid,
11919 _COM_Outptr_ void **ppvHeap) = 0;
11920
11921 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
11922 _In_ HANDLE hFileMapping,
11923 REFIID riid,
11924 _COM_Outptr_ void **ppvHeap) = 0;
11925
11926 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
11927 D3D12_RESIDENCY_FLAGS Flags,
11928 UINT NumObjects,
11929 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11930 _In_ ID3D12Fence *pFenceToSignal,
11931 UINT64 FenceValueToSignal) = 0;
11932
11933 };
11934
11935
11936#else /* C style interface */
11937
11938 typedef struct ID3D12Device3Vtbl
11939 {
11940 BEGIN_INTERFACE
11941
11942 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11943 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11944 ID3D12Device3 * This,
11945 REFIID riid,
11946 _COM_Outptr_ void **ppvObject);
11947
11948 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11949 ULONG ( STDMETHODCALLTYPE *AddRef )(
11950 ID3D12Device3 * This);
11951
11952 DECLSPEC_XFGVIRT(IUnknown, Release)
11953 ULONG ( STDMETHODCALLTYPE *Release )(
11954 ID3D12Device3 * This);
11955
11956 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11957 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11958 ID3D12Device3 * This,
11959 _In_ REFGUID guid,
11960 _Inout_ UINT *pDataSize,
11961 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11962
11963 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11964 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11965 ID3D12Device3 * This,
11966 _In_ REFGUID guid,
11967 _In_ UINT DataSize,
11968 _In_reads_bytes_opt_( DataSize ) const void *pData);
11969
11970 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11971 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11972 ID3D12Device3 * This,
11973 _In_ REFGUID guid,
11974 _In_opt_ const IUnknown *pData);
11975
11976 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11977 HRESULT ( STDMETHODCALLTYPE *SetName )(
11978 ID3D12Device3 * This,
11979 _In_z_ LPCWSTR Name);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11982 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11983 ID3D12Device3 * This);
11984
11985 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11986 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11987 ID3D12Device3 * This,
11988 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11989 REFIID riid,
11990 _COM_Outptr_ void **ppCommandQueue);
11991
11992 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11993 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11994 ID3D12Device3 * This,
11995 _In_ D3D12_COMMAND_LIST_TYPE type,
11996 REFIID riid,
11997 _COM_Outptr_ void **ppCommandAllocator);
11998
11999 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
12000 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
12001 ID3D12Device3 * This,
12002 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
12003 REFIID riid,
12004 _COM_Outptr_ void **ppPipelineState);
12005
12006 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
12007 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
12008 ID3D12Device3 * This,
12009 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
12010 REFIID riid,
12011 _COM_Outptr_ void **ppPipelineState);
12012
12013 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
12014 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
12015 ID3D12Device3 * This,
12016 _In_ UINT nodeMask,
12017 _In_ D3D12_COMMAND_LIST_TYPE type,
12018 _In_ ID3D12CommandAllocator *pCommandAllocator,
12019 _In_opt_ ID3D12PipelineState *pInitialState,
12020 REFIID riid,
12021 _COM_Outptr_ void **ppCommandList);
12022
12023 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
12024 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
12025 ID3D12Device3 * This,
12026 D3D12_FEATURE Feature,
12027 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
12028 UINT FeatureSupportDataSize);
12029
12030 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
12031 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
12032 ID3D12Device3 * This,
12033 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
12034 REFIID riid,
12035 _COM_Outptr_ void **ppvHeap);
12036
12037 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
12038 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
12039 ID3D12Device3 * This,
12040 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
12041
12042 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
12043 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
12044 ID3D12Device3 * This,
12045 _In_ UINT nodeMask,
12046 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
12047 _In_ SIZE_T blobLengthInBytes,
12048 REFIID riid,
12049 _COM_Outptr_ void **ppvRootSignature);
12050
12051 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
12052 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
12053 ID3D12Device3 * This,
12054 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
12055 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12056
12057 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
12058 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
12059 ID3D12Device3 * This,
12060 _In_opt_ ID3D12Resource *pResource,
12061 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
12062 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12063
12064 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
12065 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
12066 ID3D12Device3 * This,
12067 _In_opt_ ID3D12Resource *pResource,
12068 _In_opt_ ID3D12Resource *pCounterResource,
12069 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
12070 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12071
12072 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
12073 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
12074 ID3D12Device3 * This,
12075 _In_opt_ ID3D12Resource *pResource,
12076 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
12077 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12078
12079 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
12080 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
12081 ID3D12Device3 * This,
12082 _In_opt_ ID3D12Resource *pResource,
12083 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
12084 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12085
12086 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
12087 void ( STDMETHODCALLTYPE *CreateSampler )(
12088 ID3D12Device3 * This,
12089 _In_ const D3D12_SAMPLER_DESC *pDesc,
12090 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12091
12092 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
12093 void ( STDMETHODCALLTYPE *CopyDescriptors )(
12094 ID3D12Device3 * This,
12095 _In_ UINT NumDestDescriptorRanges,
12096 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
12097 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
12098 _In_ UINT NumSrcDescriptorRanges,
12099 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
12100 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
12101 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12102
12103 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
12104 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
12105 ID3D12Device3 * This,
12106 _In_ UINT NumDescriptors,
12107 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
12108 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
12109 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12110
12111 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
12112#if !defined(_WIN32)
12113 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12114 ID3D12Device3 * This,
12115 _In_ UINT visibleMask,
12116 _In_ UINT numResourceDescs,
12117 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12118
12119#else
12120 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12121 ID3D12Device3 * This,
12122 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12123 _In_ UINT visibleMask,
12124 _In_ UINT numResourceDescs,
12125 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12126
12127#endif
12128
12129 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
12130#if !defined(_WIN32)
12131 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12132 ID3D12Device3 * This,
12133 _In_ UINT nodeMask,
12134 D3D12_HEAP_TYPE heapType);
12135
12136#else
12137 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12138 ID3D12Device3 * This,
12139 D3D12_HEAP_PROPERTIES * RetVal,
12140 _In_ UINT nodeMask,
12141 D3D12_HEAP_TYPE heapType);
12142
12143#endif
12144
12145 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
12146 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
12147 ID3D12Device3 * This,
12148 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12149 D3D12_HEAP_FLAGS HeapFlags,
12150 _In_ const D3D12_RESOURCE_DESC *pDesc,
12151 D3D12_RESOURCE_STATES InitialResourceState,
12152 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12153 REFIID riidResource,
12154 _COM_Outptr_opt_ void **ppvResource);
12155
12156 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
12157 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
12158 ID3D12Device3 * This,
12159 _In_ const D3D12_HEAP_DESC *pDesc,
12160 REFIID riid,
12161 _COM_Outptr_opt_ void **ppvHeap);
12162
12163 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
12164 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
12165 ID3D12Device3 * This,
12166 _In_ ID3D12Heap *pHeap,
12167 UINT64 HeapOffset,
12168 _In_ const D3D12_RESOURCE_DESC *pDesc,
12169 D3D12_RESOURCE_STATES InitialState,
12170 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12171 REFIID riid,
12172 _COM_Outptr_opt_ void **ppvResource);
12173
12174 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
12175 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
12176 ID3D12Device3 * This,
12177 _In_ const D3D12_RESOURCE_DESC *pDesc,
12178 D3D12_RESOURCE_STATES InitialState,
12179 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12180 REFIID riid,
12181 _COM_Outptr_opt_ void **ppvResource);
12182
12183 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
12184 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
12185 ID3D12Device3 * This,
12186 _In_ ID3D12DeviceChild *pObject,
12187 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
12188 DWORD Access,
12189 _In_opt_ LPCWSTR Name,
12190 _Out_ HANDLE *pHandle);
12191
12192 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
12193 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
12194 ID3D12Device3 * This,
12195 _In_ HANDLE NTHandle,
12196 REFIID riid,
12197 _COM_Outptr_opt_ void **ppvObj);
12198
12199 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
12200 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
12201 ID3D12Device3 * This,
12202 _In_ LPCWSTR Name,
12203 DWORD Access,
12204 /* [annotation][out] */
12205 _Out_ HANDLE *pNTHandle);
12206
12207 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
12208 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
12209 ID3D12Device3 * This,
12210 UINT NumObjects,
12211 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12212
12213 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
12214 HRESULT ( STDMETHODCALLTYPE *Evict )(
12215 ID3D12Device3 * This,
12216 UINT NumObjects,
12217 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12218
12219 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
12220 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
12221 ID3D12Device3 * This,
12222 UINT64 InitialValue,
12223 D3D12_FENCE_FLAGS Flags,
12224 REFIID riid,
12225 _COM_Outptr_ void **ppFence);
12226
12227 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
12228 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
12229 ID3D12Device3 * This);
12230
12231 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
12232 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
12233 ID3D12Device3 * This,
12234 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
12235 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
12236 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
12237 UINT64 BaseOffset,
12238 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
12239 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
12240 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
12241 _Out_opt_ UINT64 *pTotalBytes);
12242
12243 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
12244 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
12245 ID3D12Device3 * This,
12246 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
12247 REFIID riid,
12248 _COM_Outptr_opt_ void **ppvHeap);
12249
12250 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
12251 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
12252 ID3D12Device3 * This,
12253 BOOL Enable);
12254
12255 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
12256 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
12257 ID3D12Device3 * This,
12258 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
12259 _In_opt_ ID3D12RootSignature *pRootSignature,
12260 REFIID riid,
12261 _COM_Outptr_opt_ void **ppvCommandSignature);
12262
12263 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
12264 void ( STDMETHODCALLTYPE *GetResourceTiling )(
12265 ID3D12Device3 * This,
12266 _In_ ID3D12Resource *pTiledResource,
12267 _Out_opt_ UINT *pNumTilesForEntireResource,
12268 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
12269 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
12270 _Inout_opt_ UINT *pNumSubresourceTilings,
12271 _In_ UINT FirstSubresourceTilingToGet,
12272 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
12273
12274 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
12275#if !defined(_WIN32)
12276 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
12277 ID3D12Device3 * This);
12278
12279#else
12280 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
12281 ID3D12Device3 * This,
12282 LUID * RetVal);
12283
12284#endif
12285
12286 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
12287 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
12288 ID3D12Device3 * This,
12289 _In_reads_(BlobLength) const void *pLibraryBlob,
12290 SIZE_T BlobLength,
12291 REFIID riid,
12292 _COM_Outptr_ void **ppPipelineLibrary);
12293
12294 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
12295 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
12296 ID3D12Device3 * This,
12297 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
12298 _In_reads_(NumFences) const UINT64 *pFenceValues,
12299 UINT NumFences,
12300 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
12301 HANDLE hEvent);
12302
12303 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
12304 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
12305 ID3D12Device3 * This,
12306 UINT NumObjects,
12307 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12308 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
12309
12310 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
12311 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
12312 ID3D12Device3 * This,
12313 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
12314 REFIID riid,
12315 _COM_Outptr_ void **ppPipelineState);
12316
12317 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
12318 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
12319 ID3D12Device3 * This,
12320 _In_ const void *pAddress,
12321 REFIID riid,
12322 _COM_Outptr_ void **ppvHeap);
12323
12324 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
12325 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
12326 ID3D12Device3 * This,
12327 _In_ HANDLE hFileMapping,
12328 REFIID riid,
12329 _COM_Outptr_ void **ppvHeap);
12330
12331 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
12332 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
12333 ID3D12Device3 * This,
12334 D3D12_RESIDENCY_FLAGS Flags,
12335 UINT NumObjects,
12336 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12337 _In_ ID3D12Fence *pFenceToSignal,
12338 UINT64 FenceValueToSignal);
12339
12340 END_INTERFACE
12341 } ID3D12Device3Vtbl;
12342
12343 interface ID3D12Device3
12344 {
12345 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
12346 };
12347
12348
12349
12350#ifdef COBJMACROS
12351
12352
12353#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
12354 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12355
12356#define ID3D12Device3_AddRef(This) \
12357 ( (This)->lpVtbl -> AddRef(This) )
12358
12359#define ID3D12Device3_Release(This) \
12360 ( (This)->lpVtbl -> Release(This) )
12361
12362
12363#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
12364 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12365
12366#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
12367 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12368
12369#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
12370 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12371
12372#define ID3D12Device3_SetName(This,Name) \
12373 ( (This)->lpVtbl -> SetName(This,Name) )
12374
12375
12376#define ID3D12Device3_GetNodeCount(This) \
12377 ( (This)->lpVtbl -> GetNodeCount(This) )
12378
12379#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12380 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12381
12382#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12383 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12384
12385#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12386 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12387
12388#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12389 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12390
12391#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12392 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12393
12394#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12395 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12396
12397#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12398 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12399
12400#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12401 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12402
12403#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12404 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12405
12406#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12407 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12408
12409#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12410 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12411
12412#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12413 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12414
12415#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12416 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12417
12418#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12419 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12420
12421#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
12422 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12423
12424#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12425 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12426
12427#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12428 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12429#if !defined(_WIN32)
12430
12431#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
12432 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
12433#else
12434#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12435 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12436#endif
12437#if !defined(_WIN32)
12438
12439#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \
12440 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
12441#else
12442#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12443 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12444#endif
12445
12446#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12447 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12448
12449#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
12450 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12451
12452#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12453 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12454
12455#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12456 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12457
12458#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12459 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12460
12461#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12462 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12463
12464#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12465 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12466
12467#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
12468 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12469
12470#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
12471 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12472
12473#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12474 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12475
12476#define ID3D12Device3_GetDeviceRemovedReason(This) \
12477 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12478
12479#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12480 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12481
12482#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12483 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12484
12485#define ID3D12Device3_SetStablePowerState(This,Enable) \
12486 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12487
12488#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12489 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12490
12491#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12492 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12493#if !defined(_WIN32)
12494
12495#define ID3D12Device3_GetAdapterLuid(This) \
12496 ( (This)->lpVtbl -> GetAdapterLuid(This) )
12497#else
12498#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
12499 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12500#endif
12501
12502
12503#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12504 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12505
12506#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12507 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12508
12509#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12510 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12511
12512
12513#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12514 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12515
12516
12517#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12518 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12519
12520#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12521 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12522
12523#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12524 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12525
12526#endif /* COBJMACROS */
12527
12528
12529#endif /* C style interface */
12530
12531
12532
12533
12534#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
12535
12536
12537/* interface __MIDL_itf_d3d12_0000_0028 */
12538/* [local] */
12539
12540typedef
12541enum D3D12_COMMAND_LIST_FLAGS
12542 {
12543 D3D12_COMMAND_LIST_FLAG_NONE = 0
12544 } D3D12_COMMAND_LIST_FLAGS;
12545
12546DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
12547typedef
12548enum D3D12_COMMAND_POOL_FLAGS
12549 {
12550 D3D12_COMMAND_POOL_FLAG_NONE = 0
12551 } D3D12_COMMAND_POOL_FLAGS;
12552
12553DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
12554typedef
12555enum D3D12_COMMAND_RECORDER_FLAGS
12556 {
12557 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
12558 } D3D12_COMMAND_RECORDER_FLAGS;
12559
12560DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
12561typedef
12562enum D3D12_PROTECTED_SESSION_STATUS
12563 {
12564 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
12565 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
12566 } D3D12_PROTECTED_SESSION_STATUS;
12567
12568
12569
12570extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
12571extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
12572
12573#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
12574#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
12575
12576/* interface ID3D12ProtectedSession */
12577/* [unique][local][object][uuid] */
12578
12579
12580EXTERN_C const IID IID_ID3D12ProtectedSession;
12581
12582#if defined(__cplusplus) && !defined(CINTERFACE)
12583
12584 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
12585 ID3D12ProtectedSession : public ID3D12DeviceChild
12586 {
12587 public:
12588 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
12589 REFIID riid,
12590 _COM_Outptr_opt_ void **ppFence) = 0;
12591
12592 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
12593
12594 };
12595
12596
12597#else /* C style interface */
12598
12599 typedef struct ID3D12ProtectedSessionVtbl
12600 {
12601 BEGIN_INTERFACE
12602
12603 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12604 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12605 ID3D12ProtectedSession * This,
12606 REFIID riid,
12607 _COM_Outptr_ void **ppvObject);
12608
12609 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12610 ULONG ( STDMETHODCALLTYPE *AddRef )(
12611 ID3D12ProtectedSession * This);
12612
12613 DECLSPEC_XFGVIRT(IUnknown, Release)
12614 ULONG ( STDMETHODCALLTYPE *Release )(
12615 ID3D12ProtectedSession * This);
12616
12617 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12618 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12619 ID3D12ProtectedSession * This,
12620 _In_ REFGUID guid,
12621 _Inout_ UINT *pDataSize,
12622 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12623
12624 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12625 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12626 ID3D12ProtectedSession * This,
12627 _In_ REFGUID guid,
12628 _In_ UINT DataSize,
12629 _In_reads_bytes_opt_( DataSize ) const void *pData);
12630
12631 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12632 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12633 ID3D12ProtectedSession * This,
12634 _In_ REFGUID guid,
12635 _In_opt_ const IUnknown *pData);
12636
12637 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12638 HRESULT ( STDMETHODCALLTYPE *SetName )(
12639 ID3D12ProtectedSession * This,
12640 _In_z_ LPCWSTR Name);
12641
12642 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12643 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12644 ID3D12ProtectedSession * This,
12645 REFIID riid,
12646 _COM_Outptr_opt_ void **ppvDevice);
12647
12648 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12649 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12650 ID3D12ProtectedSession * This,
12651 REFIID riid,
12652 _COM_Outptr_opt_ void **ppFence);
12653
12654 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12655 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12656 ID3D12ProtectedSession * This);
12657
12658 END_INTERFACE
12659 } ID3D12ProtectedSessionVtbl;
12660
12661 interface ID3D12ProtectedSession
12662 {
12663 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
12664 };
12665
12666
12667
12668#ifdef COBJMACROS
12669
12670
12671#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
12672 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12673
12674#define ID3D12ProtectedSession_AddRef(This) \
12675 ( (This)->lpVtbl -> AddRef(This) )
12676
12677#define ID3D12ProtectedSession_Release(This) \
12678 ( (This)->lpVtbl -> Release(This) )
12679
12680
12681#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
12682 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12683
12684#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
12685 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12686
12687#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
12688 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12689
12690#define ID3D12ProtectedSession_SetName(This,Name) \
12691 ( (This)->lpVtbl -> SetName(This,Name) )
12692
12693
12694#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
12695 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12696
12697
12698#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
12699 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12700
12701#define ID3D12ProtectedSession_GetSessionStatus(This) \
12702 ( (This)->lpVtbl -> GetSessionStatus(This) )
12703
12704#endif /* COBJMACROS */
12705
12706
12707#endif /* C style interface */
12708
12709
12710
12711
12712#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
12713
12714
12715/* interface __MIDL_itf_d3d12_0000_0029 */
12716/* [local] */
12717
12718typedef
12719enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
12720 {
12721 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
12722 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
12723 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
12724
12725DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
12726typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
12727 {
12728 UINT NodeIndex;
12729 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
12730 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
12731
12732typedef
12733enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
12734 {
12735 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
12736 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
12737
12738DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
12739typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
12740 {
12741 UINT NodeMask;
12742 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
12743 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
12744
12745
12746
12747extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12748extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12749
12750#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12751#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12752
12753/* interface ID3D12ProtectedResourceSession */
12754/* [unique][local][object][uuid] */
12755
12756
12757EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
12758
12759#if defined(__cplusplus) && !defined(CINTERFACE)
12760
12761 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
12762 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
12763 {
12764 public:
12765#if defined(_MSC_VER) || !defined(_WIN32)
12766 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
12767#else
12768 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
12769 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal) = 0;
12770#endif
12771
12772 };
12773
12774
12775#else /* C style interface */
12776
12777 typedef struct ID3D12ProtectedResourceSessionVtbl
12778 {
12779 BEGIN_INTERFACE
12780
12781 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12782 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12783 ID3D12ProtectedResourceSession * This,
12784 REFIID riid,
12785 _COM_Outptr_ void **ppvObject);
12786
12787 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12788 ULONG ( STDMETHODCALLTYPE *AddRef )(
12789 ID3D12ProtectedResourceSession * This);
12790
12791 DECLSPEC_XFGVIRT(IUnknown, Release)
12792 ULONG ( STDMETHODCALLTYPE *Release )(
12793 ID3D12ProtectedResourceSession * This);
12794
12795 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12796 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12797 ID3D12ProtectedResourceSession * This,
12798 _In_ REFGUID guid,
12799 _Inout_ UINT *pDataSize,
12800 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12801
12802 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12803 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12804 ID3D12ProtectedResourceSession * This,
12805 _In_ REFGUID guid,
12806 _In_ UINT DataSize,
12807 _In_reads_bytes_opt_( DataSize ) const void *pData);
12808
12809 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12810 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12811 ID3D12ProtectedResourceSession * This,
12812 _In_ REFGUID guid,
12813 _In_opt_ const IUnknown *pData);
12814
12815 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12816 HRESULT ( STDMETHODCALLTYPE *SetName )(
12817 ID3D12ProtectedResourceSession * This,
12818 _In_z_ LPCWSTR Name);
12819
12820 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12821 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12822 ID3D12ProtectedResourceSession * This,
12823 REFIID riid,
12824 _COM_Outptr_opt_ void **ppvDevice);
12825
12826 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12827 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12828 ID3D12ProtectedResourceSession * This,
12829 REFIID riid,
12830 _COM_Outptr_opt_ void **ppFence);
12831
12832 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12833 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12834 ID3D12ProtectedResourceSession * This);
12835
12836 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
12837#if !defined(_WIN32)
12838 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
12839 ID3D12ProtectedResourceSession * This);
12840
12841#else
12842 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
12843 ID3D12ProtectedResourceSession * This,
12844 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
12845
12846#endif
12847
12848 END_INTERFACE
12849 } ID3D12ProtectedResourceSessionVtbl;
12850
12851 interface ID3D12ProtectedResourceSession
12852 {
12853 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
12854 };
12855
12856
12857
12858#ifdef COBJMACROS
12859
12860
12861#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
12862 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12863
12864#define ID3D12ProtectedResourceSession_AddRef(This) \
12865 ( (This)->lpVtbl -> AddRef(This) )
12866
12867#define ID3D12ProtectedResourceSession_Release(This) \
12868 ( (This)->lpVtbl -> Release(This) )
12869
12870
12871#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
12872 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12873
12874#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
12875 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12876
12877#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
12878 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12879
12880#define ID3D12ProtectedResourceSession_SetName(This,Name) \
12881 ( (This)->lpVtbl -> SetName(This,Name) )
12882
12883
12884#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
12885 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12886
12887
12888#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
12889 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12890
12891#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
12892 ( (This)->lpVtbl -> GetSessionStatus(This) )
12893
12894#if !defined(_WIN32)
12895
12896#define ID3D12ProtectedResourceSession_GetDesc(This) \
12897 ( (This)->lpVtbl -> GetDesc(This) )
12898#else
12899#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
12900 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
12901#endif
12902
12903#endif /* COBJMACROS */
12904
12905
12906#endif /* C style interface */
12907
12908
12909
12910
12911#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
12912
12913
12914#ifndef __ID3D12Device4_INTERFACE_DEFINED__
12915#define __ID3D12Device4_INTERFACE_DEFINED__
12916
12917/* interface ID3D12Device4 */
12918/* [unique][local][object][uuid] */
12919
12920
12921EXTERN_C const IID IID_ID3D12Device4;
12922
12923#if defined(__cplusplus) && !defined(CINTERFACE)
12924
12925 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
12926 ID3D12Device4 : public ID3D12Device3
12927 {
12928 public:
12929 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
12930 _In_ UINT nodeMask,
12931 _In_ D3D12_COMMAND_LIST_TYPE type,
12932 _In_ D3D12_COMMAND_LIST_FLAGS flags,
12933 REFIID riid,
12934 _COM_Outptr_ void **ppCommandList) = 0;
12935
12936 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
12937 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
12938 _In_ REFIID riid,
12939 _COM_Outptr_ void **ppSession) = 0;
12940
12941 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
12942 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12943 D3D12_HEAP_FLAGS HeapFlags,
12944 _In_ const D3D12_RESOURCE_DESC *pDesc,
12945 D3D12_RESOURCE_STATES InitialResourceState,
12946 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12947 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12948 REFIID riidResource,
12949 _COM_Outptr_opt_ void **ppvResource) = 0;
12950
12951 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
12952 _In_ const D3D12_HEAP_DESC *pDesc,
12953 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12954 REFIID riid,
12955 _COM_Outptr_opt_ void **ppvHeap) = 0;
12956
12957 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
12958 _In_ const D3D12_RESOURCE_DESC *pDesc,
12959 D3D12_RESOURCE_STATES InitialState,
12960 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12961 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12962 REFIID riid,
12963 _COM_Outptr_opt_ void **ppvResource) = 0;
12964
12965#if defined(_MSC_VER) || !defined(_WIN32)
12966 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
12967 UINT visibleMask,
12968 UINT numResourceDescs,
12969 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12970 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12971#else
12972 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo1(
12973 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12974 UINT visibleMask,
12975 UINT numResourceDescs,
12976 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12977 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12978#endif
12979
12980 };
12981
12982
12983#else /* C style interface */
12984
12985 typedef struct ID3D12Device4Vtbl
12986 {
12987 BEGIN_INTERFACE
12988
12989 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12990 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12991 ID3D12Device4 * This,
12992 REFIID riid,
12993 _COM_Outptr_ void **ppvObject);
12994
12995 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12996 ULONG ( STDMETHODCALLTYPE *AddRef )(
12997 ID3D12Device4 * This);
12998
12999 DECLSPEC_XFGVIRT(IUnknown, Release)
13000 ULONG ( STDMETHODCALLTYPE *Release )(
13001 ID3D12Device4 * This);
13002
13003 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13004 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13005 ID3D12Device4 * This,
13006 _In_ REFGUID guid,
13007 _Inout_ UINT *pDataSize,
13008 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13009
13010 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13011 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13012 ID3D12Device4 * This,
13013 _In_ REFGUID guid,
13014 _In_ UINT DataSize,
13015 _In_reads_bytes_opt_( DataSize ) const void *pData);
13016
13017 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13018 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13019 ID3D12Device4 * This,
13020 _In_ REFGUID guid,
13021 _In_opt_ const IUnknown *pData);
13022
13023 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13024 HRESULT ( STDMETHODCALLTYPE *SetName )(
13025 ID3D12Device4 * This,
13026 _In_z_ LPCWSTR Name);
13027
13028 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13029 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13030 ID3D12Device4 * This);
13031
13032 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13033 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13034 ID3D12Device4 * This,
13035 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13036 REFIID riid,
13037 _COM_Outptr_ void **ppCommandQueue);
13038
13039 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13040 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13041 ID3D12Device4 * This,
13042 _In_ D3D12_COMMAND_LIST_TYPE type,
13043 REFIID riid,
13044 _COM_Outptr_ void **ppCommandAllocator);
13045
13046 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13047 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13048 ID3D12Device4 * This,
13049 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13050 REFIID riid,
13051 _COM_Outptr_ void **ppPipelineState);
13052
13053 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13054 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13055 ID3D12Device4 * This,
13056 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13057 REFIID riid,
13058 _COM_Outptr_ void **ppPipelineState);
13059
13060 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13061 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13062 ID3D12Device4 * This,
13063 _In_ UINT nodeMask,
13064 _In_ D3D12_COMMAND_LIST_TYPE type,
13065 _In_ ID3D12CommandAllocator *pCommandAllocator,
13066 _In_opt_ ID3D12PipelineState *pInitialState,
13067 REFIID riid,
13068 _COM_Outptr_ void **ppCommandList);
13069
13070 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13071 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13072 ID3D12Device4 * This,
13073 D3D12_FEATURE Feature,
13074 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13075 UINT FeatureSupportDataSize);
13076
13077 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13078 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13079 ID3D12Device4 * This,
13080 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13081 REFIID riid,
13082 _COM_Outptr_ void **ppvHeap);
13083
13084 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13085 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13086 ID3D12Device4 * This,
13087 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13088
13089 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13090 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13091 ID3D12Device4 * This,
13092 _In_ UINT nodeMask,
13093 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13094 _In_ SIZE_T blobLengthInBytes,
13095 REFIID riid,
13096 _COM_Outptr_ void **ppvRootSignature);
13097
13098 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13099 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13100 ID3D12Device4 * This,
13101 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13102 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13103
13104 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13105 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13106 ID3D12Device4 * This,
13107 _In_opt_ ID3D12Resource *pResource,
13108 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13109 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13110
13111 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13112 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13113 ID3D12Device4 * This,
13114 _In_opt_ ID3D12Resource *pResource,
13115 _In_opt_ ID3D12Resource *pCounterResource,
13116 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13117 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13118
13119 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13120 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13121 ID3D12Device4 * This,
13122 _In_opt_ ID3D12Resource *pResource,
13123 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13124 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13125
13126 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13127 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13128 ID3D12Device4 * This,
13129 _In_opt_ ID3D12Resource *pResource,
13130 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13131 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13132
13133 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13134 void ( STDMETHODCALLTYPE *CreateSampler )(
13135 ID3D12Device4 * This,
13136 _In_ const D3D12_SAMPLER_DESC *pDesc,
13137 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13138
13139 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13140 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13141 ID3D12Device4 * This,
13142 _In_ UINT NumDestDescriptorRanges,
13143 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13144 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13145 _In_ UINT NumSrcDescriptorRanges,
13146 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13147 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13148 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13149
13150 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13151 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13152 ID3D12Device4 * This,
13153 _In_ UINT NumDescriptors,
13154 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13155 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13156 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13157
13158 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13159#if !defined(_WIN32)
13160 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13161 ID3D12Device4 * This,
13162 _In_ UINT visibleMask,
13163 _In_ UINT numResourceDescs,
13164 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13165
13166#else
13167 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13168 ID3D12Device4 * This,
13169 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13170 _In_ UINT visibleMask,
13171 _In_ UINT numResourceDescs,
13172 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13173
13174#endif
13175
13176 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13177#if !defined(_WIN32)
13178 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13179 ID3D12Device4 * This,
13180 _In_ UINT nodeMask,
13181 D3D12_HEAP_TYPE heapType);
13182
13183#else
13184 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13185 ID3D12Device4 * This,
13186 D3D12_HEAP_PROPERTIES * RetVal,
13187 _In_ UINT nodeMask,
13188 D3D12_HEAP_TYPE heapType);
13189
13190#endif
13191
13192 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13193 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13194 ID3D12Device4 * This,
13195 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13196 D3D12_HEAP_FLAGS HeapFlags,
13197 _In_ const D3D12_RESOURCE_DESC *pDesc,
13198 D3D12_RESOURCE_STATES InitialResourceState,
13199 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13200 REFIID riidResource,
13201 _COM_Outptr_opt_ void **ppvResource);
13202
13203 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13204 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13205 ID3D12Device4 * This,
13206 _In_ const D3D12_HEAP_DESC *pDesc,
13207 REFIID riid,
13208 _COM_Outptr_opt_ void **ppvHeap);
13209
13210 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13211 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13212 ID3D12Device4 * This,
13213 _In_ ID3D12Heap *pHeap,
13214 UINT64 HeapOffset,
13215 _In_ const D3D12_RESOURCE_DESC *pDesc,
13216 D3D12_RESOURCE_STATES InitialState,
13217 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13218 REFIID riid,
13219 _COM_Outptr_opt_ void **ppvResource);
13220
13221 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13222 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13223 ID3D12Device4 * This,
13224 _In_ const D3D12_RESOURCE_DESC *pDesc,
13225 D3D12_RESOURCE_STATES InitialState,
13226 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13227 REFIID riid,
13228 _COM_Outptr_opt_ void **ppvResource);
13229
13230 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13231 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13232 ID3D12Device4 * This,
13233 _In_ ID3D12DeviceChild *pObject,
13234 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13235 DWORD Access,
13236 _In_opt_ LPCWSTR Name,
13237 _Out_ HANDLE *pHandle);
13238
13239 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13240 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13241 ID3D12Device4 * This,
13242 _In_ HANDLE NTHandle,
13243 REFIID riid,
13244 _COM_Outptr_opt_ void **ppvObj);
13245
13246 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13247 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13248 ID3D12Device4 * This,
13249 _In_ LPCWSTR Name,
13250 DWORD Access,
13251 /* [annotation][out] */
13252 _Out_ HANDLE *pNTHandle);
13253
13254 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13255 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13256 ID3D12Device4 * This,
13257 UINT NumObjects,
13258 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13259
13260 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13261 HRESULT ( STDMETHODCALLTYPE *Evict )(
13262 ID3D12Device4 * This,
13263 UINT NumObjects,
13264 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13265
13266 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13267 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13268 ID3D12Device4 * This,
13269 UINT64 InitialValue,
13270 D3D12_FENCE_FLAGS Flags,
13271 REFIID riid,
13272 _COM_Outptr_ void **ppFence);
13273
13274 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13275 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13276 ID3D12Device4 * This);
13277
13278 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13279 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13280 ID3D12Device4 * This,
13281 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13282 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13283 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13284 UINT64 BaseOffset,
13285 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13286 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13287 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13288 _Out_opt_ UINT64 *pTotalBytes);
13289
13290 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13291 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13292 ID3D12Device4 * This,
13293 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13294 REFIID riid,
13295 _COM_Outptr_opt_ void **ppvHeap);
13296
13297 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13298 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13299 ID3D12Device4 * This,
13300 BOOL Enable);
13301
13302 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13303 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13304 ID3D12Device4 * This,
13305 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13306 _In_opt_ ID3D12RootSignature *pRootSignature,
13307 REFIID riid,
13308 _COM_Outptr_opt_ void **ppvCommandSignature);
13309
13310 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13311 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13312 ID3D12Device4 * This,
13313 _In_ ID3D12Resource *pTiledResource,
13314 _Out_opt_ UINT *pNumTilesForEntireResource,
13315 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13316 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13317 _Inout_opt_ UINT *pNumSubresourceTilings,
13318 _In_ UINT FirstSubresourceTilingToGet,
13319 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13320
13321 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13322#if !defined(_WIN32)
13323 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
13324 ID3D12Device4 * This);
13325
13326#else
13327 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13328 ID3D12Device4 * This,
13329 LUID * RetVal);
13330
13331#endif
13332
13333 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13334 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13335 ID3D12Device4 * This,
13336 _In_reads_(BlobLength) const void *pLibraryBlob,
13337 SIZE_T BlobLength,
13338 REFIID riid,
13339 _COM_Outptr_ void **ppPipelineLibrary);
13340
13341 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13342 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13343 ID3D12Device4 * This,
13344 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13345 _In_reads_(NumFences) const UINT64 *pFenceValues,
13346 UINT NumFences,
13347 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13348 HANDLE hEvent);
13349
13350 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13351 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13352 ID3D12Device4 * This,
13353 UINT NumObjects,
13354 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13355 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13356
13357 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13358 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13359 ID3D12Device4 * This,
13360 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13361 REFIID riid,
13362 _COM_Outptr_ void **ppPipelineState);
13363
13364 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13365 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13366 ID3D12Device4 * This,
13367 _In_ const void *pAddress,
13368 REFIID riid,
13369 _COM_Outptr_ void **ppvHeap);
13370
13371 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13372 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13373 ID3D12Device4 * This,
13374 _In_ HANDLE hFileMapping,
13375 REFIID riid,
13376 _COM_Outptr_ void **ppvHeap);
13377
13378 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13379 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13380 ID3D12Device4 * This,
13381 D3D12_RESIDENCY_FLAGS Flags,
13382 UINT NumObjects,
13383 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13384 _In_ ID3D12Fence *pFenceToSignal,
13385 UINT64 FenceValueToSignal);
13386
13387 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13388 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13389 ID3D12Device4 * This,
13390 _In_ UINT nodeMask,
13391 _In_ D3D12_COMMAND_LIST_TYPE type,
13392 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13393 REFIID riid,
13394 _COM_Outptr_ void **ppCommandList);
13395
13396 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13397 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13398 ID3D12Device4 * This,
13399 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13400 _In_ REFIID riid,
13401 _COM_Outptr_ void **ppSession);
13402
13403 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13404 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13405 ID3D12Device4 * This,
13406 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13407 D3D12_HEAP_FLAGS HeapFlags,
13408 _In_ const D3D12_RESOURCE_DESC *pDesc,
13409 D3D12_RESOURCE_STATES InitialResourceState,
13410 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13411 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13412 REFIID riidResource,
13413 _COM_Outptr_opt_ void **ppvResource);
13414
13415 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13416 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13417 ID3D12Device4 * This,
13418 _In_ const D3D12_HEAP_DESC *pDesc,
13419 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13420 REFIID riid,
13421 _COM_Outptr_opt_ void **ppvHeap);
13422
13423 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13424 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13425 ID3D12Device4 * This,
13426 _In_ const D3D12_RESOURCE_DESC *pDesc,
13427 D3D12_RESOURCE_STATES InitialState,
13428 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13429 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13430 REFIID riid,
13431 _COM_Outptr_opt_ void **ppvResource);
13432
13433 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13434#if !defined(_WIN32)
13435 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13436 ID3D12Device4 * This,
13437 UINT visibleMask,
13438 UINT numResourceDescs,
13439 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13440 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13441
13442#else
13443 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13444 ID3D12Device4 * This,
13445 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13446 UINT visibleMask,
13447 UINT numResourceDescs,
13448 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13449 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13450
13451#endif
13452
13453 END_INTERFACE
13454 } ID3D12Device4Vtbl;
13455
13456 interface ID3D12Device4
13457 {
13458 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
13459 };
13460
13461
13462
13463#ifdef COBJMACROS
13464
13465
13466#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
13467 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13468
13469#define ID3D12Device4_AddRef(This) \
13470 ( (This)->lpVtbl -> AddRef(This) )
13471
13472#define ID3D12Device4_Release(This) \
13473 ( (This)->lpVtbl -> Release(This) )
13474
13475
13476#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
13477 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13478
13479#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
13480 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13481
13482#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
13483 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13484
13485#define ID3D12Device4_SetName(This,Name) \
13486 ( (This)->lpVtbl -> SetName(This,Name) )
13487
13488
13489#define ID3D12Device4_GetNodeCount(This) \
13490 ( (This)->lpVtbl -> GetNodeCount(This) )
13491
13492#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13493 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13494
13495#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13496 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13497
13498#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13499 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13500
13501#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13502 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13503
13504#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13505 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13506
13507#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13508 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13509
13510#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13511 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13512
13513#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13514 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13515
13516#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13517 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13518
13519#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13520 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13521
13522#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13523 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13524
13525#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13526 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13527
13528#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13529 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13530
13531#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13532 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13533
13534#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
13535 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13536
13537#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13538 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13539
13540#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13541 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13542#if !defined(_WIN32)
13543
13544#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
13545 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
13546#else
13547#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13548 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13549#endif
13550#if !defined(_WIN32)
13551
13552#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \
13553 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
13554#else
13555#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13556 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13557#endif
13558
13559#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13560 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13561
13562#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
13563 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13564
13565#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13566 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13567
13568#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13569 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13570
13571#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13572 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13573
13574#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13575 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13576
13577#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13578 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13579
13580#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
13581 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13582
13583#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
13584 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13585
13586#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13587 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13588
13589#define ID3D12Device4_GetDeviceRemovedReason(This) \
13590 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13591
13592#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13593 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13594
13595#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13596 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13597
13598#define ID3D12Device4_SetStablePowerState(This,Enable) \
13599 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
13600
13601#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
13602 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
13603
13604#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
13605 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
13606#if !defined(_WIN32)
13607
13608#define ID3D12Device4_GetAdapterLuid(This) \
13609 ( (This)->lpVtbl -> GetAdapterLuid(This) )
13610#else
13611#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
13612 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
13613#endif
13614
13615
13616#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
13617 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
13618
13619#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
13620 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
13621
13622#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
13623 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
13624
13625
13626#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
13627 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
13628
13629
13630#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
13631 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
13632
13633#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
13634 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
13635
13636#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
13637 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
13638
13639
13640#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
13641 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
13642
13643#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
13644 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
13645
13646#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
13647 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
13648
13649#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
13650 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
13651
13652#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
13653 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
13654#if !defined(_WIN32)
13655
13656#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13657 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13658#else
13659#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13660 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13661#endif
13662
13663#endif /* COBJMACROS */
13664
13665
13666#endif /* C style interface */
13667
13668
13669
13670
13671#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
13672
13673
13674/* interface __MIDL_itf_d3d12_0000_0031 */
13675/* [local] */
13676
13677typedef
13678enum D3D12_LIFETIME_STATE
13679 {
13680 D3D12_LIFETIME_STATE_IN_USE = 0,
13681 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
13682 } D3D12_LIFETIME_STATE;
13683
13684
13685
13686
13687extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
13688extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
13689
13690#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13691#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13692
13693/* interface ID3D12LifetimeOwner */
13694/* [unique][local][object][uuid] */
13695
13696
13697EXTERN_C const IID IID_ID3D12LifetimeOwner;
13698
13699#if defined(__cplusplus) && !defined(CINTERFACE)
13700
13701 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
13702 ID3D12LifetimeOwner : public IUnknown
13703 {
13704 public:
13705 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
13706 D3D12_LIFETIME_STATE NewState) = 0;
13707
13708 };
13709
13710
13711#else /* C style interface */
13712
13713 typedef struct ID3D12LifetimeOwnerVtbl
13714 {
13715 BEGIN_INTERFACE
13716
13717 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13718 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13719 ID3D12LifetimeOwner * This,
13720 REFIID riid,
13721 _COM_Outptr_ void **ppvObject);
13722
13723 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13724 ULONG ( STDMETHODCALLTYPE *AddRef )(
13725 ID3D12LifetimeOwner * This);
13726
13727 DECLSPEC_XFGVIRT(IUnknown, Release)
13728 ULONG ( STDMETHODCALLTYPE *Release )(
13729 ID3D12LifetimeOwner * This);
13730
13731 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
13732 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
13733 ID3D12LifetimeOwner * This,
13734 D3D12_LIFETIME_STATE NewState);
13735
13736 END_INTERFACE
13737 } ID3D12LifetimeOwnerVtbl;
13738
13739 interface ID3D12LifetimeOwner
13740 {
13741 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
13742 };
13743
13744
13745
13746#ifdef COBJMACROS
13747
13748
13749#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
13750 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13751
13752#define ID3D12LifetimeOwner_AddRef(This) \
13753 ( (This)->lpVtbl -> AddRef(This) )
13754
13755#define ID3D12LifetimeOwner_Release(This) \
13756 ( (This)->lpVtbl -> Release(This) )
13757
13758
13759#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
13760 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
13761
13762#endif /* COBJMACROS */
13763
13764
13765#endif /* C style interface */
13766
13767
13768
13769
13770#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
13771
13772
13773#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13774#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13775
13776/* interface ID3D12SwapChainAssistant */
13777/* [unique][local][object][uuid] */
13778
13779
13780EXTERN_C const IID IID_ID3D12SwapChainAssistant;
13781
13782#if defined(__cplusplus) && !defined(CINTERFACE)
13783
13784 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
13785 ID3D12SwapChainAssistant : public IUnknown
13786 {
13787 public:
13788#if defined(_MSC_VER) || !defined(_WIN32)
13789 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
13790#else
13791 virtual LUID *STDMETHODCALLTYPE GetLUID(
13792 LUID * RetVal) = 0;
13793#endif
13794
13795 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
13796 REFIID riid,
13797 _COM_Outptr_ void **ppv) = 0;
13798
13799 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
13800 REFIID riidResource,
13801 _COM_Outptr_ void **ppvResource,
13802 REFIID riidQueue,
13803 _COM_Outptr_ void **ppvQueue) = 0;
13804
13805 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
13806
13807 };
13808
13809
13810#else /* C style interface */
13811
13812 typedef struct ID3D12SwapChainAssistantVtbl
13813 {
13814 BEGIN_INTERFACE
13815
13816 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13817 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13818 ID3D12SwapChainAssistant * This,
13819 REFIID riid,
13820 _COM_Outptr_ void **ppvObject);
13821
13822 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13823 ULONG ( STDMETHODCALLTYPE *AddRef )(
13824 ID3D12SwapChainAssistant * This);
13825
13826 DECLSPEC_XFGVIRT(IUnknown, Release)
13827 ULONG ( STDMETHODCALLTYPE *Release )(
13828 ID3D12SwapChainAssistant * This);
13829
13830 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
13831#if !defined(_WIN32)
13832 LUID ( STDMETHODCALLTYPE *GetLUID )(
13833 ID3D12SwapChainAssistant * This);
13834
13835#else
13836 LUID *( STDMETHODCALLTYPE *GetLUID )(
13837 ID3D12SwapChainAssistant * This,
13838 LUID * RetVal);
13839
13840#endif
13841
13842 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
13843 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
13844 ID3D12SwapChainAssistant * This,
13845 REFIID riid,
13846 _COM_Outptr_ void **ppv);
13847
13848 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
13849 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
13850 ID3D12SwapChainAssistant * This,
13851 REFIID riidResource,
13852 _COM_Outptr_ void **ppvResource,
13853 REFIID riidQueue,
13854 _COM_Outptr_ void **ppvQueue);
13855
13856 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
13857 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
13858 ID3D12SwapChainAssistant * This);
13859
13860 END_INTERFACE
13861 } ID3D12SwapChainAssistantVtbl;
13862
13863 interface ID3D12SwapChainAssistant
13864 {
13865 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
13866 };
13867
13868
13869
13870#ifdef COBJMACROS
13871
13872
13873#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
13874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13875
13876#define ID3D12SwapChainAssistant_AddRef(This) \
13877 ( (This)->lpVtbl -> AddRef(This) )
13878
13879#define ID3D12SwapChainAssistant_Release(This) \
13880 ( (This)->lpVtbl -> Release(This) )
13881
13882#if !defined(_WIN32)
13883
13884#define ID3D12SwapChainAssistant_GetLUID(This) \
13885 ( (This)->lpVtbl -> GetLUID(This) )
13886#else
13887#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
13888 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
13889#endif
13890
13891#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
13892 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
13893
13894#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
13895 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
13896
13897#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
13898 ( (This)->lpVtbl -> InsertImplicitSync(This) )
13899
13900#endif /* COBJMACROS */
13901
13902
13903#endif /* C style interface */
13904
13905
13906
13907
13908#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
13909
13910
13911#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13912#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13913
13914/* interface ID3D12LifetimeTracker */
13915/* [unique][local][object][uuid] */
13916
13917
13918EXTERN_C const IID IID_ID3D12LifetimeTracker;
13919
13920#if defined(__cplusplus) && !defined(CINTERFACE)
13921
13922 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
13923 ID3D12LifetimeTracker : public ID3D12DeviceChild
13924 {
13925 public:
13926 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
13927 _In_ ID3D12DeviceChild *pObject) = 0;
13928
13929 };
13930
13931
13932#else /* C style interface */
13933
13934 typedef struct ID3D12LifetimeTrackerVtbl
13935 {
13936 BEGIN_INTERFACE
13937
13938 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13939 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13940 ID3D12LifetimeTracker * This,
13941 REFIID riid,
13942 _COM_Outptr_ void **ppvObject);
13943
13944 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13945 ULONG ( STDMETHODCALLTYPE *AddRef )(
13946 ID3D12LifetimeTracker * This);
13947
13948 DECLSPEC_XFGVIRT(IUnknown, Release)
13949 ULONG ( STDMETHODCALLTYPE *Release )(
13950 ID3D12LifetimeTracker * This);
13951
13952 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13953 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13954 ID3D12LifetimeTracker * This,
13955 _In_ REFGUID guid,
13956 _Inout_ UINT *pDataSize,
13957 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13958
13959 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13960 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13961 ID3D12LifetimeTracker * This,
13962 _In_ REFGUID guid,
13963 _In_ UINT DataSize,
13964 _In_reads_bytes_opt_( DataSize ) const void *pData);
13965
13966 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13967 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13968 ID3D12LifetimeTracker * This,
13969 _In_ REFGUID guid,
13970 _In_opt_ const IUnknown *pData);
13971
13972 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13973 HRESULT ( STDMETHODCALLTYPE *SetName )(
13974 ID3D12LifetimeTracker * This,
13975 _In_z_ LPCWSTR Name);
13976
13977 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
13978 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
13979 ID3D12LifetimeTracker * This,
13980 REFIID riid,
13981 _COM_Outptr_opt_ void **ppvDevice);
13982
13983 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
13984 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
13985 ID3D12LifetimeTracker * This,
13986 _In_ ID3D12DeviceChild *pObject);
13987
13988 END_INTERFACE
13989 } ID3D12LifetimeTrackerVtbl;
13990
13991 interface ID3D12LifetimeTracker
13992 {
13993 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
13994 };
13995
13996
13997
13998#ifdef COBJMACROS
13999
14000
14001#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
14002 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14003
14004#define ID3D12LifetimeTracker_AddRef(This) \
14005 ( (This)->lpVtbl -> AddRef(This) )
14006
14007#define ID3D12LifetimeTracker_Release(This) \
14008 ( (This)->lpVtbl -> Release(This) )
14009
14010
14011#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
14012 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14013
14014#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
14015 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14016
14017#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
14018 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14019
14020#define ID3D12LifetimeTracker_SetName(This,Name) \
14021 ( (This)->lpVtbl -> SetName(This,Name) )
14022
14023
14024#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
14025 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14026
14027
14028#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
14029 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
14030
14031#endif /* COBJMACROS */
14032
14033
14034#endif /* C style interface */
14035
14036
14037
14038
14039#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
14040
14041
14042/* interface __MIDL_itf_d3d12_0000_0034 */
14043/* [local] */
14044
14045typedef
14046enum D3D12_META_COMMAND_PARAMETER_TYPE
14047 {
14048 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
14049 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
14050 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
14051 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
14052 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
14053 } D3D12_META_COMMAND_PARAMETER_TYPE;
14054
14055typedef
14056enum D3D12_META_COMMAND_PARAMETER_FLAGS
14057 {
14058 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
14059 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
14060 } D3D12_META_COMMAND_PARAMETER_FLAGS;
14061
14062DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
14063typedef
14064enum D3D12_META_COMMAND_PARAMETER_STAGE
14065 {
14066 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
14067 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
14068 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
14069 } D3D12_META_COMMAND_PARAMETER_STAGE;
14070
14071typedef struct D3D12_META_COMMAND_PARAMETER_DESC
14072 {
14073 LPCWSTR Name;
14074 D3D12_META_COMMAND_PARAMETER_TYPE Type;
14075 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
14076 D3D12_RESOURCE_STATES RequiredResourceState;
14077 UINT StructureOffset;
14078 } D3D12_META_COMMAND_PARAMETER_DESC;
14079
14080typedef
14081enum D3D12_GRAPHICS_STATES
14082 {
14083 D3D12_GRAPHICS_STATE_NONE = 0,
14084 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
14085 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
14086 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
14087 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
14088 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
14089 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
14090 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
14091 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
14092 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
14093 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
14094 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
14095 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
14096 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
14097 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
14098 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
14099 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
14100 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
14101 } D3D12_GRAPHICS_STATES;
14102
14103DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
14104typedef struct D3D12_META_COMMAND_DESC
14105 {
14106 GUID Id;
14107 LPCWSTR Name;
14108 D3D12_GRAPHICS_STATES InitializationDirtyState;
14109 D3D12_GRAPHICS_STATES ExecutionDirtyState;
14110 } D3D12_META_COMMAND_DESC;
14111
14112
14113
14114extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
14115extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
14116
14117#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
14118#define __ID3D12StateObject_INTERFACE_DEFINED__
14119
14120/* interface ID3D12StateObject */
14121/* [unique][local][object][uuid] */
14122
14123
14124EXTERN_C const IID IID_ID3D12StateObject;
14125
14126#if defined(__cplusplus) && !defined(CINTERFACE)
14127
14128 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
14129 ID3D12StateObject : public ID3D12Pageable
14130 {
14131 public:
14132 };
14133
14134
14135#else /* C style interface */
14136
14137 typedef struct ID3D12StateObjectVtbl
14138 {
14139 BEGIN_INTERFACE
14140
14141 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14142 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14143 ID3D12StateObject * This,
14144 REFIID riid,
14145 _COM_Outptr_ void **ppvObject);
14146
14147 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14148 ULONG ( STDMETHODCALLTYPE *AddRef )(
14149 ID3D12StateObject * This);
14150
14151 DECLSPEC_XFGVIRT(IUnknown, Release)
14152 ULONG ( STDMETHODCALLTYPE *Release )(
14153 ID3D12StateObject * This);
14154
14155 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14156 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14157 ID3D12StateObject * This,
14158 _In_ REFGUID guid,
14159 _Inout_ UINT *pDataSize,
14160 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14161
14162 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14163 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14164 ID3D12StateObject * This,
14165 _In_ REFGUID guid,
14166 _In_ UINT DataSize,
14167 _In_reads_bytes_opt_( DataSize ) const void *pData);
14168
14169 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14170 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14171 ID3D12StateObject * This,
14172 _In_ REFGUID guid,
14173 _In_opt_ const IUnknown *pData);
14174
14175 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14176 HRESULT ( STDMETHODCALLTYPE *SetName )(
14177 ID3D12StateObject * This,
14178 _In_z_ LPCWSTR Name);
14179
14180 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
14181 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
14182 ID3D12StateObject * This,
14183 REFIID riid,
14184 _COM_Outptr_opt_ void **ppvDevice);
14185
14186 END_INTERFACE
14187 } ID3D12StateObjectVtbl;
14188
14189 interface ID3D12StateObject
14190 {
14191 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
14192 };
14193
14194
14195
14196#ifdef COBJMACROS
14197
14198
14199#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
14200 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14201
14202#define ID3D12StateObject_AddRef(This) \
14203 ( (This)->lpVtbl -> AddRef(This) )
14204
14205#define ID3D12StateObject_Release(This) \
14206 ( (This)->lpVtbl -> Release(This) )
14207
14208
14209#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
14210 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14211
14212#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
14213 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14214
14215#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
14216 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14217
14218#define ID3D12StateObject_SetName(This,Name) \
14219 ( (This)->lpVtbl -> SetName(This,Name) )
14220
14221
14222#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
14223 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14224
14225
14226
14227#endif /* COBJMACROS */
14228
14229
14230#endif /* C style interface */
14231
14232
14233
14234
14235#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
14236
14237
14238#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14239#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14240
14241/* interface ID3D12StateObjectProperties */
14242/* [unique][local][object][uuid] */
14243
14244
14245EXTERN_C const IID IID_ID3D12StateObjectProperties;
14246
14247#if defined(__cplusplus) && !defined(CINTERFACE)
14248
14249 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
14250 ID3D12StateObjectProperties : public IUnknown
14251 {
14252 public:
14253 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
14254 _In_ LPCWSTR pExportName) = 0;
14255
14256 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
14257 _In_ LPCWSTR pExportName) = 0;
14258
14259 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
14260
14261 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
14262 UINT64 PipelineStackSizeInBytes) = 0;
14263
14264 };
14265
14266
14267#else /* C style interface */
14268
14269 typedef struct ID3D12StateObjectPropertiesVtbl
14270 {
14271 BEGIN_INTERFACE
14272
14273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14275 ID3D12StateObjectProperties * This,
14276 REFIID riid,
14277 _COM_Outptr_ void **ppvObject);
14278
14279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14280 ULONG ( STDMETHODCALLTYPE *AddRef )(
14281 ID3D12StateObjectProperties * This);
14282
14283 DECLSPEC_XFGVIRT(IUnknown, Release)
14284 ULONG ( STDMETHODCALLTYPE *Release )(
14285 ID3D12StateObjectProperties * This);
14286
14287 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14288 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14289 ID3D12StateObjectProperties * This,
14290 _In_ LPCWSTR pExportName);
14291
14292 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14293 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14294 ID3D12StateObjectProperties * This,
14295 _In_ LPCWSTR pExportName);
14296
14297 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14298 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14299 ID3D12StateObjectProperties * This);
14300
14301 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14302 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14303 ID3D12StateObjectProperties * This,
14304 UINT64 PipelineStackSizeInBytes);
14305
14306 END_INTERFACE
14307 } ID3D12StateObjectPropertiesVtbl;
14308
14309 interface ID3D12StateObjectProperties
14310 {
14311 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
14312 };
14313
14314
14315
14316#ifdef COBJMACROS
14317
14318
14319#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
14320 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14321
14322#define ID3D12StateObjectProperties_AddRef(This) \
14323 ( (This)->lpVtbl -> AddRef(This) )
14324
14325#define ID3D12StateObjectProperties_Release(This) \
14326 ( (This)->lpVtbl -> Release(This) )
14327
14328
14329#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
14330 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14331
14332#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
14333 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14334
14335#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
14336 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14337
14338#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14339 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14340
14341#endif /* COBJMACROS */
14342
14343
14344#endif /* C style interface */
14345
14346
14347
14348
14349#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
14350
14351
14352/* interface __MIDL_itf_d3d12_0000_0036 */
14353/* [local] */
14354
14355typedef struct D3D12_PROGRAM_IDENTIFIER
14356 {
14357 UINT64 OpaqueData[ 4 ];
14358 } D3D12_PROGRAM_IDENTIFIER;
14359
14360
14361
14362extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
14363extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
14364
14365#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14366#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14367
14368/* interface ID3D12StateObjectProperties1 */
14369/* [unique][local][object][uuid] */
14370
14371
14372EXTERN_C const IID IID_ID3D12StateObjectProperties1;
14373
14374#if defined(__cplusplus) && !defined(CINTERFACE)
14375
14376 MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
14377 ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
14378 {
14379 public:
14380#if defined(_MSC_VER) || !defined(_WIN32)
14381 virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
14382 LPCWSTR pProgramName) = 0;
14383#else
14384 virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
14385 D3D12_PROGRAM_IDENTIFIER * RetVal,
14386 LPCWSTR pProgramName) = 0;
14387#endif
14388
14389 };
14390
14391
14392#else /* C style interface */
14393
14394 typedef struct ID3D12StateObjectProperties1Vtbl
14395 {
14396 BEGIN_INTERFACE
14397
14398 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14399 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14400 ID3D12StateObjectProperties1 * This,
14401 REFIID riid,
14402 _COM_Outptr_ void **ppvObject);
14403
14404 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14405 ULONG ( STDMETHODCALLTYPE *AddRef )(
14406 ID3D12StateObjectProperties1 * This);
14407
14408 DECLSPEC_XFGVIRT(IUnknown, Release)
14409 ULONG ( STDMETHODCALLTYPE *Release )(
14410 ID3D12StateObjectProperties1 * This);
14411
14412 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14413 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14414 ID3D12StateObjectProperties1 * This,
14415 _In_ LPCWSTR pExportName);
14416
14417 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14418 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14419 ID3D12StateObjectProperties1 * This,
14420 _In_ LPCWSTR pExportName);
14421
14422 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14423 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14424 ID3D12StateObjectProperties1 * This);
14425
14426 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14427 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14428 ID3D12StateObjectProperties1 * This,
14429 UINT64 PipelineStackSizeInBytes);
14430
14431 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14432#if !defined(_WIN32)
14433 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14434 ID3D12StateObjectProperties1 * This,
14435 LPCWSTR pProgramName);
14436
14437#else
14438 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14439 ID3D12StateObjectProperties1 * This,
14440 D3D12_PROGRAM_IDENTIFIER * RetVal,
14441 LPCWSTR pProgramName);
14442
14443#endif
14444
14445 END_INTERFACE
14446 } ID3D12StateObjectProperties1Vtbl;
14447
14448 interface ID3D12StateObjectProperties1
14449 {
14450 CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
14451 };
14452
14453
14454
14455#ifdef COBJMACROS
14456
14457
14458#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
14459 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14460
14461#define ID3D12StateObjectProperties1_AddRef(This) \
14462 ( (This)->lpVtbl -> AddRef(This) )
14463
14464#define ID3D12StateObjectProperties1_Release(This) \
14465 ( (This)->lpVtbl -> Release(This) )
14466
14467
14468#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
14469 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14470
14471#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
14472 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14473
14474#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
14475 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14476
14477#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14478 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14479
14480#if !defined(_WIN32)
14481
14482#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
14483 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14484#else
14485#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
14486 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14487#endif
14488
14489#endif /* COBJMACROS */
14490
14491
14492#endif /* C style interface */
14493
14494
14495
14496
14497#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
14498
14499
14500#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14501#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14502
14503/* interface ID3D12StateObjectProperties2 */
14504/* [unique][local][object][uuid] */
14505
14506
14507EXTERN_C const IID IID_ID3D12StateObjectProperties2;
14508
14509#if defined(__cplusplus) && !defined(CINTERFACE)
14510
14511 MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
14512 ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
14513 {
14514 public:
14515 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
14516 LPCWSTR pProgramName,
14517 REFIID riid,
14518 _COM_Outptr_ void **ppvRootSignature) = 0;
14519
14520 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
14521 LPCWSTR pExportName,
14522 REFIID riid,
14523 _COM_Outptr_ void **ppvRootSignature) = 0;
14524
14525 };
14526
14527
14528#else /* C style interface */
14529
14530 typedef struct ID3D12StateObjectProperties2Vtbl
14531 {
14532 BEGIN_INTERFACE
14533
14534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14536 ID3D12StateObjectProperties2 * This,
14537 REFIID riid,
14538 _COM_Outptr_ void **ppvObject);
14539
14540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14541 ULONG ( STDMETHODCALLTYPE *AddRef )(
14542 ID3D12StateObjectProperties2 * This);
14543
14544 DECLSPEC_XFGVIRT(IUnknown, Release)
14545 ULONG ( STDMETHODCALLTYPE *Release )(
14546 ID3D12StateObjectProperties2 * This);
14547
14548 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14549 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14550 ID3D12StateObjectProperties2 * This,
14551 _In_ LPCWSTR pExportName);
14552
14553 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14554 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14555 ID3D12StateObjectProperties2 * This,
14556 _In_ LPCWSTR pExportName);
14557
14558 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14559 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14560 ID3D12StateObjectProperties2 * This);
14561
14562 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14563 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14564 ID3D12StateObjectProperties2 * This,
14565 UINT64 PipelineStackSizeInBytes);
14566
14567 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14568#if !defined(_WIN32)
14569 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14570 ID3D12StateObjectProperties2 * This,
14571 LPCWSTR pProgramName);
14572
14573#else
14574 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14575 ID3D12StateObjectProperties2 * This,
14576 D3D12_PROGRAM_IDENTIFIER * RetVal,
14577 LPCWSTR pProgramName);
14578
14579#endif
14580
14581 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
14582 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
14583 ID3D12StateObjectProperties2 * This,
14584 LPCWSTR pProgramName,
14585 REFIID riid,
14586 _COM_Outptr_ void **ppvRootSignature);
14587
14588 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
14589 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
14590 ID3D12StateObjectProperties2 * This,
14591 LPCWSTR pExportName,
14592 REFIID riid,
14593 _COM_Outptr_ void **ppvRootSignature);
14594
14595 END_INTERFACE
14596 } ID3D12StateObjectProperties2Vtbl;
14597
14598 interface ID3D12StateObjectProperties2
14599 {
14600 CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
14601 };
14602
14603
14604
14605#ifdef COBJMACROS
14606
14607
14608#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
14609 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14610
14611#define ID3D12StateObjectProperties2_AddRef(This) \
14612 ( (This)->lpVtbl -> AddRef(This) )
14613
14614#define ID3D12StateObjectProperties2_Release(This) \
14615 ( (This)->lpVtbl -> Release(This) )
14616
14617
14618#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
14619 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14620
14621#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
14622 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14623
14624#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
14625 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14626
14627#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14628 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14629
14630#if !defined(_WIN32)
14631
14632#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
14633 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14634#else
14635#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
14636 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14637#endif
14638
14639
14640#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
14641 ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
14642
14643#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
14644 ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
14645
14646#endif /* COBJMACROS */
14647
14648
14649#endif /* C style interface */
14650
14651
14652
14653
14654#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
14655
14656
14657/* interface __MIDL_itf_d3d12_0000_0038 */
14658/* [local] */
14659
14660typedef struct D3D12_NODE_ID
14661 {
14662 LPCWSTR Name;
14663 UINT ArrayIndex;
14664 } D3D12_NODE_ID;
14665
14666typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
14667 {
14668 UINT64 MinSizeInBytes;
14669 UINT64 MaxSizeInBytes;
14670 UINT SizeGranularityInBytes;
14671 } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
14672
14673
14674
14675extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
14676extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
14677
14678#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14679#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14680
14681/* interface ID3D12WorkGraphProperties */
14682/* [unique][local][object][uuid] */
14683
14684
14685EXTERN_C const IID IID_ID3D12WorkGraphProperties;
14686
14687#if defined(__cplusplus) && !defined(CINTERFACE)
14688
14689 MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
14690 ID3D12WorkGraphProperties : public IUnknown
14691 {
14692 public:
14693 virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
14694
14695 virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
14696 UINT WorkGraphIndex) = 0;
14697
14698 virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
14699 LPCWSTR pProgramName) = 0;
14700
14701 virtual UINT STDMETHODCALLTYPE GetNumNodes(
14702 UINT WorkGraphIndex) = 0;
14703
14704#if defined(_MSC_VER) || !defined(_WIN32)
14705 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
14706 UINT WorkGraphIndex,
14707 UINT NodeIndex) = 0;
14708#else
14709 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
14710 D3D12_NODE_ID * RetVal,
14711 UINT WorkGraphIndex,
14712 UINT NodeIndex) = 0;
14713#endif
14714
14715 virtual UINT STDMETHODCALLTYPE GetNodeIndex(
14716 UINT WorkGraphIndex,
14717 D3D12_NODE_ID NodeID) = 0;
14718
14719 virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
14720 UINT WorkGraphIndex,
14721 UINT NodeIndex) = 0;
14722
14723 virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
14724 UINT WorkGraphIndex) = 0;
14725
14726#if defined(_MSC_VER) || !defined(_WIN32)
14727 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
14728 UINT WorkGraphIndex,
14729 UINT EntrypointIndex) = 0;
14730#else
14731 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
14732 D3D12_NODE_ID * RetVal,
14733 UINT WorkGraphIndex,
14734 UINT EntrypointIndex) = 0;
14735#endif
14736
14737 virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
14738 UINT WorkGraphIndex,
14739 D3D12_NODE_ID NodeID) = 0;
14740
14741 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
14742 UINT WorkGraphIndex,
14743 UINT EntrypointIndex) = 0;
14744
14745 virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
14746 UINT WorkGraphIndex,
14747 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
14748
14749 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
14750 UINT WorkGraphIndex,
14751 UINT EntrypointIndex) = 0;
14752
14753 };
14754
14755
14756#else /* C style interface */
14757
14758 typedef struct ID3D12WorkGraphPropertiesVtbl
14759 {
14760 BEGIN_INTERFACE
14761
14762 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14763 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14764 ID3D12WorkGraphProperties * This,
14765 REFIID riid,
14766 _COM_Outptr_ void **ppvObject);
14767
14768 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14769 ULONG ( STDMETHODCALLTYPE *AddRef )(
14770 ID3D12WorkGraphProperties * This);
14771
14772 DECLSPEC_XFGVIRT(IUnknown, Release)
14773 ULONG ( STDMETHODCALLTYPE *Release )(
14774 ID3D12WorkGraphProperties * This);
14775
14776 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
14777 UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
14778 ID3D12WorkGraphProperties * This);
14779
14780 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
14781 LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
14782 ID3D12WorkGraphProperties * This,
14783 UINT WorkGraphIndex);
14784
14785 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
14786 UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
14787 ID3D12WorkGraphProperties * This,
14788 LPCWSTR pProgramName);
14789
14790 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
14791 UINT ( STDMETHODCALLTYPE *GetNumNodes )(
14792 ID3D12WorkGraphProperties * This,
14793 UINT WorkGraphIndex);
14794
14795 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
14796#if !defined(_WIN32)
14797 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
14798 ID3D12WorkGraphProperties * This,
14799 UINT WorkGraphIndex,
14800 UINT NodeIndex);
14801
14802#else
14803 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
14804 ID3D12WorkGraphProperties * This,
14805 D3D12_NODE_ID * RetVal,
14806 UINT WorkGraphIndex,
14807 UINT NodeIndex);
14808
14809#endif
14810
14811 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
14812 UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
14813 ID3D12WorkGraphProperties * This,
14814 UINT WorkGraphIndex,
14815 D3D12_NODE_ID NodeID);
14816
14817 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
14818 UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
14819 ID3D12WorkGraphProperties * This,
14820 UINT WorkGraphIndex,
14821 UINT NodeIndex);
14822
14823 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
14824 UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
14825 ID3D12WorkGraphProperties * This,
14826 UINT WorkGraphIndex);
14827
14828 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
14829#if !defined(_WIN32)
14830 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
14831 ID3D12WorkGraphProperties * This,
14832 UINT WorkGraphIndex,
14833 UINT EntrypointIndex);
14834
14835#else
14836 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
14837 ID3D12WorkGraphProperties * This,
14838 D3D12_NODE_ID * RetVal,
14839 UINT WorkGraphIndex,
14840 UINT EntrypointIndex);
14841
14842#endif
14843
14844 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
14845 UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
14846 ID3D12WorkGraphProperties * This,
14847 UINT WorkGraphIndex,
14848 D3D12_NODE_ID NodeID);
14849
14850 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
14851 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
14852 ID3D12WorkGraphProperties * This,
14853 UINT WorkGraphIndex,
14854 UINT EntrypointIndex);
14855
14856 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
14857 void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
14858 ID3D12WorkGraphProperties * This,
14859 UINT WorkGraphIndex,
14860 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
14861
14862 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
14863 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
14864 ID3D12WorkGraphProperties * This,
14865 UINT WorkGraphIndex,
14866 UINT EntrypointIndex);
14867
14868 END_INTERFACE
14869 } ID3D12WorkGraphPropertiesVtbl;
14870
14871 interface ID3D12WorkGraphProperties
14872 {
14873 CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
14874 };
14875
14876
14877
14878#ifdef COBJMACROS
14879
14880
14881#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
14882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14883
14884#define ID3D12WorkGraphProperties_AddRef(This) \
14885 ( (This)->lpVtbl -> AddRef(This) )
14886
14887#define ID3D12WorkGraphProperties_Release(This) \
14888 ( (This)->lpVtbl -> Release(This) )
14889
14890
14891#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
14892 ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
14893
14894#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
14895 ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
14896
14897#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
14898 ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
14899
14900#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
14901 ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
14902#if !defined(_WIN32)
14903
14904#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
14905 ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
14906#else
14907#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
14908 ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
14909#endif
14910
14911#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
14912 ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
14913
14914#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
14915 ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
14916
14917#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
14918 ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
14919#if !defined(_WIN32)
14920
14921#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
14922 ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
14923#else
14924#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
14925 ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
14926#endif
14927
14928#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
14929 ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
14930
14931#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
14932 ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
14933
14934#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
14935 ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
14936
14937#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
14938 ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
14939
14940#endif /* COBJMACROS */
14941
14942
14943#endif /* C style interface */
14944
14945
14946
14947
14948#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
14949
14950
14951/* interface __MIDL_itf_d3d12_0000_0039 */
14952/* [local] */
14953
14954typedef
14955enum D3D12_STATE_SUBOBJECT_TYPE
14956 {
14957 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
14958 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
14959 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
14960 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
14961 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
14962 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
14963 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
14964 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
14965 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
14966 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
14967 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
14968 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
14969 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
14970 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
14971 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
14972 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
14973 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
14974 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
14975 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
14976 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
14977 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
14978 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
14979 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
14980 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
14981 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
14982 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
14983 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
14984 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
14985 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
14986 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
14987 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
14988 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
14989 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
14990 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
14991 } D3D12_STATE_SUBOBJECT_TYPE;
14992
14993typedef struct D3D12_STATE_SUBOBJECT
14994 {
14995 D3D12_STATE_SUBOBJECT_TYPE Type;
14996 const void *pDesc;
14997 } D3D12_STATE_SUBOBJECT;
14998
14999typedef
15000enum D3D12_STATE_OBJECT_FLAGS
15001 {
15002 D3D12_STATE_OBJECT_FLAG_NONE = 0,
15003 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
15004 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
15005 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
15006 } D3D12_STATE_OBJECT_FLAGS;
15007
15008DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
15009typedef struct D3D12_STATE_OBJECT_CONFIG
15010 {
15011 D3D12_STATE_OBJECT_FLAGS Flags;
15012 } D3D12_STATE_OBJECT_CONFIG;
15013
15014typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
15015 {
15016 ID3D12RootSignature *pGlobalRootSignature;
15017 } D3D12_GLOBAL_ROOT_SIGNATURE;
15018
15019typedef struct D3D12_LOCAL_ROOT_SIGNATURE
15020 {
15021 ID3D12RootSignature *pLocalRootSignature;
15022 } D3D12_LOCAL_ROOT_SIGNATURE;
15023
15024typedef struct D3D12_NODE_MASK
15025 {
15026 UINT NodeMask;
15027 } D3D12_NODE_MASK;
15028
15029typedef struct D3D12_SAMPLE_MASK
15030 {
15031 UINT SampleMask;
15032 } D3D12_SAMPLE_MASK;
15033
15034typedef struct D3D12_IB_STRIP_CUT_VALUE
15035 {
15036 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
15037 } D3D12_IB_STRIP_CUT_VALUE;
15038
15039typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
15040 {
15041 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
15042 } D3D12_PRIMITIVE_TOPOLOGY_DESC;
15043
15044typedef struct D3D12_DEPTH_STENCIL_FORMAT
15045 {
15046 DXGI_FORMAT DepthStencilFormat;
15047 } D3D12_DEPTH_STENCIL_FORMAT;
15048
15049typedef
15050enum D3D12_EXPORT_FLAGS
15051 {
15052 D3D12_EXPORT_FLAG_NONE = 0
15053 } D3D12_EXPORT_FLAGS;
15054
15055DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
15056typedef struct D3D12_EXPORT_DESC
15057 {
15058 LPCWSTR Name;
15059 _In_opt_ LPCWSTR ExportToRename;
15060 D3D12_EXPORT_FLAGS Flags;
15061 } D3D12_EXPORT_DESC;
15062
15063typedef struct D3D12_DXIL_LIBRARY_DESC
15064 {
15065 D3D12_SHADER_BYTECODE DXILLibrary;
15066 UINT NumExports;
15067 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15068 } D3D12_DXIL_LIBRARY_DESC;
15069
15070typedef struct D3D12_EXISTING_COLLECTION_DESC
15071 {
15072 ID3D12StateObject *pExistingCollection;
15073 UINT NumExports;
15074 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15075 } D3D12_EXISTING_COLLECTION_DESC;
15076
15077typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15078 {
15079 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
15080 UINT NumExports;
15081 _In_reads_(NumExports) LPCWSTR *pExports;
15082 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15083
15084typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15085 {
15086 LPCWSTR SubobjectToAssociate;
15087 UINT NumExports;
15088 _In_reads_(NumExports) LPCWSTR *pExports;
15089 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15090
15091typedef
15092enum D3D12_HIT_GROUP_TYPE
15093 {
15094 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
15095 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
15096 } D3D12_HIT_GROUP_TYPE;
15097
15098typedef struct D3D12_HIT_GROUP_DESC
15099 {
15100 LPCWSTR HitGroupExport;
15101 D3D12_HIT_GROUP_TYPE Type;
15102 _In_opt_ LPCWSTR AnyHitShaderImport;
15103 _In_opt_ LPCWSTR ClosestHitShaderImport;
15104 _In_opt_ LPCWSTR IntersectionShaderImport;
15105 } D3D12_HIT_GROUP_DESC;
15106
15107typedef struct D3D12_RAYTRACING_SHADER_CONFIG
15108 {
15109 UINT MaxPayloadSizeInBytes;
15110 UINT MaxAttributeSizeInBytes;
15111 } D3D12_RAYTRACING_SHADER_CONFIG;
15112
15113typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
15114 {
15115 UINT MaxTraceRecursionDepth;
15116 } D3D12_RAYTRACING_PIPELINE_CONFIG;
15117
15118typedef
15119enum D3D12_RAYTRACING_PIPELINE_FLAGS
15120 {
15121 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
15122 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
15123 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15124 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
15125 } D3D12_RAYTRACING_PIPELINE_FLAGS;
15126
15127DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
15128typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
15129 {
15130 UINT MaxTraceRecursionDepth;
15131 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
15132 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
15133
15134typedef struct D3D12_NODE_OUTPUT_OVERRIDES
15135 {
15136 UINT OutputIndex;
15137 _In_opt_ const D3D12_NODE_ID *pNewName;
15138 _In_opt_ const BOOL *pAllowSparseNodes;
15139 _In_opt_ const UINT *pMaxRecords;
15140 _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
15141 } D3D12_NODE_OUTPUT_OVERRIDES;
15142
15143typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
15144 {
15145 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15146 _In_opt_ const BOOL *pProgramEntry;
15147 _In_opt_ const D3D12_NODE_ID *pNewName;
15148 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15149 _In_reads_opt_(3) const UINT *pDispatchGrid;
15150 _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
15151 UINT NumOutputOverrides;
15152 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15153 } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
15154
15155typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
15156 {
15157 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15158 _In_opt_ const BOOL *pProgramEntry;
15159 _In_opt_ const D3D12_NODE_ID *pNewName;
15160 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15161 UINT NumOutputOverrides;
15162 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15163 } D3D12_COALESCING_LAUNCH_OVERRIDES;
15164
15165typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
15166 {
15167 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15168 _In_opt_ const BOOL *pProgramEntry;
15169 _In_opt_ const D3D12_NODE_ID *pNewName;
15170 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15171 UINT NumOutputOverrides;
15172 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15173 } D3D12_THREAD_LAUNCH_OVERRIDES;
15174
15175typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
15176 {
15177 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15178 _In_opt_ const BOOL *pProgramEntry;
15179 _In_opt_ const D3D12_NODE_ID *pNewName;
15180 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15181 UINT NumOutputOverrides;
15182 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15183 } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
15184
15185typedef
15186enum D3D12_NODE_OVERRIDES_TYPE
15187 {
15188 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
15189 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
15190 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
15191 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
15192 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
15193 } D3D12_NODE_OVERRIDES_TYPE;
15194
15195typedef struct D3D12_SHADER_NODE
15196 {
15197 LPCWSTR Shader;
15198 D3D12_NODE_OVERRIDES_TYPE OverridesType;
15199 union
15200 {
15201 const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
15202 const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
15203 const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
15204 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
15205 } ;
15206 } D3D12_SHADER_NODE;
15207
15208typedef
15209enum D3D12_NODE_TYPE
15210 {
15211 D3D12_NODE_TYPE_SHADER = 0
15212 } D3D12_NODE_TYPE;
15213
15214typedef struct D3D12_NODE
15215 {
15216 D3D12_NODE_TYPE NodeType;
15217 union
15218 {
15219 D3D12_SHADER_NODE Shader;
15220 } ;
15221 } D3D12_NODE;
15222
15223typedef
15224enum D3D12_WORK_GRAPH_FLAGS
15225 {
15226 D3D12_WORK_GRAPH_FLAG_NONE = 0,
15227 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
15228 } D3D12_WORK_GRAPH_FLAGS;
15229
15230DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
15231typedef struct D3D12_WORK_GRAPH_DESC
15232 {
15233 LPCWSTR ProgramName;
15234 D3D12_WORK_GRAPH_FLAGS Flags;
15235 UINT NumEntrypoints;
15236 _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
15237 UINT NumExplicitlyDefinedNodes;
15238 _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
15239 } D3D12_WORK_GRAPH_DESC;
15240
15241typedef struct D3D12_GENERIC_PROGRAM_DESC
15242 {
15243 LPCWSTR ProgramName;
15244 UINT NumExports;
15245 _In_reads_(NumExports) LPCWSTR *pExports;
15246 UINT NumSubobjects;
15247 _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
15248 } D3D12_GENERIC_PROGRAM_DESC;
15249
15250typedef
15251enum D3D12_STATE_OBJECT_TYPE
15252 {
15253 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
15254 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
15255 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
15256 } D3D12_STATE_OBJECT_TYPE;
15257
15258typedef struct D3D12_STATE_OBJECT_DESC
15259 {
15260 D3D12_STATE_OBJECT_TYPE Type;
15261 UINT NumSubobjects;
15262 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
15263 } D3D12_STATE_OBJECT_DESC;
15264
15265typedef
15266enum D3D12_RAYTRACING_GEOMETRY_FLAGS
15267 {
15268 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
15269 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
15270 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
15271 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
15272
15273DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
15274typedef
15275enum D3D12_RAYTRACING_GEOMETRY_TYPE
15276 {
15277 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
15278 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
15279 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
15280 } D3D12_RAYTRACING_GEOMETRY_TYPE;
15281
15282typedef
15283enum D3D12_RAYTRACING_INSTANCE_FLAGS
15284 {
15285 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
15286 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
15287 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
15288 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
15289 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
15290 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
15291 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
15292 } D3D12_RAYTRACING_INSTANCE_FLAGS;
15293
15294DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
15295typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
15296 {
15297 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15298 UINT64 StrideInBytes;
15299 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
15300
15301typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
15302 {
15303 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15304 UINT64 SizeInBytes;
15305 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
15306
15307typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
15308 {
15309 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15310 UINT64 SizeInBytes;
15311 UINT64 StrideInBytes;
15312 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
15313
15314typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
15315 {
15316 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
15317 DXGI_FORMAT IndexFormat;
15318 DXGI_FORMAT VertexFormat;
15319 UINT IndexCount;
15320 UINT VertexCount;
15321 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
15322 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
15323 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
15324
15325typedef struct D3D12_RAYTRACING_AABB
15326 {
15327 FLOAT MinX;
15328 FLOAT MinY;
15329 FLOAT MinZ;
15330 FLOAT MaxX;
15331 FLOAT MaxY;
15332 FLOAT MaxZ;
15333 } D3D12_RAYTRACING_AABB;
15334
15335typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
15336 {
15337 UINT64 AABBCount;
15338 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
15339 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
15340
15341typedef
15342enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
15343 {
15344 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
15345 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
15346 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
15347 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
15348 } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
15349
15350typedef
15351enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
15352 {
15353 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
15354 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
15355 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
15356 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
15357 } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
15358
15359typedef
15360enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
15361 {
15362 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
15363 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
15364 } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
15365
15366typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
15367{
15368 UINT ByteOffset;
15369 UINT SubdivisionLevel : 16;
15370 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
15371} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
15372typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
15373 {
15374 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
15375 DXGI_FORMAT OpacityMicromapIndexFormat;
15376 UINT OpacityMicromapBaseLocation;
15377 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
15378 } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
15379
15380typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
15381 {
15382 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
15383 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
15384 } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
15385
15386typedef
15387enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
15388 {
15389 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
15390 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
15391 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
15392 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
15393 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
15394 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
15395 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
15396 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
15397 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
15398 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
15399
15400DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
15401typedef
15402enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
15403 {
15404 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
15405 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
15406 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
15407 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
15408 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
15409 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
15410
15411typedef
15412enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
15413 {
15414 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
15415 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
15416 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
15417 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
15418
15419typedef
15420enum D3D12_ELEMENTS_LAYOUT
15421 {
15422 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
15423 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
15424 } D3D12_ELEMENTS_LAYOUT;
15425
15426typedef
15427enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
15428 {
15429 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
15430 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
15431 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
15432 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
15433 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
15434
15435typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
15436 {
15437 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15438 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
15439 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
15440
15441typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
15442 {
15443 UINT64 CompactedSizeInBytes;
15444 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
15445
15446typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15447 {
15448 UINT64 DecodedSizeInBytes;
15449 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15450
15451typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
15452 {
15453 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15454 UINT NumDescs;
15455 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
15456
15457// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
15458// depending on Type field, NumDescs above is followed by either:
15459// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
15460// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
15461// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
15462//
15463// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
15464//
15465// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
15466
15467typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
15468 {
15469 UINT64 SerializedSizeInBytes;
15470 union
15471 {
15472 UINT64 NumBottomLevelAccelerationStructurePointers;
15473 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
15474 } ;
15475 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
15476
15477typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
15478 {
15479 GUID DriverOpaqueGUID;
15480 BYTE DriverOpaqueVersioningData[ 16 ];
15481 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
15482
15483typedef
15484enum D3D12_SERIALIZED_DATA_TYPE
15485 {
15486 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
15487 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
15488 } D3D12_SERIALIZED_DATA_TYPE;
15489
15490typedef
15491enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
15492 {
15493 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
15494 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
15495 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
15496 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
15497 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
15498 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
15499
15500typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
15501 {
15502 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15503 UINT64 SerializedSizeInBytesIncludingHeader;
15504 UINT64 DeserializedSizeInBytes;
15505 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
15506 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
15507
15508typedef
15509enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
15510 {
15511 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
15512 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
15513 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
15514 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
15515
15516typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
15517 {
15518 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15519 UINT64 SerializedSizeInBytesIncludingHeader;
15520 UINT64 DeserializedSizeInBytes;
15521 union
15522 {
15523 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
15524 UINT NumBlocks;
15525 } ;
15526 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
15527 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
15528
15529typedef
15530enum D3D12_SERIALIZED_BLOCK_TYPE
15531 {
15532 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
15533 } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
15534
15535typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
15536 {
15537 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
15538 UINT64 NumBlockPointersAfterHeader;
15539 } D3D12_RAYTRACING_SERIALIZED_BLOCK;
15540
15541typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
15542 {
15543 UINT64 CurrentSizeInBytes;
15544 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15545
15546typedef struct D3D12_RAYTRACING_INSTANCE_DESC
15547 {
15548 FLOAT Transform[ 3 ][ 4 ];
15549 UINT InstanceID : 24;
15550 UINT InstanceMask : 8;
15551 UINT InstanceContributionToHitGroupIndex : 24;
15552 UINT Flags : 8;
15553 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
15554 } D3D12_RAYTRACING_INSTANCE_DESC;
15555
15556typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
15557 {
15558 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
15559 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
15560 union
15561 {
15562 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
15563 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
15564 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
15565 } ;
15566 } D3D12_RAYTRACING_GEOMETRY_DESC;
15567
15568typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
15569 {
15570 UINT Count;
15571 UINT SubdivisionLevel;
15572 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
15573 } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
15574
15575typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
15576 {
15577 UINT NumOmmHistogramEntries;
15578 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
15579 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
15580 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
15581 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
15582
15583typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
15584 {
15585 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15586 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
15587 UINT NumDescs;
15588 D3D12_ELEMENTS_LAYOUT DescsLayout;
15589 union
15590 {
15591 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
15592 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
15593 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
15594 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
15595 } ;
15596 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
15597
15598typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
15599 {
15600 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
15601 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
15602 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
15603 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
15604 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
15605
15606typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
15607 {
15608 UINT64 ResultDataMaxSizeInBytes;
15609 UINT64 ScratchDataSizeInBytes;
15610 UINT64 UpdateScratchDataSizeInBytes;
15611 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
15612
15613typedef
15614enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
15615 {
15616 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
15617 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
15618 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
15619
15620typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
15621 {
15622 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15623 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
15624 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
15625
15626typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
15627 {
15628 UINT64 CurrentSizeInBytes;
15629 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15630
15631typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15632 {
15633 UINT64 DecodedSizeInBytes;
15634 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15635
15636typedef
15637enum D3D12_RAY_FLAGS
15638 {
15639 D3D12_RAY_FLAG_NONE = 0,
15640 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
15641 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
15642 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
15643 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
15644 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
15645 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
15646 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
15647 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
15648 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
15649 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15650 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
15651 } D3D12_RAY_FLAGS;
15652
15653DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
15654typedef
15655enum D3D12_HIT_KIND
15656 {
15657 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
15658 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
15659 } D3D12_HIT_KIND;
15660
15661
15662
15663extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
15664extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
15665
15666#ifndef __ID3D12Device5_INTERFACE_DEFINED__
15667#define __ID3D12Device5_INTERFACE_DEFINED__
15668
15669/* interface ID3D12Device5 */
15670/* [unique][local][object][uuid] */
15671
15672
15673EXTERN_C const IID IID_ID3D12Device5;
15674
15675#if defined(__cplusplus) && !defined(CINTERFACE)
15676
15677 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
15678 ID3D12Device5 : public ID3D12Device4
15679 {
15680 public:
15681 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
15682 _In_ ID3D12LifetimeOwner *pOwner,
15683 REFIID riid,
15684 _COM_Outptr_ void **ppvTracker) = 0;
15685
15686 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
15687
15688 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
15689 _Inout_ UINT *pNumMetaCommands,
15690 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
15691
15692 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
15693 _In_ REFGUID CommandId,
15694 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15695 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15696 _Inout_ UINT *pParameterCount,
15697 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
15698
15699 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
15700 _In_ REFGUID CommandId,
15701 _In_ UINT NodeMask,
15702 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15703 _In_ SIZE_T CreationParametersDataSizeInBytes,
15704 REFIID riid,
15705 _COM_Outptr_ void **ppMetaCommand) = 0;
15706
15707 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
15708 const D3D12_STATE_OBJECT_DESC *pDesc,
15709 REFIID riid,
15710 _COM_Outptr_ void **ppStateObject) = 0;
15711
15712 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
15713 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15714 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
15715
15716 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
15717 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15718 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
15719
15720 };
15721
15722
15723#else /* C style interface */
15724
15725 typedef struct ID3D12Device5Vtbl
15726 {
15727 BEGIN_INTERFACE
15728
15729 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15730 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15731 ID3D12Device5 * This,
15732 REFIID riid,
15733 _COM_Outptr_ void **ppvObject);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15736 ULONG ( STDMETHODCALLTYPE *AddRef )(
15737 ID3D12Device5 * This);
15738
15739 DECLSPEC_XFGVIRT(IUnknown, Release)
15740 ULONG ( STDMETHODCALLTYPE *Release )(
15741 ID3D12Device5 * This);
15742
15743 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15744 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15745 ID3D12Device5 * This,
15746 _In_ REFGUID guid,
15747 _Inout_ UINT *pDataSize,
15748 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15749
15750 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15751 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15752 ID3D12Device5 * This,
15753 _In_ REFGUID guid,
15754 _In_ UINT DataSize,
15755 _In_reads_bytes_opt_( DataSize ) const void *pData);
15756
15757 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15758 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15759 ID3D12Device5 * This,
15760 _In_ REFGUID guid,
15761 _In_opt_ const IUnknown *pData);
15762
15763 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15764 HRESULT ( STDMETHODCALLTYPE *SetName )(
15765 ID3D12Device5 * This,
15766 _In_z_ LPCWSTR Name);
15767
15768 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15769 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15770 ID3D12Device5 * This);
15771
15772 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15773 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15774 ID3D12Device5 * This,
15775 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15776 REFIID riid,
15777 _COM_Outptr_ void **ppCommandQueue);
15778
15779 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15780 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15781 ID3D12Device5 * This,
15782 _In_ D3D12_COMMAND_LIST_TYPE type,
15783 REFIID riid,
15784 _COM_Outptr_ void **ppCommandAllocator);
15785
15786 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15787 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15788 ID3D12Device5 * This,
15789 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15790 REFIID riid,
15791 _COM_Outptr_ void **ppPipelineState);
15792
15793 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15794 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15795 ID3D12Device5 * This,
15796 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15797 REFIID riid,
15798 _COM_Outptr_ void **ppPipelineState);
15799
15800 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15801 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15802 ID3D12Device5 * This,
15803 _In_ UINT nodeMask,
15804 _In_ D3D12_COMMAND_LIST_TYPE type,
15805 _In_ ID3D12CommandAllocator *pCommandAllocator,
15806 _In_opt_ ID3D12PipelineState *pInitialState,
15807 REFIID riid,
15808 _COM_Outptr_ void **ppCommandList);
15809
15810 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15811 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15812 ID3D12Device5 * This,
15813 D3D12_FEATURE Feature,
15814 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15815 UINT FeatureSupportDataSize);
15816
15817 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15818 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15819 ID3D12Device5 * This,
15820 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15821 REFIID riid,
15822 _COM_Outptr_ void **ppvHeap);
15823
15824 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15825 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15826 ID3D12Device5 * This,
15827 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15828
15829 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15830 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15831 ID3D12Device5 * This,
15832 _In_ UINT nodeMask,
15833 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15834 _In_ SIZE_T blobLengthInBytes,
15835 REFIID riid,
15836 _COM_Outptr_ void **ppvRootSignature);
15837
15838 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15839 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15840 ID3D12Device5 * This,
15841 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15842 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15843
15844 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15845 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15846 ID3D12Device5 * This,
15847 _In_opt_ ID3D12Resource *pResource,
15848 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15849 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15850
15851 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15852 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15853 ID3D12Device5 * This,
15854 _In_opt_ ID3D12Resource *pResource,
15855 _In_opt_ ID3D12Resource *pCounterResource,
15856 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15857 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15858
15859 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15860 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15861 ID3D12Device5 * This,
15862 _In_opt_ ID3D12Resource *pResource,
15863 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15864 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15865
15866 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15867 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15868 ID3D12Device5 * This,
15869 _In_opt_ ID3D12Resource *pResource,
15870 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15871 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15872
15873 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15874 void ( STDMETHODCALLTYPE *CreateSampler )(
15875 ID3D12Device5 * This,
15876 _In_ const D3D12_SAMPLER_DESC *pDesc,
15877 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15878
15879 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15880 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15881 ID3D12Device5 * This,
15882 _In_ UINT NumDestDescriptorRanges,
15883 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15884 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15885 _In_ UINT NumSrcDescriptorRanges,
15886 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15887 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15888 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15889
15890 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15891 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15892 ID3D12Device5 * This,
15893 _In_ UINT NumDescriptors,
15894 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15895 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15896 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15897
15898 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15899#if !defined(_WIN32)
15900 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15901 ID3D12Device5 * This,
15902 _In_ UINT visibleMask,
15903 _In_ UINT numResourceDescs,
15904 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15905
15906#else
15907 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15908 ID3D12Device5 * This,
15909 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15910 _In_ UINT visibleMask,
15911 _In_ UINT numResourceDescs,
15912 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15913
15914#endif
15915
15916 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15917#if !defined(_WIN32)
15918 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15919 ID3D12Device5 * This,
15920 _In_ UINT nodeMask,
15921 D3D12_HEAP_TYPE heapType);
15922
15923#else
15924 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15925 ID3D12Device5 * This,
15926 D3D12_HEAP_PROPERTIES * RetVal,
15927 _In_ UINT nodeMask,
15928 D3D12_HEAP_TYPE heapType);
15929
15930#endif
15931
15932 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15933 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15934 ID3D12Device5 * This,
15935 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15936 D3D12_HEAP_FLAGS HeapFlags,
15937 _In_ const D3D12_RESOURCE_DESC *pDesc,
15938 D3D12_RESOURCE_STATES InitialResourceState,
15939 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15940 REFIID riidResource,
15941 _COM_Outptr_opt_ void **ppvResource);
15942
15943 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15944 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15945 ID3D12Device5 * This,
15946 _In_ const D3D12_HEAP_DESC *pDesc,
15947 REFIID riid,
15948 _COM_Outptr_opt_ void **ppvHeap);
15949
15950 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15951 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15952 ID3D12Device5 * This,
15953 _In_ ID3D12Heap *pHeap,
15954 UINT64 HeapOffset,
15955 _In_ const D3D12_RESOURCE_DESC *pDesc,
15956 D3D12_RESOURCE_STATES InitialState,
15957 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15958 REFIID riid,
15959 _COM_Outptr_opt_ void **ppvResource);
15960
15961 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15962 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15963 ID3D12Device5 * This,
15964 _In_ const D3D12_RESOURCE_DESC *pDesc,
15965 D3D12_RESOURCE_STATES InitialState,
15966 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15967 REFIID riid,
15968 _COM_Outptr_opt_ void **ppvResource);
15969
15970 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15971 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15972 ID3D12Device5 * This,
15973 _In_ ID3D12DeviceChild *pObject,
15974 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15975 DWORD Access,
15976 _In_opt_ LPCWSTR Name,
15977 _Out_ HANDLE *pHandle);
15978
15979 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15980 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15981 ID3D12Device5 * This,
15982 _In_ HANDLE NTHandle,
15983 REFIID riid,
15984 _COM_Outptr_opt_ void **ppvObj);
15985
15986 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15987 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15988 ID3D12Device5 * This,
15989 _In_ LPCWSTR Name,
15990 DWORD Access,
15991 /* [annotation][out] */
15992 _Out_ HANDLE *pNTHandle);
15993
15994 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15995 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15996 ID3D12Device5 * This,
15997 UINT NumObjects,
15998 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15999
16000 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16001 HRESULT ( STDMETHODCALLTYPE *Evict )(
16002 ID3D12Device5 * This,
16003 UINT NumObjects,
16004 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16005
16006 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16007 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16008 ID3D12Device5 * This,
16009 UINT64 InitialValue,
16010 D3D12_FENCE_FLAGS Flags,
16011 REFIID riid,
16012 _COM_Outptr_ void **ppFence);
16013
16014 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16015 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16016 ID3D12Device5 * This);
16017
16018 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16019 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16020 ID3D12Device5 * This,
16021 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16022 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16023 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16024 UINT64 BaseOffset,
16025 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16026 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16027 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16028 _Out_opt_ UINT64 *pTotalBytes);
16029
16030 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16031 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16032 ID3D12Device5 * This,
16033 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16034 REFIID riid,
16035 _COM_Outptr_opt_ void **ppvHeap);
16036
16037 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16038 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16039 ID3D12Device5 * This,
16040 BOOL Enable);
16041
16042 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16043 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16044 ID3D12Device5 * This,
16045 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16046 _In_opt_ ID3D12RootSignature *pRootSignature,
16047 REFIID riid,
16048 _COM_Outptr_opt_ void **ppvCommandSignature);
16049
16050 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16051 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16052 ID3D12Device5 * This,
16053 _In_ ID3D12Resource *pTiledResource,
16054 _Out_opt_ UINT *pNumTilesForEntireResource,
16055 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16056 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16057 _Inout_opt_ UINT *pNumSubresourceTilings,
16058 _In_ UINT FirstSubresourceTilingToGet,
16059 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16060
16061 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16062#if !defined(_WIN32)
16063 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
16064 ID3D12Device5 * This);
16065
16066#else
16067 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16068 ID3D12Device5 * This,
16069 LUID * RetVal);
16070
16071#endif
16072
16073 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16074 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16075 ID3D12Device5 * This,
16076 _In_reads_(BlobLength) const void *pLibraryBlob,
16077 SIZE_T BlobLength,
16078 REFIID riid,
16079 _COM_Outptr_ void **ppPipelineLibrary);
16080
16081 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16082 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16083 ID3D12Device5 * This,
16084 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16085 _In_reads_(NumFences) const UINT64 *pFenceValues,
16086 UINT NumFences,
16087 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16088 HANDLE hEvent);
16089
16090 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16091 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16092 ID3D12Device5 * This,
16093 UINT NumObjects,
16094 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16095 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16096
16097 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16098 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16099 ID3D12Device5 * This,
16100 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16101 REFIID riid,
16102 _COM_Outptr_ void **ppPipelineState);
16103
16104 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16105 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16106 ID3D12Device5 * This,
16107 _In_ const void *pAddress,
16108 REFIID riid,
16109 _COM_Outptr_ void **ppvHeap);
16110
16111 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16112 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16113 ID3D12Device5 * This,
16114 _In_ HANDLE hFileMapping,
16115 REFIID riid,
16116 _COM_Outptr_ void **ppvHeap);
16117
16118 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16119 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16120 ID3D12Device5 * This,
16121 D3D12_RESIDENCY_FLAGS Flags,
16122 UINT NumObjects,
16123 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16124 _In_ ID3D12Fence *pFenceToSignal,
16125 UINT64 FenceValueToSignal);
16126
16127 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16128 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16129 ID3D12Device5 * This,
16130 _In_ UINT nodeMask,
16131 _In_ D3D12_COMMAND_LIST_TYPE type,
16132 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16133 REFIID riid,
16134 _COM_Outptr_ void **ppCommandList);
16135
16136 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16137 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16138 ID3D12Device5 * This,
16139 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16140 _In_ REFIID riid,
16141 _COM_Outptr_ void **ppSession);
16142
16143 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16144 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16145 ID3D12Device5 * This,
16146 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16147 D3D12_HEAP_FLAGS HeapFlags,
16148 _In_ const D3D12_RESOURCE_DESC *pDesc,
16149 D3D12_RESOURCE_STATES InitialResourceState,
16150 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16151 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16152 REFIID riidResource,
16153 _COM_Outptr_opt_ void **ppvResource);
16154
16155 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16156 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16157 ID3D12Device5 * This,
16158 _In_ const D3D12_HEAP_DESC *pDesc,
16159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16160 REFIID riid,
16161 _COM_Outptr_opt_ void **ppvHeap);
16162
16163 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16164 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16165 ID3D12Device5 * This,
16166 _In_ const D3D12_RESOURCE_DESC *pDesc,
16167 D3D12_RESOURCE_STATES InitialState,
16168 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16169 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16170 REFIID riid,
16171 _COM_Outptr_opt_ void **ppvResource);
16172
16173 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16174#if !defined(_WIN32)
16175 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16176 ID3D12Device5 * This,
16177 UINT visibleMask,
16178 UINT numResourceDescs,
16179 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16180 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16181
16182#else
16183 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16184 ID3D12Device5 * This,
16185 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16186 UINT visibleMask,
16187 UINT numResourceDescs,
16188 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16189 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16190
16191#endif
16192
16193 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16194 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16195 ID3D12Device5 * This,
16196 _In_ ID3D12LifetimeOwner *pOwner,
16197 REFIID riid,
16198 _COM_Outptr_ void **ppvTracker);
16199
16200 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16201 void ( STDMETHODCALLTYPE *RemoveDevice )(
16202 ID3D12Device5 * This);
16203
16204 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16205 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16206 ID3D12Device5 * This,
16207 _Inout_ UINT *pNumMetaCommands,
16208 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16209
16210 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16211 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16212 ID3D12Device5 * This,
16213 _In_ REFGUID CommandId,
16214 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16215 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16216 _Inout_ UINT *pParameterCount,
16217 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16218
16219 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16220 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16221 ID3D12Device5 * This,
16222 _In_ REFGUID CommandId,
16223 _In_ UINT NodeMask,
16224 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16225 _In_ SIZE_T CreationParametersDataSizeInBytes,
16226 REFIID riid,
16227 _COM_Outptr_ void **ppMetaCommand);
16228
16229 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16230 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16231 ID3D12Device5 * This,
16232 const D3D12_STATE_OBJECT_DESC *pDesc,
16233 REFIID riid,
16234 _COM_Outptr_ void **ppStateObject);
16235
16236 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16237 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16238 ID3D12Device5 * This,
16239 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16240 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16241
16242 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16243 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16244 ID3D12Device5 * This,
16245 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16246 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16247
16248 END_INTERFACE
16249 } ID3D12Device5Vtbl;
16250
16251 interface ID3D12Device5
16252 {
16253 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
16254 };
16255
16256
16257
16258#ifdef COBJMACROS
16259
16260
16261#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
16262 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16263
16264#define ID3D12Device5_AddRef(This) \
16265 ( (This)->lpVtbl -> AddRef(This) )
16266
16267#define ID3D12Device5_Release(This) \
16268 ( (This)->lpVtbl -> Release(This) )
16269
16270
16271#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
16272 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16273
16274#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
16275 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16276
16277#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
16278 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16279
16280#define ID3D12Device5_SetName(This,Name) \
16281 ( (This)->lpVtbl -> SetName(This,Name) )
16282
16283
16284#define ID3D12Device5_GetNodeCount(This) \
16285 ( (This)->lpVtbl -> GetNodeCount(This) )
16286
16287#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16288 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16289
16290#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16291 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16292
16293#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16294 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16295
16296#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16297 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16298
16299#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16300 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16301
16302#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16303 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16304
16305#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16306 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16307
16308#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16309 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16310
16311#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16312 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16313
16314#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16315 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16316
16317#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16318 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16319
16320#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16321 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16322
16323#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16324 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16325
16326#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16327 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16328
16329#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
16330 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16331
16332#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16333 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16334
16335#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16336 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16337#if !defined(_WIN32)
16338
16339#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
16340 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
16341#else
16342#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16343 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16344#endif
16345#if !defined(_WIN32)
16346
16347#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \
16348 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
16349#else
16350#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16351 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16352#endif
16353
16354#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16355 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16356
16357#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
16358 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16359
16360#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16361 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16362
16363#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16364 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16365
16366#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16367 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16368
16369#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16370 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16371
16372#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16373 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16374
16375#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
16376 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16377
16378#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
16379 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16380
16381#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16382 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16383
16384#define ID3D12Device5_GetDeviceRemovedReason(This) \
16385 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16386
16387#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16388 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16389
16390#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16391 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16392
16393#define ID3D12Device5_SetStablePowerState(This,Enable) \
16394 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16395
16396#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16397 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16398
16399#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16400 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16401#if !defined(_WIN32)
16402
16403#define ID3D12Device5_GetAdapterLuid(This) \
16404 ( (This)->lpVtbl -> GetAdapterLuid(This) )
16405#else
16406#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
16407 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16408#endif
16409
16410
16411#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16412 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16413
16414#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16415 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16416
16417#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16418 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16419
16420
16421#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16422 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16423
16424
16425#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16426 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16427
16428#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16429 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16430
16431#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16432 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16433
16434
16435#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16436 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16437
16438#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16439 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16440
16441#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16442 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16443
16444#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16445 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16446
16447#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16448 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16449#if !defined(_WIN32)
16450
16451#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16452 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16453#else
16454#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16455 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16456#endif
16457
16458
16459#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16460 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16461
16462#define ID3D12Device5_RemoveDevice(This) \
16463 ( (This)->lpVtbl -> RemoveDevice(This) )
16464
16465#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16466 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16467
16468#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16469 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16470
16471#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16472 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16473
16474#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
16475 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16476
16477#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16478 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16479
16480#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16481 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16482
16483#endif /* COBJMACROS */
16484
16485
16486#endif /* C style interface */
16487
16488
16489
16490
16491#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
16492
16493
16494/* interface __MIDL_itf_d3d12_0000_0040 */
16495/* [local] */
16496
16497typedef
16498enum D3D12_MARKER_API
16499 {
16500 D3D12_MARKER_API_SETMARKER = 0,
16501 D3D12_MARKER_API_BEGINEVENT = 1,
16502 D3D12_MARKER_API_ENDEVENT = 2,
16503 D3D12_MARKER_API_DRAWINSTANCED = 3,
16504 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
16505 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
16506 D3D12_MARKER_API_DISPATCH = 6,
16507 D3D12_MARKER_API_COPYBUFFERREGION = 7,
16508 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16509 D3D12_MARKER_API_COPYRESOURCE = 9,
16510 D3D12_MARKER_API_COPYTILES = 10,
16511 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
16512 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
16513 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
16514 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
16515 D3D12_MARKER_API_RESOURCEBARRIER = 15,
16516 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
16517 D3D12_MARKER_API_PRESENT = 17,
16518 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
16519 D3D12_MARKER_API_BEGINSUBMISSION = 19,
16520 D3D12_MARKER_API_ENDSUBMISSION = 20,
16521 D3D12_MARKER_API_DECODEFRAME = 21,
16522 D3D12_MARKER_API_PROCESSFRAMES = 22,
16523 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
16524 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
16525 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
16526 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
16527 D3D12_MARKER_API_DECODEFRAME1 = 27,
16528 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
16529 D3D12_MARKER_API_DECODEFRAME2 = 29,
16530 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
16531 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
16532 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
16533 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
16534 D3D12_MARKER_API_DISPATCHRAYS = 34,
16535 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
16536 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
16537 D3D12_MARKER_API_ESTIMATEMOTION = 37,
16538 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
16539 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
16540 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
16541 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
16542 D3D12_MARKER_API_DISPATCHMESH = 42,
16543 D3D12_MARKER_API_ENCODEFRAME = 43,
16544 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
16545 D3D12_MARKER_API_BARRIER = 45,
16546 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
16547 D3D12_MARKER_API_DISPATCHGRAPH = 47,
16548 D3D12_MARKER_API_SETPROGRAM = 48,
16549 D3D12_MARKER_API_ENCODEFRAME1 = 49,
16550 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
16551 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
16552 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
16553 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
16554 } D3D12_MARKER_API;
16555
16556typedef
16557enum D3D12_AUTO_BREADCRUMB_OP
16558 {
16559 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
16560 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
16561 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
16562 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
16563 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
16564 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
16565 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
16566 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
16567 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
16568 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
16569 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
16570 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
16571 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
16572 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
16573 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
16574 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
16575 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
16576 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
16577 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
16578 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
16579 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
16580 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
16581 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
16582 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
16583 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
16584 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
16585 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
16586 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
16587 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
16588 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
16589 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
16590 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
16591 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
16592 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
16593 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
16594 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
16595 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
16596 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
16597 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
16598 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
16599 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
16600 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
16601 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
16602 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
16603 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
16604 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
16605 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
16606 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
16607 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
16608 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
16609 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
16610 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
16611 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
16612 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
16613 } D3D12_AUTO_BREADCRUMB_OP;
16614
16615typedef struct D3D12_AUTO_BREADCRUMB_NODE
16616 {
16617 const char *pCommandListDebugNameA;
16618 const wchar_t *pCommandListDebugNameW;
16619 const char *pCommandQueueDebugNameA;
16620 const wchar_t *pCommandQueueDebugNameW;
16621 ID3D12GraphicsCommandList *pCommandList;
16622 ID3D12CommandQueue *pCommandQueue;
16623 UINT32 BreadcrumbCount;
16624 const UINT32 *pLastBreadcrumbValue;
16625 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16626 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
16627 } D3D12_AUTO_BREADCRUMB_NODE;
16628
16629typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
16630 {
16631 UINT BreadcrumbIndex;
16632 const wchar_t *pContextString;
16633 } D3D12_DRED_BREADCRUMB_CONTEXT;
16634
16635typedef struct D3D12_AUTO_BREADCRUMB_NODE1
16636 {
16637 const char *pCommandListDebugNameA;
16638 const wchar_t *pCommandListDebugNameW;
16639 const char *pCommandQueueDebugNameA;
16640 const wchar_t *pCommandQueueDebugNameW;
16641 ID3D12GraphicsCommandList *pCommandList;
16642 ID3D12CommandQueue *pCommandQueue;
16643 UINT BreadcrumbCount;
16644 const UINT *pLastBreadcrumbValue;
16645 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16646 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
16647 UINT BreadcrumbContextsCount;
16648 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
16649 } D3D12_AUTO_BREADCRUMB_NODE1;
16650
16651typedef
16652enum D3D12_DRED_VERSION
16653 {
16654 D3D12_DRED_VERSION_1_0 = 0x1,
16655 D3D12_DRED_VERSION_1_1 = 0x2,
16656 D3D12_DRED_VERSION_1_2 = 0x3,
16657 D3D12_DRED_VERSION_1_3 = 0x4
16658 } D3D12_DRED_VERSION;
16659
16660typedef
16661enum D3D12_DRED_FLAGS
16662 {
16663 D3D12_DRED_FLAG_NONE = 0,
16664 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
16665 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
16666 } D3D12_DRED_FLAGS;
16667
16668DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
16669typedef
16670enum D3D12_DRED_ENABLEMENT
16671 {
16672 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
16673 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
16674 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
16675 } D3D12_DRED_ENABLEMENT;
16676
16677typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
16678 {
16679 _In_ D3D12_DRED_FLAGS Flags;
16680 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16681 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
16682
16683typedef
16684enum D3D12_DRED_ALLOCATION_TYPE
16685 {
16686 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
16687 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
16688 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
16689 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
16690 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
16691 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
16692 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
16693 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
16694 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
16695 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
16696 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
16697 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
16698 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
16699 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
16700 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
16701 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
16702 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
16703 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
16704 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
16705 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
16706 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
16707 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
16708 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
16709 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
16710 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
16711 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
16712 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
16713 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
16714 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
16715 } D3D12_DRED_ALLOCATION_TYPE;
16716
16717typedef struct D3D12_DRED_ALLOCATION_NODE
16718 {
16719 const char *ObjectNameA;
16720 const wchar_t *ObjectNameW;
16721 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16722 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
16723 } D3D12_DRED_ALLOCATION_NODE;
16724
16725typedef struct D3D12_DRED_ALLOCATION_NODE1
16726 {
16727 const char *ObjectNameA;
16728 const wchar_t *ObjectNameW;
16729 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16730 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
16731 const IUnknown *pObject;
16732 } D3D12_DRED_ALLOCATION_NODE1;
16733
16734typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
16735 {
16736 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16737 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
16738
16739typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
16740 {
16741 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
16742 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
16743
16744typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
16745 {
16746 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16747 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
16748 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
16749 } D3D12_DRED_PAGE_FAULT_OUTPUT;
16750
16751typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
16752 {
16753 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16754 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16755 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16756 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
16757
16758typedef
16759enum D3D12_DRED_PAGE_FAULT_FLAGS
16760 {
16761 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
16762 } D3D12_DRED_PAGE_FAULT_FLAGS;
16763
16764DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
16765typedef
16766enum D3D12_DRED_DEVICE_STATE
16767 {
16768 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
16769 D3D12_DRED_DEVICE_STATE_HUNG = 3,
16770 D3D12_DRED_DEVICE_STATE_FAULT = 6,
16771 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
16772 } D3D12_DRED_DEVICE_STATE;
16773
16774typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
16775 {
16776 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16777 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16778 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16779 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
16780 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
16781
16782typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
16783 {
16784 HRESULT DeviceRemovedReason;
16785 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
16786 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
16787 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
16788
16789typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
16790 {
16791 HRESULT DeviceRemovedReason;
16792 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16793 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
16794 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
16795
16796typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
16797 {
16798 HRESULT DeviceRemovedReason;
16799 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16800 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
16801 D3D12_DRED_DEVICE_STATE DeviceState;
16802 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
16803
16804typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
16805 {
16806 D3D12_DRED_VERSION Version;
16807 union
16808 {
16809 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
16810 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
16811 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
16812 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
16813 } ;
16814 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
16815
16816
16817
16818extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
16819extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
16820
16821#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16822#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16823
16824/* interface ID3D12DeviceRemovedExtendedDataSettings */
16825/* [unique][local][object][uuid] */
16826
16827
16828EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
16829
16830#if defined(__cplusplus) && !defined(CINTERFACE)
16831
16832 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
16833 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
16834 {
16835 public:
16836 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
16837 D3D12_DRED_ENABLEMENT Enablement) = 0;
16838
16839 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
16840 D3D12_DRED_ENABLEMENT Enablement) = 0;
16841
16842 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
16843 D3D12_DRED_ENABLEMENT Enablement) = 0;
16844
16845 };
16846
16847
16848#else /* C style interface */
16849
16850 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
16851 {
16852 BEGIN_INTERFACE
16853
16854 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16855 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16856 ID3D12DeviceRemovedExtendedDataSettings * This,
16857 REFIID riid,
16858 _COM_Outptr_ void **ppvObject);
16859
16860 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16861 ULONG ( STDMETHODCALLTYPE *AddRef )(
16862 ID3D12DeviceRemovedExtendedDataSettings * This);
16863
16864 DECLSPEC_XFGVIRT(IUnknown, Release)
16865 ULONG ( STDMETHODCALLTYPE *Release )(
16866 ID3D12DeviceRemovedExtendedDataSettings * This);
16867
16868 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16869 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16870 ID3D12DeviceRemovedExtendedDataSettings * This,
16871 D3D12_DRED_ENABLEMENT Enablement);
16872
16873 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16874 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16875 ID3D12DeviceRemovedExtendedDataSettings * This,
16876 D3D12_DRED_ENABLEMENT Enablement);
16877
16878 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16879 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16880 ID3D12DeviceRemovedExtendedDataSettings * This,
16881 D3D12_DRED_ENABLEMENT Enablement);
16882
16883 END_INTERFACE
16884 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
16885
16886 interface ID3D12DeviceRemovedExtendedDataSettings
16887 {
16888 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
16889 };
16890
16891
16892
16893#ifdef COBJMACROS
16894
16895
16896#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
16897 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16898
16899#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
16900 ( (This)->lpVtbl -> AddRef(This) )
16901
16902#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
16903 ( (This)->lpVtbl -> Release(This) )
16904
16905
16906#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
16907 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
16908
16909#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
16910 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
16911
16912#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
16913 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
16914
16915#endif /* COBJMACROS */
16916
16917
16918#endif /* C style interface */
16919
16920
16921
16922
16923#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
16924
16925
16926#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16927#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16928
16929/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
16930/* [unique][local][object][uuid] */
16931
16932
16933EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
16934
16935#if defined(__cplusplus) && !defined(CINTERFACE)
16936
16937 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
16938 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
16939 {
16940 public:
16941 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
16942 D3D12_DRED_ENABLEMENT Enablement) = 0;
16943
16944 };
16945
16946
16947#else /* C style interface */
16948
16949 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
16950 {
16951 BEGIN_INTERFACE
16952
16953 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16954 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16955 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16956 REFIID riid,
16957 _COM_Outptr_ void **ppvObject);
16958
16959 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16960 ULONG ( STDMETHODCALLTYPE *AddRef )(
16961 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16962
16963 DECLSPEC_XFGVIRT(IUnknown, Release)
16964 ULONG ( STDMETHODCALLTYPE *Release )(
16965 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16966
16967 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16968 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16969 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16970 D3D12_DRED_ENABLEMENT Enablement);
16971
16972 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16973 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16974 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16975 D3D12_DRED_ENABLEMENT Enablement);
16976
16977 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16978 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16979 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16980 D3D12_DRED_ENABLEMENT Enablement);
16981
16982 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
16983 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
16984 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16985 D3D12_DRED_ENABLEMENT Enablement);
16986
16987 END_INTERFACE
16988 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
16989
16990 interface ID3D12DeviceRemovedExtendedDataSettings1
16991 {
16992 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
16993 };
16994
16995
16996
16997#ifdef COBJMACROS
16998
16999
17000#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
17001 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17002
17003#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
17004 ( (This)->lpVtbl -> AddRef(This) )
17005
17006#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
17007 ( (This)->lpVtbl -> Release(This) )
17008
17009
17010#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
17011 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17012
17013#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
17014 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17015
17016#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
17017 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17018
17019
17020#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
17021 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17022
17023#endif /* COBJMACROS */
17024
17025
17026#endif /* C style interface */
17027
17028
17029
17030
17031#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
17032
17033
17034#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17035#define __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17036
17037/* interface ID3D12DeviceRemovedExtendedDataSettings2 */
17038/* [unique][local][object][uuid] */
17039
17040
17041EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings2;
17042
17043#if defined(__cplusplus) && !defined(CINTERFACE)
17044
17045 MIDL_INTERFACE("61552388-01ab-4008-a436-83db189566ea")
17046 ID3D12DeviceRemovedExtendedDataSettings2 : public ID3D12DeviceRemovedExtendedDataSettings1
17047 {
17048 public:
17049 virtual void STDMETHODCALLTYPE UseMarkersOnlyAutoBreadcrumbs(
17050 BOOL MarkersOnly) = 0;
17051
17052 };
17053
17054
17055#else /* C style interface */
17056
17057 typedef struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl
17058 {
17059 BEGIN_INTERFACE
17060
17061 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17062 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17063 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17064 REFIID riid,
17065 _COM_Outptr_ void **ppvObject);
17066
17067 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17068 ULONG ( STDMETHODCALLTYPE *AddRef )(
17069 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17070
17071 DECLSPEC_XFGVIRT(IUnknown, Release)
17072 ULONG ( STDMETHODCALLTYPE *Release )(
17073 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17074
17075 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
17076 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
17077 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17078 D3D12_DRED_ENABLEMENT Enablement);
17079
17080 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
17081 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
17082 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17083 D3D12_DRED_ENABLEMENT Enablement);
17084
17085 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
17086 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
17087 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17088 D3D12_DRED_ENABLEMENT Enablement);
17089
17090 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
17091 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
17092 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17093 D3D12_DRED_ENABLEMENT Enablement);
17094
17095 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings2, UseMarkersOnlyAutoBreadcrumbs)
17096 void ( STDMETHODCALLTYPE *UseMarkersOnlyAutoBreadcrumbs )(
17097 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17098 BOOL MarkersOnly);
17099
17100 END_INTERFACE
17101 } ID3D12DeviceRemovedExtendedDataSettings2Vtbl;
17102
17103 interface ID3D12DeviceRemovedExtendedDataSettings2
17104 {
17105 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl *lpVtbl;
17106 };
17107
17108
17109
17110#ifdef COBJMACROS
17111
17112
17113#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject) \
17114 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17115
17116#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This) \
17117 ( (This)->lpVtbl -> AddRef(This) )
17118
17119#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This) \
17120 ( (This)->lpVtbl -> Release(This) )
17121
17122
17123#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement) \
17124 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17125
17126#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement) \
17127 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17128
17129#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement) \
17130 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17131
17132
17133#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement) \
17134 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17135
17136
17137#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) \
17138 ( (This)->lpVtbl -> UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) )
17139
17140#endif /* COBJMACROS */
17141
17142
17143#endif /* C style interface */
17144
17145
17146
17147
17148#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__ */
17149
17150
17151#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17152#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17153
17154/* interface ID3D12DeviceRemovedExtendedData */
17155/* [unique][local][object][uuid] */
17156
17157
17158EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
17159
17160#if defined(__cplusplus) && !defined(CINTERFACE)
17161
17162 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
17163 ID3D12DeviceRemovedExtendedData : public IUnknown
17164 {
17165 public:
17166 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
17167 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
17168
17169 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
17170 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
17171
17172 };
17173
17174
17175#else /* C style interface */
17176
17177 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
17178 {
17179 BEGIN_INTERFACE
17180
17181 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17182 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17183 ID3D12DeviceRemovedExtendedData * This,
17184 REFIID riid,
17185 _COM_Outptr_ void **ppvObject);
17186
17187 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17188 ULONG ( STDMETHODCALLTYPE *AddRef )(
17189 ID3D12DeviceRemovedExtendedData * This);
17190
17191 DECLSPEC_XFGVIRT(IUnknown, Release)
17192 ULONG ( STDMETHODCALLTYPE *Release )(
17193 ID3D12DeviceRemovedExtendedData * This);
17194
17195 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17196 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17197 ID3D12DeviceRemovedExtendedData * This,
17198 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17199
17200 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17201 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17202 ID3D12DeviceRemovedExtendedData * This,
17203 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17204
17205 END_INTERFACE
17206 } ID3D12DeviceRemovedExtendedDataVtbl;
17207
17208 interface ID3D12DeviceRemovedExtendedData
17209 {
17210 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
17211 };
17212
17213
17214
17215#ifdef COBJMACROS
17216
17217
17218#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
17219 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17220
17221#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
17222 ( (This)->lpVtbl -> AddRef(This) )
17223
17224#define ID3D12DeviceRemovedExtendedData_Release(This) \
17225 ( (This)->lpVtbl -> Release(This) )
17226
17227
17228#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
17229 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17230
17231#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
17232 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17233
17234#endif /* COBJMACROS */
17235
17236
17237#endif /* C style interface */
17238
17239
17240
17241
17242#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
17243
17244
17245#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17246#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17247
17248/* interface ID3D12DeviceRemovedExtendedData1 */
17249/* [unique][local][object][uuid] */
17250
17251
17252EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
17253
17254#if defined(__cplusplus) && !defined(CINTERFACE)
17255
17256 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
17257 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
17258 {
17259 public:
17260 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
17261 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
17262
17263 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
17264 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
17265
17266 };
17267
17268
17269#else /* C style interface */
17270
17271 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
17272 {
17273 BEGIN_INTERFACE
17274
17275 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17276 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17277 ID3D12DeviceRemovedExtendedData1 * This,
17278 REFIID riid,
17279 _COM_Outptr_ void **ppvObject);
17280
17281 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17282 ULONG ( STDMETHODCALLTYPE *AddRef )(
17283 ID3D12DeviceRemovedExtendedData1 * This);
17284
17285 DECLSPEC_XFGVIRT(IUnknown, Release)
17286 ULONG ( STDMETHODCALLTYPE *Release )(
17287 ID3D12DeviceRemovedExtendedData1 * This);
17288
17289 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17290 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17291 ID3D12DeviceRemovedExtendedData1 * This,
17292 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17293
17294 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17295 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17296 ID3D12DeviceRemovedExtendedData1 * This,
17297 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17298
17299 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17300 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17301 ID3D12DeviceRemovedExtendedData1 * This,
17302 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17303
17304 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17305 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17306 ID3D12DeviceRemovedExtendedData1 * This,
17307 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17308
17309 END_INTERFACE
17310 } ID3D12DeviceRemovedExtendedData1Vtbl;
17311
17312 interface ID3D12DeviceRemovedExtendedData1
17313 {
17314 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
17315 };
17316
17317
17318
17319#ifdef COBJMACROS
17320
17321
17322#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
17323 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17324
17325#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
17326 ( (This)->lpVtbl -> AddRef(This) )
17327
17328#define ID3D12DeviceRemovedExtendedData1_Release(This) \
17329 ( (This)->lpVtbl -> Release(This) )
17330
17331
17332#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
17333 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17334
17335#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
17336 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17337
17338
17339#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
17340 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17341
17342#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
17343 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17344
17345#endif /* COBJMACROS */
17346
17347
17348#endif /* C style interface */
17349
17350
17351
17352
17353#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
17354
17355
17356#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17357#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17358
17359/* interface ID3D12DeviceRemovedExtendedData2 */
17360/* [unique][local][object][uuid] */
17361
17362
17363EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
17364
17365#if defined(__cplusplus) && !defined(CINTERFACE)
17366
17367 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
17368 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
17369 {
17370 public:
17371 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
17372 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
17373
17374 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
17375
17376 };
17377
17378
17379#else /* C style interface */
17380
17381 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
17382 {
17383 BEGIN_INTERFACE
17384
17385 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17386 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17387 ID3D12DeviceRemovedExtendedData2 * This,
17388 REFIID riid,
17389 _COM_Outptr_ void **ppvObject);
17390
17391 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17392 ULONG ( STDMETHODCALLTYPE *AddRef )(
17393 ID3D12DeviceRemovedExtendedData2 * This);
17394
17395 DECLSPEC_XFGVIRT(IUnknown, Release)
17396 ULONG ( STDMETHODCALLTYPE *Release )(
17397 ID3D12DeviceRemovedExtendedData2 * This);
17398
17399 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17400 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17401 ID3D12DeviceRemovedExtendedData2 * This,
17402 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17403
17404 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17405 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17406 ID3D12DeviceRemovedExtendedData2 * This,
17407 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17408
17409 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17410 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17411 ID3D12DeviceRemovedExtendedData2 * This,
17412 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17413
17414 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17415 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17416 ID3D12DeviceRemovedExtendedData2 * This,
17417 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17418
17419 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
17420 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
17421 ID3D12DeviceRemovedExtendedData2 * This,
17422 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
17423
17424 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
17425 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
17426 ID3D12DeviceRemovedExtendedData2 * This);
17427
17428 END_INTERFACE
17429 } ID3D12DeviceRemovedExtendedData2Vtbl;
17430
17431 interface ID3D12DeviceRemovedExtendedData2
17432 {
17433 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
17434 };
17435
17436
17437
17438#ifdef COBJMACROS
17439
17440
17441#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
17442 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17443
17444#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
17445 ( (This)->lpVtbl -> AddRef(This) )
17446
17447#define ID3D12DeviceRemovedExtendedData2_Release(This) \
17448 ( (This)->lpVtbl -> Release(This) )
17449
17450
17451#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
17452 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17453
17454#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
17455 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17456
17457
17458#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
17459 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17460
17461#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
17462 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17463
17464
17465#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
17466 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
17467
17468#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
17469 ( (This)->lpVtbl -> GetDeviceState(This) )
17470
17471#endif /* COBJMACROS */
17472
17473
17474#endif /* C style interface */
17475
17476
17477
17478
17479#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
17480
17481
17482/* interface __MIDL_itf_d3d12_0000_0046 */
17483/* [local] */
17484
17485typedef
17486enum D3D12_BACKGROUND_PROCESSING_MODE
17487 {
17488 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
17489 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
17490 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
17491 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
17492 } D3D12_BACKGROUND_PROCESSING_MODE;
17493
17494typedef
17495enum D3D12_MEASUREMENTS_ACTION
17496 {
17497 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
17498 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
17499 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
17500 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
17501 } D3D12_MEASUREMENTS_ACTION;
17502
17503
17504
17505extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
17506extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
17507
17508#ifndef __ID3D12Device6_INTERFACE_DEFINED__
17509#define __ID3D12Device6_INTERFACE_DEFINED__
17510
17511/* interface ID3D12Device6 */
17512/* [unique][local][object][uuid] */
17513
17514
17515EXTERN_C const IID IID_ID3D12Device6;
17516
17517#if defined(__cplusplus) && !defined(CINTERFACE)
17518
17519 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
17520 ID3D12Device6 : public ID3D12Device5
17521 {
17522 public:
17523 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
17524 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17525 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17526 _In_opt_ HANDLE hEventToSignalUponCompletion,
17527 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
17528
17529 };
17530
17531
17532#else /* C style interface */
17533
17534 typedef struct ID3D12Device6Vtbl
17535 {
17536 BEGIN_INTERFACE
17537
17538 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17539 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17540 ID3D12Device6 * This,
17541 REFIID riid,
17542 _COM_Outptr_ void **ppvObject);
17543
17544 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17545 ULONG ( STDMETHODCALLTYPE *AddRef )(
17546 ID3D12Device6 * This);
17547
17548 DECLSPEC_XFGVIRT(IUnknown, Release)
17549 ULONG ( STDMETHODCALLTYPE *Release )(
17550 ID3D12Device6 * This);
17551
17552 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17553 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17554 ID3D12Device6 * This,
17555 _In_ REFGUID guid,
17556 _Inout_ UINT *pDataSize,
17557 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17558
17559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17560 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17561 ID3D12Device6 * This,
17562 _In_ REFGUID guid,
17563 _In_ UINT DataSize,
17564 _In_reads_bytes_opt_( DataSize ) const void *pData);
17565
17566 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17567 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17568 ID3D12Device6 * This,
17569 _In_ REFGUID guid,
17570 _In_opt_ const IUnknown *pData);
17571
17572 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17573 HRESULT ( STDMETHODCALLTYPE *SetName )(
17574 ID3D12Device6 * This,
17575 _In_z_ LPCWSTR Name);
17576
17577 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
17578 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
17579 ID3D12Device6 * This);
17580
17581 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
17582 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
17583 ID3D12Device6 * This,
17584 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
17585 REFIID riid,
17586 _COM_Outptr_ void **ppCommandQueue);
17587
17588 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
17589 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
17590 ID3D12Device6 * This,
17591 _In_ D3D12_COMMAND_LIST_TYPE type,
17592 REFIID riid,
17593 _COM_Outptr_ void **ppCommandAllocator);
17594
17595 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
17596 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
17597 ID3D12Device6 * This,
17598 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
17599 REFIID riid,
17600 _COM_Outptr_ void **ppPipelineState);
17601
17602 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
17603 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
17604 ID3D12Device6 * This,
17605 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
17606 REFIID riid,
17607 _COM_Outptr_ void **ppPipelineState);
17608
17609 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
17610 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
17611 ID3D12Device6 * This,
17612 _In_ UINT nodeMask,
17613 _In_ D3D12_COMMAND_LIST_TYPE type,
17614 _In_ ID3D12CommandAllocator *pCommandAllocator,
17615 _In_opt_ ID3D12PipelineState *pInitialState,
17616 REFIID riid,
17617 _COM_Outptr_ void **ppCommandList);
17618
17619 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
17620 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
17621 ID3D12Device6 * This,
17622 D3D12_FEATURE Feature,
17623 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
17624 UINT FeatureSupportDataSize);
17625
17626 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
17627 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
17628 ID3D12Device6 * This,
17629 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
17630 REFIID riid,
17631 _COM_Outptr_ void **ppvHeap);
17632
17633 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
17634 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
17635 ID3D12Device6 * This,
17636 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
17637
17638 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
17639 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
17640 ID3D12Device6 * This,
17641 _In_ UINT nodeMask,
17642 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
17643 _In_ SIZE_T blobLengthInBytes,
17644 REFIID riid,
17645 _COM_Outptr_ void **ppvRootSignature);
17646
17647 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
17648 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
17649 ID3D12Device6 * This,
17650 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
17651 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17652
17653 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
17654 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
17655 ID3D12Device6 * This,
17656 _In_opt_ ID3D12Resource *pResource,
17657 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
17658 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17659
17660 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
17661 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
17662 ID3D12Device6 * This,
17663 _In_opt_ ID3D12Resource *pResource,
17664 _In_opt_ ID3D12Resource *pCounterResource,
17665 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
17666 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17667
17668 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
17669 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
17670 ID3D12Device6 * This,
17671 _In_opt_ ID3D12Resource *pResource,
17672 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
17673 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17674
17675 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
17676 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
17677 ID3D12Device6 * This,
17678 _In_opt_ ID3D12Resource *pResource,
17679 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
17680 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17681
17682 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
17683 void ( STDMETHODCALLTYPE *CreateSampler )(
17684 ID3D12Device6 * This,
17685 _In_ const D3D12_SAMPLER_DESC *pDesc,
17686 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17687
17688 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
17689 void ( STDMETHODCALLTYPE *CopyDescriptors )(
17690 ID3D12Device6 * This,
17691 _In_ UINT NumDestDescriptorRanges,
17692 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
17693 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
17694 _In_ UINT NumSrcDescriptorRanges,
17695 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
17696 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
17697 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17698
17699 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
17700 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
17701 ID3D12Device6 * This,
17702 _In_ UINT NumDescriptors,
17703 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
17704 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
17705 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17706
17707 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
17708#if !defined(_WIN32)
17709 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17710 ID3D12Device6 * This,
17711 _In_ UINT visibleMask,
17712 _In_ UINT numResourceDescs,
17713 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17714
17715#else
17716 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17717 ID3D12Device6 * This,
17718 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17719 _In_ UINT visibleMask,
17720 _In_ UINT numResourceDescs,
17721 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17722
17723#endif
17724
17725 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
17726#if !defined(_WIN32)
17727 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17728 ID3D12Device6 * This,
17729 _In_ UINT nodeMask,
17730 D3D12_HEAP_TYPE heapType);
17731
17732#else
17733 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17734 ID3D12Device6 * This,
17735 D3D12_HEAP_PROPERTIES * RetVal,
17736 _In_ UINT nodeMask,
17737 D3D12_HEAP_TYPE heapType);
17738
17739#endif
17740
17741 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
17742 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
17743 ID3D12Device6 * This,
17744 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17745 D3D12_HEAP_FLAGS HeapFlags,
17746 _In_ const D3D12_RESOURCE_DESC *pDesc,
17747 D3D12_RESOURCE_STATES InitialResourceState,
17748 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17749 REFIID riidResource,
17750 _COM_Outptr_opt_ void **ppvResource);
17751
17752 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
17753 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
17754 ID3D12Device6 * This,
17755 _In_ const D3D12_HEAP_DESC *pDesc,
17756 REFIID riid,
17757 _COM_Outptr_opt_ void **ppvHeap);
17758
17759 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
17760 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
17761 ID3D12Device6 * This,
17762 _In_ ID3D12Heap *pHeap,
17763 UINT64 HeapOffset,
17764 _In_ const D3D12_RESOURCE_DESC *pDesc,
17765 D3D12_RESOURCE_STATES InitialState,
17766 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17767 REFIID riid,
17768 _COM_Outptr_opt_ void **ppvResource);
17769
17770 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
17771 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
17772 ID3D12Device6 * This,
17773 _In_ const D3D12_RESOURCE_DESC *pDesc,
17774 D3D12_RESOURCE_STATES InitialState,
17775 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17776 REFIID riid,
17777 _COM_Outptr_opt_ void **ppvResource);
17778
17779 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
17780 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
17781 ID3D12Device6 * This,
17782 _In_ ID3D12DeviceChild *pObject,
17783 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
17784 DWORD Access,
17785 _In_opt_ LPCWSTR Name,
17786 _Out_ HANDLE *pHandle);
17787
17788 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
17789 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
17790 ID3D12Device6 * This,
17791 _In_ HANDLE NTHandle,
17792 REFIID riid,
17793 _COM_Outptr_opt_ void **ppvObj);
17794
17795 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
17796 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
17797 ID3D12Device6 * This,
17798 _In_ LPCWSTR Name,
17799 DWORD Access,
17800 /* [annotation][out] */
17801 _Out_ HANDLE *pNTHandle);
17802
17803 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
17804 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
17805 ID3D12Device6 * This,
17806 UINT NumObjects,
17807 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17808
17809 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
17810 HRESULT ( STDMETHODCALLTYPE *Evict )(
17811 ID3D12Device6 * This,
17812 UINT NumObjects,
17813 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17814
17815 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
17816 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
17817 ID3D12Device6 * This,
17818 UINT64 InitialValue,
17819 D3D12_FENCE_FLAGS Flags,
17820 REFIID riid,
17821 _COM_Outptr_ void **ppFence);
17822
17823 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
17824 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
17825 ID3D12Device6 * This);
17826
17827 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
17828 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
17829 ID3D12Device6 * This,
17830 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
17831 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17832 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17833 UINT64 BaseOffset,
17834 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17835 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17836 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17837 _Out_opt_ UINT64 *pTotalBytes);
17838
17839 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
17840 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
17841 ID3D12Device6 * This,
17842 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
17843 REFIID riid,
17844 _COM_Outptr_opt_ void **ppvHeap);
17845
17846 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
17847 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
17848 ID3D12Device6 * This,
17849 BOOL Enable);
17850
17851 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
17852 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
17853 ID3D12Device6 * This,
17854 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
17855 _In_opt_ ID3D12RootSignature *pRootSignature,
17856 REFIID riid,
17857 _COM_Outptr_opt_ void **ppvCommandSignature);
17858
17859 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
17860 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17861 ID3D12Device6 * This,
17862 _In_ ID3D12Resource *pTiledResource,
17863 _Out_opt_ UINT *pNumTilesForEntireResource,
17864 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17865 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17866 _Inout_opt_ UINT *pNumSubresourceTilings,
17867 _In_ UINT FirstSubresourceTilingToGet,
17868 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17869
17870 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17871#if !defined(_WIN32)
17872 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
17873 ID3D12Device6 * This);
17874
17875#else
17876 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17877 ID3D12Device6 * This,
17878 LUID * RetVal);
17879
17880#endif
17881
17882 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17883 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17884 ID3D12Device6 * This,
17885 _In_reads_(BlobLength) const void *pLibraryBlob,
17886 SIZE_T BlobLength,
17887 REFIID riid,
17888 _COM_Outptr_ void **ppPipelineLibrary);
17889
17890 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17891 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17892 ID3D12Device6 * This,
17893 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17894 _In_reads_(NumFences) const UINT64 *pFenceValues,
17895 UINT NumFences,
17896 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17897 HANDLE hEvent);
17898
17899 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17900 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17901 ID3D12Device6 * This,
17902 UINT NumObjects,
17903 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17904 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17905
17906 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17907 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17908 ID3D12Device6 * This,
17909 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17910 REFIID riid,
17911 _COM_Outptr_ void **ppPipelineState);
17912
17913 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17914 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17915 ID3D12Device6 * This,
17916 _In_ const void *pAddress,
17917 REFIID riid,
17918 _COM_Outptr_ void **ppvHeap);
17919
17920 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17921 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17922 ID3D12Device6 * This,
17923 _In_ HANDLE hFileMapping,
17924 REFIID riid,
17925 _COM_Outptr_ void **ppvHeap);
17926
17927 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17928 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17929 ID3D12Device6 * This,
17930 D3D12_RESIDENCY_FLAGS Flags,
17931 UINT NumObjects,
17932 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17933 _In_ ID3D12Fence *pFenceToSignal,
17934 UINT64 FenceValueToSignal);
17935
17936 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17937 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17938 ID3D12Device6 * This,
17939 _In_ UINT nodeMask,
17940 _In_ D3D12_COMMAND_LIST_TYPE type,
17941 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17942 REFIID riid,
17943 _COM_Outptr_ void **ppCommandList);
17944
17945 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17946 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17947 ID3D12Device6 * This,
17948 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17949 _In_ REFIID riid,
17950 _COM_Outptr_ void **ppSession);
17951
17952 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17953 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17954 ID3D12Device6 * This,
17955 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17956 D3D12_HEAP_FLAGS HeapFlags,
17957 _In_ const D3D12_RESOURCE_DESC *pDesc,
17958 D3D12_RESOURCE_STATES InitialResourceState,
17959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17961 REFIID riidResource,
17962 _COM_Outptr_opt_ void **ppvResource);
17963
17964 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17965 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17966 ID3D12Device6 * This,
17967 _In_ const D3D12_HEAP_DESC *pDesc,
17968 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17969 REFIID riid,
17970 _COM_Outptr_opt_ void **ppvHeap);
17971
17972 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17973 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17974 ID3D12Device6 * This,
17975 _In_ const D3D12_RESOURCE_DESC *pDesc,
17976 D3D12_RESOURCE_STATES InitialState,
17977 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17978 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17979 REFIID riid,
17980 _COM_Outptr_opt_ void **ppvResource);
17981
17982 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17983#if !defined(_WIN32)
17984 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17985 ID3D12Device6 * This,
17986 UINT visibleMask,
17987 UINT numResourceDescs,
17988 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17989 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17990
17991#else
17992 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17993 ID3D12Device6 * This,
17994 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17995 UINT visibleMask,
17996 UINT numResourceDescs,
17997 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17998 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17999
18000#endif
18001
18002 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
18003 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
18004 ID3D12Device6 * This,
18005 _In_ ID3D12LifetimeOwner *pOwner,
18006 REFIID riid,
18007 _COM_Outptr_ void **ppvTracker);
18008
18009 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
18010 void ( STDMETHODCALLTYPE *RemoveDevice )(
18011 ID3D12Device6 * This);
18012
18013 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
18014 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
18015 ID3D12Device6 * This,
18016 _Inout_ UINT *pNumMetaCommands,
18017 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
18018
18019 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
18020 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
18021 ID3D12Device6 * This,
18022 _In_ REFGUID CommandId,
18023 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18024 _Out_opt_ UINT *pTotalStructureSizeInBytes,
18025 _Inout_ UINT *pParameterCount,
18026 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
18027
18028 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
18029 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
18030 ID3D12Device6 * This,
18031 _In_ REFGUID CommandId,
18032 _In_ UINT NodeMask,
18033 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
18034 _In_ SIZE_T CreationParametersDataSizeInBytes,
18035 REFIID riid,
18036 _COM_Outptr_ void **ppMetaCommand);
18037
18038 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
18039 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
18040 ID3D12Device6 * This,
18041 const D3D12_STATE_OBJECT_DESC *pDesc,
18042 REFIID riid,
18043 _COM_Outptr_ void **ppStateObject);
18044
18045 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
18046 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
18047 ID3D12Device6 * This,
18048 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
18049 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
18050
18051 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
18052 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
18053 ID3D12Device6 * This,
18054 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
18055 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
18056
18057 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
18058 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
18059 ID3D12Device6 * This,
18060 D3D12_BACKGROUND_PROCESSING_MODE Mode,
18061 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
18062 _In_opt_ HANDLE hEventToSignalUponCompletion,
18063 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
18064
18065 END_INTERFACE
18066 } ID3D12Device6Vtbl;
18067
18068 interface ID3D12Device6
18069 {
18070 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
18071 };
18072
18073
18074
18075#ifdef COBJMACROS
18076
18077
18078#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
18079 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18080
18081#define ID3D12Device6_AddRef(This) \
18082 ( (This)->lpVtbl -> AddRef(This) )
18083
18084#define ID3D12Device6_Release(This) \
18085 ( (This)->lpVtbl -> Release(This) )
18086
18087
18088#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
18089 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18090
18091#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
18092 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18093
18094#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
18095 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18096
18097#define ID3D12Device6_SetName(This,Name) \
18098 ( (This)->lpVtbl -> SetName(This,Name) )
18099
18100
18101#define ID3D12Device6_GetNodeCount(This) \
18102 ( (This)->lpVtbl -> GetNodeCount(This) )
18103
18104#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
18105 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
18106
18107#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
18108 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
18109
18110#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
18111 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
18112
18113#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
18114 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
18115
18116#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
18117 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
18118
18119#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
18120 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
18121
18122#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
18123 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
18124
18125#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
18126 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
18127
18128#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
18129 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
18130
18131#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
18132 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
18133
18134#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
18135 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
18136
18137#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
18138 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
18139
18140#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
18141 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
18142
18143#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
18144 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
18145
18146#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
18147 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
18148
18149#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
18150 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
18151
18152#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
18153 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
18154#if !defined(_WIN32)
18155
18156#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
18157 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
18158#else
18159#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
18160 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
18161#endif
18162#if !defined(_WIN32)
18163
18164#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \
18165 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
18166#else
18167#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
18168 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
18169#endif
18170
18171#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
18172 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
18173
18174#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
18175 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
18176
18177#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18178 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18179
18180#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18181 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18182
18183#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
18184 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
18185
18186#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
18187 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
18188
18189#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
18190 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
18191
18192#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
18193 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
18194
18195#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
18196 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
18197
18198#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
18199 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
18200
18201#define ID3D12Device6_GetDeviceRemovedReason(This) \
18202 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
18203
18204#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
18205 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
18206
18207#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
18208 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
18209
18210#define ID3D12Device6_SetStablePowerState(This,Enable) \
18211 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
18212
18213#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
18214 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
18215
18216#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
18217 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
18218#if !defined(_WIN32)
18219
18220#define ID3D12Device6_GetAdapterLuid(This) \
18221 ( (This)->lpVtbl -> GetAdapterLuid(This) )
18222#else
18223#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
18224 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
18225#endif
18226
18227
18228#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
18229 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
18230
18231#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
18232 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
18233
18234#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
18235 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
18236
18237
18238#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
18239 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
18240
18241
18242#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
18243 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
18244
18245#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
18246 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
18247
18248#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
18249 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
18250
18251
18252#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
18253 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
18254
18255#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
18256 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
18257
18258#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
18259 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
18260
18261#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
18262 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
18263
18264#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
18265 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
18266#if !defined(_WIN32)
18267
18268#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18269 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18270#else
18271#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18272 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18273#endif
18274
18275
18276#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
18277 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
18278
18279#define ID3D12Device6_RemoveDevice(This) \
18280 ( (This)->lpVtbl -> RemoveDevice(This) )
18281
18282#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
18283 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
18284
18285#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
18286 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
18287
18288#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
18289 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
18290
18291#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
18292 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
18293
18294#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
18295 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
18296
18297#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
18298 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
18299
18300
18301#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
18302 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
18303
18304#endif /* COBJMACROS */
18305
18306
18307#endif /* C style interface */
18308
18309
18310
18311
18312#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
18313
18314
18315/* interface __MIDL_itf_d3d12_0000_0047 */
18316/* [local] */
18317
18318DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
18319typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
18320 {
18321 UINT NodeIndex;
18322 UINT Count;
18323 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
18324
18325typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
18326 {
18327 UINT NodeIndex;
18328 UINT Count;
18329 GUID *pTypes;
18330 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
18331
18332typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
18333 {
18334 UINT NodeMask;
18335 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
18336 GUID ProtectionType;
18337 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
18338
18339
18340
18341extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
18342extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
18343
18344#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18345#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18346
18347/* interface ID3D12ProtectedResourceSession1 */
18348/* [unique][local][object][uuid] */
18349
18350
18351EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
18352
18353#if defined(__cplusplus) && !defined(CINTERFACE)
18354
18355 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
18356 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
18357 {
18358 public:
18359#if defined(_MSC_VER) || !defined(_WIN32)
18360 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
18361#else
18362 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *STDMETHODCALLTYPE GetDesc1(
18363 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal) = 0;
18364#endif
18365
18366 };
18367
18368
18369#else /* C style interface */
18370
18371 typedef struct ID3D12ProtectedResourceSession1Vtbl
18372 {
18373 BEGIN_INTERFACE
18374
18375 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18376 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18377 ID3D12ProtectedResourceSession1 * This,
18378 REFIID riid,
18379 _COM_Outptr_ void **ppvObject);
18380
18381 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18382 ULONG ( STDMETHODCALLTYPE *AddRef )(
18383 ID3D12ProtectedResourceSession1 * This);
18384
18385 DECLSPEC_XFGVIRT(IUnknown, Release)
18386 ULONG ( STDMETHODCALLTYPE *Release )(
18387 ID3D12ProtectedResourceSession1 * This);
18388
18389 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18390 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18391 ID3D12ProtectedResourceSession1 * This,
18392 _In_ REFGUID guid,
18393 _Inout_ UINT *pDataSize,
18394 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18395
18396 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18397 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18398 ID3D12ProtectedResourceSession1 * This,
18399 _In_ REFGUID guid,
18400 _In_ UINT DataSize,
18401 _In_reads_bytes_opt_( DataSize ) const void *pData);
18402
18403 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18404 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18405 ID3D12ProtectedResourceSession1 * This,
18406 _In_ REFGUID guid,
18407 _In_opt_ const IUnknown *pData);
18408
18409 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18410 HRESULT ( STDMETHODCALLTYPE *SetName )(
18411 ID3D12ProtectedResourceSession1 * This,
18412 _In_z_ LPCWSTR Name);
18413
18414 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18415 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18416 ID3D12ProtectedResourceSession1 * This,
18417 REFIID riid,
18418 _COM_Outptr_opt_ void **ppvDevice);
18419
18420 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
18421 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
18422 ID3D12ProtectedResourceSession1 * This,
18423 REFIID riid,
18424 _COM_Outptr_opt_ void **ppFence);
18425
18426 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
18427 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
18428 ID3D12ProtectedResourceSession1 * This);
18429
18430 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
18431#if !defined(_WIN32)
18432 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
18433 ID3D12ProtectedResourceSession1 * This);
18434
18435#else
18436 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
18437 ID3D12ProtectedResourceSession1 * This,
18438 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
18439
18440#endif
18441
18442 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
18443#if !defined(_WIN32)
18444 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
18445 ID3D12ProtectedResourceSession1 * This);
18446
18447#else
18448 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
18449 ID3D12ProtectedResourceSession1 * This,
18450 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
18451
18452#endif
18453
18454 END_INTERFACE
18455 } ID3D12ProtectedResourceSession1Vtbl;
18456
18457 interface ID3D12ProtectedResourceSession1
18458 {
18459 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
18460 };
18461
18462
18463
18464#ifdef COBJMACROS
18465
18466
18467#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
18468 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18469
18470#define ID3D12ProtectedResourceSession1_AddRef(This) \
18471 ( (This)->lpVtbl -> AddRef(This) )
18472
18473#define ID3D12ProtectedResourceSession1_Release(This) \
18474 ( (This)->lpVtbl -> Release(This) )
18475
18476
18477#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
18478 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18479
18480#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
18481 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18482
18483#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
18484 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18485
18486#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
18487 ( (This)->lpVtbl -> SetName(This,Name) )
18488
18489
18490#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
18491 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18492
18493
18494#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
18495 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
18496
18497#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
18498 ( (This)->lpVtbl -> GetSessionStatus(This) )
18499
18500#if !defined(_WIN32)
18501
18502#define ID3D12ProtectedResourceSession1_GetDesc(This) \
18503 ( (This)->lpVtbl -> GetDesc(This) )
18504#else
18505#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
18506 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18507#endif
18508
18509#if !defined(_WIN32)
18510
18511#define ID3D12ProtectedResourceSession1_GetDesc1(This) \
18512 ( (This)->lpVtbl -> GetDesc1(This) )
18513#else
18514#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
18515 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
18516#endif
18517
18518#endif /* COBJMACROS */
18519
18520
18521#endif /* C style interface */
18522
18523
18524
18525
18526#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
18527
18528
18529#ifndef __ID3D12Device7_INTERFACE_DEFINED__
18530#define __ID3D12Device7_INTERFACE_DEFINED__
18531
18532/* interface ID3D12Device7 */
18533/* [unique][local][object][uuid] */
18534
18535
18536EXTERN_C const IID IID_ID3D12Device7;
18537
18538#if defined(__cplusplus) && !defined(CINTERFACE)
18539
18540 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
18541 ID3D12Device7 : public ID3D12Device6
18542 {
18543 public:
18544 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
18545 const D3D12_STATE_OBJECT_DESC *pAddition,
18546 ID3D12StateObject *pStateObjectToGrowFrom,
18547 REFIID riid,
18548 _COM_Outptr_ void **ppNewStateObject) = 0;
18549
18550 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
18551 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
18552 _In_ REFIID riid,
18553 _COM_Outptr_ void **ppSession) = 0;
18554
18555 };
18556
18557
18558#else /* C style interface */
18559
18560 typedef struct ID3D12Device7Vtbl
18561 {
18562 BEGIN_INTERFACE
18563
18564 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18565 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18566 ID3D12Device7 * This,
18567 REFIID riid,
18568 _COM_Outptr_ void **ppvObject);
18569
18570 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18571 ULONG ( STDMETHODCALLTYPE *AddRef )(
18572 ID3D12Device7 * This);
18573
18574 DECLSPEC_XFGVIRT(IUnknown, Release)
18575 ULONG ( STDMETHODCALLTYPE *Release )(
18576 ID3D12Device7 * This);
18577
18578 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18579 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18580 ID3D12Device7 * This,
18581 _In_ REFGUID guid,
18582 _Inout_ UINT *pDataSize,
18583 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18584
18585 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18586 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18587 ID3D12Device7 * This,
18588 _In_ REFGUID guid,
18589 _In_ UINT DataSize,
18590 _In_reads_bytes_opt_( DataSize ) const void *pData);
18591
18592 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18593 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18594 ID3D12Device7 * This,
18595 _In_ REFGUID guid,
18596 _In_opt_ const IUnknown *pData);
18597
18598 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18599 HRESULT ( STDMETHODCALLTYPE *SetName )(
18600 ID3D12Device7 * This,
18601 _In_z_ LPCWSTR Name);
18602
18603 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
18604 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
18605 ID3D12Device7 * This);
18606
18607 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
18608 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
18609 ID3D12Device7 * This,
18610 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
18611 REFIID riid,
18612 _COM_Outptr_ void **ppCommandQueue);
18613
18614 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
18615 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
18616 ID3D12Device7 * This,
18617 _In_ D3D12_COMMAND_LIST_TYPE type,
18618 REFIID riid,
18619 _COM_Outptr_ void **ppCommandAllocator);
18620
18621 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
18622 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
18623 ID3D12Device7 * This,
18624 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
18625 REFIID riid,
18626 _COM_Outptr_ void **ppPipelineState);
18627
18628 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
18629 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
18630 ID3D12Device7 * This,
18631 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
18632 REFIID riid,
18633 _COM_Outptr_ void **ppPipelineState);
18634
18635 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
18636 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
18637 ID3D12Device7 * This,
18638 _In_ UINT nodeMask,
18639 _In_ D3D12_COMMAND_LIST_TYPE type,
18640 _In_ ID3D12CommandAllocator *pCommandAllocator,
18641 _In_opt_ ID3D12PipelineState *pInitialState,
18642 REFIID riid,
18643 _COM_Outptr_ void **ppCommandList);
18644
18645 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
18646 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
18647 ID3D12Device7 * This,
18648 D3D12_FEATURE Feature,
18649 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
18650 UINT FeatureSupportDataSize);
18651
18652 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
18653 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
18654 ID3D12Device7 * This,
18655 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
18656 REFIID riid,
18657 _COM_Outptr_ void **ppvHeap);
18658
18659 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
18660 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
18661 ID3D12Device7 * This,
18662 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
18663
18664 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
18665 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
18666 ID3D12Device7 * This,
18667 _In_ UINT nodeMask,
18668 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
18669 _In_ SIZE_T blobLengthInBytes,
18670 REFIID riid,
18671 _COM_Outptr_ void **ppvRootSignature);
18672
18673 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
18674 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
18675 ID3D12Device7 * This,
18676 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
18677 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18678
18679 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
18680 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
18681 ID3D12Device7 * This,
18682 _In_opt_ ID3D12Resource *pResource,
18683 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
18684 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18685
18686 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
18687 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
18688 ID3D12Device7 * This,
18689 _In_opt_ ID3D12Resource *pResource,
18690 _In_opt_ ID3D12Resource *pCounterResource,
18691 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
18692 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18693
18694 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
18695 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
18696 ID3D12Device7 * This,
18697 _In_opt_ ID3D12Resource *pResource,
18698 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
18699 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18700
18701 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
18702 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
18703 ID3D12Device7 * This,
18704 _In_opt_ ID3D12Resource *pResource,
18705 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
18706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18707
18708 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
18709 void ( STDMETHODCALLTYPE *CreateSampler )(
18710 ID3D12Device7 * This,
18711 _In_ const D3D12_SAMPLER_DESC *pDesc,
18712 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18713
18714 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
18715 void ( STDMETHODCALLTYPE *CopyDescriptors )(
18716 ID3D12Device7 * This,
18717 _In_ UINT NumDestDescriptorRanges,
18718 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
18719 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
18720 _In_ UINT NumSrcDescriptorRanges,
18721 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
18722 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
18723 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18724
18725 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
18726 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
18727 ID3D12Device7 * This,
18728 _In_ UINT NumDescriptors,
18729 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
18730 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
18731 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18732
18733 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
18734#if !defined(_WIN32)
18735 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18736 ID3D12Device7 * This,
18737 _In_ UINT visibleMask,
18738 _In_ UINT numResourceDescs,
18739 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18740
18741#else
18742 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18743 ID3D12Device7 * This,
18744 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
18745 _In_ UINT visibleMask,
18746 _In_ UINT numResourceDescs,
18747 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18748
18749#endif
18750
18751 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
18752#if !defined(_WIN32)
18753 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18754 ID3D12Device7 * This,
18755 _In_ UINT nodeMask,
18756 D3D12_HEAP_TYPE heapType);
18757
18758#else
18759 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18760 ID3D12Device7 * This,
18761 D3D12_HEAP_PROPERTIES * RetVal,
18762 _In_ UINT nodeMask,
18763 D3D12_HEAP_TYPE heapType);
18764
18765#endif
18766
18767 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
18768 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
18769 ID3D12Device7 * This,
18770 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18771 D3D12_HEAP_FLAGS HeapFlags,
18772 _In_ const D3D12_RESOURCE_DESC *pDesc,
18773 D3D12_RESOURCE_STATES InitialResourceState,
18774 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18775 REFIID riidResource,
18776 _COM_Outptr_opt_ void **ppvResource);
18777
18778 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
18779 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
18780 ID3D12Device7 * This,
18781 _In_ const D3D12_HEAP_DESC *pDesc,
18782 REFIID riid,
18783 _COM_Outptr_opt_ void **ppvHeap);
18784
18785 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
18786 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
18787 ID3D12Device7 * This,
18788 _In_ ID3D12Heap *pHeap,
18789 UINT64 HeapOffset,
18790 _In_ const D3D12_RESOURCE_DESC *pDesc,
18791 D3D12_RESOURCE_STATES InitialState,
18792 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18793 REFIID riid,
18794 _COM_Outptr_opt_ void **ppvResource);
18795
18796 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
18797 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
18798 ID3D12Device7 * This,
18799 _In_ const D3D12_RESOURCE_DESC *pDesc,
18800 D3D12_RESOURCE_STATES InitialState,
18801 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18802 REFIID riid,
18803 _COM_Outptr_opt_ void **ppvResource);
18804
18805 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
18806 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
18807 ID3D12Device7 * This,
18808 _In_ ID3D12DeviceChild *pObject,
18809 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
18810 DWORD Access,
18811 _In_opt_ LPCWSTR Name,
18812 _Out_ HANDLE *pHandle);
18813
18814 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
18815 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
18816 ID3D12Device7 * This,
18817 _In_ HANDLE NTHandle,
18818 REFIID riid,
18819 _COM_Outptr_opt_ void **ppvObj);
18820
18821 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
18822 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
18823 ID3D12Device7 * This,
18824 _In_ LPCWSTR Name,
18825 DWORD Access,
18826 /* [annotation][out] */
18827 _Out_ HANDLE *pNTHandle);
18828
18829 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
18830 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
18831 ID3D12Device7 * This,
18832 UINT NumObjects,
18833 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18834
18835 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
18836 HRESULT ( STDMETHODCALLTYPE *Evict )(
18837 ID3D12Device7 * This,
18838 UINT NumObjects,
18839 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18840
18841 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
18842 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
18843 ID3D12Device7 * This,
18844 UINT64 InitialValue,
18845 D3D12_FENCE_FLAGS Flags,
18846 REFIID riid,
18847 _COM_Outptr_ void **ppFence);
18848
18849 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
18850 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
18851 ID3D12Device7 * This);
18852
18853 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
18854 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
18855 ID3D12Device7 * This,
18856 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
18857 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
18858 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
18859 UINT64 BaseOffset,
18860 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
18861 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
18862 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
18863 _Out_opt_ UINT64 *pTotalBytes);
18864
18865 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
18866 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
18867 ID3D12Device7 * This,
18868 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
18869 REFIID riid,
18870 _COM_Outptr_opt_ void **ppvHeap);
18871
18872 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
18873 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
18874 ID3D12Device7 * This,
18875 BOOL Enable);
18876
18877 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
18878 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
18879 ID3D12Device7 * This,
18880 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
18881 _In_opt_ ID3D12RootSignature *pRootSignature,
18882 REFIID riid,
18883 _COM_Outptr_opt_ void **ppvCommandSignature);
18884
18885 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
18886 void ( STDMETHODCALLTYPE *GetResourceTiling )(
18887 ID3D12Device7 * This,
18888 _In_ ID3D12Resource *pTiledResource,
18889 _Out_opt_ UINT *pNumTilesForEntireResource,
18890 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
18891 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
18892 _Inout_opt_ UINT *pNumSubresourceTilings,
18893 _In_ UINT FirstSubresourceTilingToGet,
18894 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
18895
18896 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
18897#if !defined(_WIN32)
18898 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
18899 ID3D12Device7 * This);
18900
18901#else
18902 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
18903 ID3D12Device7 * This,
18904 LUID * RetVal);
18905
18906#endif
18907
18908 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
18909 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
18910 ID3D12Device7 * This,
18911 _In_reads_(BlobLength) const void *pLibraryBlob,
18912 SIZE_T BlobLength,
18913 REFIID riid,
18914 _COM_Outptr_ void **ppPipelineLibrary);
18915
18916 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
18917 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
18918 ID3D12Device7 * This,
18919 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
18920 _In_reads_(NumFences) const UINT64 *pFenceValues,
18921 UINT NumFences,
18922 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
18923 HANDLE hEvent);
18924
18925 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
18926 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
18927 ID3D12Device7 * This,
18928 UINT NumObjects,
18929 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18930 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
18931
18932 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
18933 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
18934 ID3D12Device7 * This,
18935 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
18936 REFIID riid,
18937 _COM_Outptr_ void **ppPipelineState);
18938
18939 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
18940 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
18941 ID3D12Device7 * This,
18942 _In_ const void *pAddress,
18943 REFIID riid,
18944 _COM_Outptr_ void **ppvHeap);
18945
18946 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
18947 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
18948 ID3D12Device7 * This,
18949 _In_ HANDLE hFileMapping,
18950 REFIID riid,
18951 _COM_Outptr_ void **ppvHeap);
18952
18953 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
18954 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
18955 ID3D12Device7 * This,
18956 D3D12_RESIDENCY_FLAGS Flags,
18957 UINT NumObjects,
18958 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18959 _In_ ID3D12Fence *pFenceToSignal,
18960 UINT64 FenceValueToSignal);
18961
18962 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
18963 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
18964 ID3D12Device7 * This,
18965 _In_ UINT nodeMask,
18966 _In_ D3D12_COMMAND_LIST_TYPE type,
18967 _In_ D3D12_COMMAND_LIST_FLAGS flags,
18968 REFIID riid,
18969 _COM_Outptr_ void **ppCommandList);
18970
18971 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
18972 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
18973 ID3D12Device7 * This,
18974 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
18975 _In_ REFIID riid,
18976 _COM_Outptr_ void **ppSession);
18977
18978 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
18979 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
18980 ID3D12Device7 * This,
18981 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18982 D3D12_HEAP_FLAGS HeapFlags,
18983 _In_ const D3D12_RESOURCE_DESC *pDesc,
18984 D3D12_RESOURCE_STATES InitialResourceState,
18985 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18986 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18987 REFIID riidResource,
18988 _COM_Outptr_opt_ void **ppvResource);
18989
18990 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
18991 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
18992 ID3D12Device7 * This,
18993 _In_ const D3D12_HEAP_DESC *pDesc,
18994 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18995 REFIID riid,
18996 _COM_Outptr_opt_ void **ppvHeap);
18997
18998 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
18999 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19000 ID3D12Device7 * This,
19001 _In_ const D3D12_RESOURCE_DESC *pDesc,
19002 D3D12_RESOURCE_STATES InitialState,
19003 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19004 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19005 REFIID riid,
19006 _COM_Outptr_opt_ void **ppvResource);
19007
19008 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19009#if !defined(_WIN32)
19010 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19011 ID3D12Device7 * This,
19012 UINT visibleMask,
19013 UINT numResourceDescs,
19014 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19015 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19016
19017#else
19018 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19019 ID3D12Device7 * This,
19020 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19021 UINT visibleMask,
19022 UINT numResourceDescs,
19023 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19024 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19025
19026#endif
19027
19028 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19029 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19030 ID3D12Device7 * This,
19031 _In_ ID3D12LifetimeOwner *pOwner,
19032 REFIID riid,
19033 _COM_Outptr_ void **ppvTracker);
19034
19035 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19036 void ( STDMETHODCALLTYPE *RemoveDevice )(
19037 ID3D12Device7 * This);
19038
19039 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19040 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19041 ID3D12Device7 * This,
19042 _Inout_ UINT *pNumMetaCommands,
19043 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19044
19045 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19046 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19047 ID3D12Device7 * This,
19048 _In_ REFGUID CommandId,
19049 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19050 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19051 _Inout_ UINT *pParameterCount,
19052 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19053
19054 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19055 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19056 ID3D12Device7 * This,
19057 _In_ REFGUID CommandId,
19058 _In_ UINT NodeMask,
19059 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19060 _In_ SIZE_T CreationParametersDataSizeInBytes,
19061 REFIID riid,
19062 _COM_Outptr_ void **ppMetaCommand);
19063
19064 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19065 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19066 ID3D12Device7 * This,
19067 const D3D12_STATE_OBJECT_DESC *pDesc,
19068 REFIID riid,
19069 _COM_Outptr_ void **ppStateObject);
19070
19071 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19072 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19073 ID3D12Device7 * This,
19074 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19075 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19076
19077 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19078 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19079 ID3D12Device7 * This,
19080 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19081 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19082
19083 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19084 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19085 ID3D12Device7 * This,
19086 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19087 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19088 _In_opt_ HANDLE hEventToSignalUponCompletion,
19089 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19090
19091 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19092 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19093 ID3D12Device7 * This,
19094 const D3D12_STATE_OBJECT_DESC *pAddition,
19095 ID3D12StateObject *pStateObjectToGrowFrom,
19096 REFIID riid,
19097 _COM_Outptr_ void **ppNewStateObject);
19098
19099 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19100 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19101 ID3D12Device7 * This,
19102 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19103 _In_ REFIID riid,
19104 _COM_Outptr_ void **ppSession);
19105
19106 END_INTERFACE
19107 } ID3D12Device7Vtbl;
19108
19109 interface ID3D12Device7
19110 {
19111 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
19112 };
19113
19114
19115
19116#ifdef COBJMACROS
19117
19118
19119#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
19120 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19121
19122#define ID3D12Device7_AddRef(This) \
19123 ( (This)->lpVtbl -> AddRef(This) )
19124
19125#define ID3D12Device7_Release(This) \
19126 ( (This)->lpVtbl -> Release(This) )
19127
19128
19129#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
19130 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19131
19132#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
19133 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19134
19135#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
19136 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19137
19138#define ID3D12Device7_SetName(This,Name) \
19139 ( (This)->lpVtbl -> SetName(This,Name) )
19140
19141
19142#define ID3D12Device7_GetNodeCount(This) \
19143 ( (This)->lpVtbl -> GetNodeCount(This) )
19144
19145#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
19146 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
19147
19148#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
19149 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
19150
19151#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
19152 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
19153
19154#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
19155 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
19156
19157#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
19158 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
19159
19160#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
19161 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
19162
19163#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
19164 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
19165
19166#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
19167 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
19168
19169#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
19170 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
19171
19172#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
19173 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
19174
19175#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
19176 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
19177
19178#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
19179 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
19180
19181#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
19182 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
19183
19184#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
19185 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
19186
19187#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
19188 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
19189
19190#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
19191 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
19192
19193#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
19194 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
19195#if !defined(_WIN32)
19196
19197#define ID3D12Device7_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
19198 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
19199#else
19200#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
19201 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
19202#endif
19203#if !defined(_WIN32)
19204
19205#define ID3D12Device7_GetCustomHeapProperties(This,nodeMask,heapType) \
19206 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
19207#else
19208#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
19209 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
19210#endif
19211
19212#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
19213 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
19214
19215#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
19216 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
19217
19218#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19219 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19220
19221#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19222 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19223
19224#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
19225 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
19226
19227#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
19228 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
19229
19230#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
19231 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
19232
19233#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
19234 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
19235
19236#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
19237 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
19238
19239#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
19240 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
19241
19242#define ID3D12Device7_GetDeviceRemovedReason(This) \
19243 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
19244
19245#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
19246 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
19247
19248#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
19249 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
19250
19251#define ID3D12Device7_SetStablePowerState(This,Enable) \
19252 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
19253
19254#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
19255 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
19256
19257#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
19258 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
19259#if !defined(_WIN32)
19260
19261#define ID3D12Device7_GetAdapterLuid(This) \
19262 ( (This)->lpVtbl -> GetAdapterLuid(This) )
19263#else
19264#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
19265 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
19266#endif
19267
19268
19269#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
19270 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
19271
19272#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
19273 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
19274
19275#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
19276 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
19277
19278
19279#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
19280 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
19281
19282
19283#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
19284 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
19285
19286#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
19287 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
19288
19289#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
19290 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
19291
19292
19293#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
19294 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
19295
19296#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
19297 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
19298
19299#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
19300 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
19301
19302#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
19303 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
19304
19305#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
19306 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
19307#if !defined(_WIN32)
19308
19309#define ID3D12Device7_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19310 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19311#else
19312#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19313 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19314#endif
19315
19316
19317#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
19318 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
19319
19320#define ID3D12Device7_RemoveDevice(This) \
19321 ( (This)->lpVtbl -> RemoveDevice(This) )
19322
19323#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
19324 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
19325
19326#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
19327 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
19328
19329#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
19330 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
19331
19332#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
19333 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
19334
19335#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
19336 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
19337
19338#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
19339 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
19340
19341
19342#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
19343 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
19344
19345
19346#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
19347 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
19348
19349#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
19350 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
19351
19352#endif /* COBJMACROS */
19353
19354
19355#endif /* C style interface */
19356
19357
19358
19359
19360#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
19361
19362
19363#ifndef __ID3D12Device8_INTERFACE_DEFINED__
19364#define __ID3D12Device8_INTERFACE_DEFINED__
19365
19366/* interface ID3D12Device8 */
19367/* [unique][local][object][uuid] */
19368
19369
19370EXTERN_C const IID IID_ID3D12Device8;
19371
19372#if defined(__cplusplus) && !defined(CINTERFACE)
19373
19374 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
19375 ID3D12Device8 : public ID3D12Device7
19376 {
19377 public:
19378#if defined(_MSC_VER) || !defined(_WIN32)
19379 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
19380 UINT visibleMask,
19381 UINT numResourceDescs,
19382 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19383 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19384#else
19385 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo2(
19386 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19387 UINT visibleMask,
19388 UINT numResourceDescs,
19389 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19390 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19391#endif
19392
19393 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
19394 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19395 D3D12_HEAP_FLAGS HeapFlags,
19396 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19397 D3D12_RESOURCE_STATES InitialResourceState,
19398 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19399 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19400 REFIID riidResource,
19401 _COM_Outptr_opt_ void **ppvResource) = 0;
19402
19403 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
19404 _In_ ID3D12Heap *pHeap,
19405 UINT64 HeapOffset,
19406 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19407 D3D12_RESOURCE_STATES InitialState,
19408 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19409 REFIID riid,
19410 _COM_Outptr_opt_ void **ppvResource) = 0;
19411
19412 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
19413 _In_opt_ ID3D12Resource *pTargetedResource,
19414 _In_opt_ ID3D12Resource *pFeedbackResource,
19415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
19416
19417 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
19418 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
19419 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19420 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19421 UINT64 BaseOffset,
19422 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19423 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19424 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19425 _Out_opt_ UINT64 *pTotalBytes) = 0;
19426
19427 };
19428
19429
19430#else /* C style interface */
19431
19432 typedef struct ID3D12Device8Vtbl
19433 {
19434 BEGIN_INTERFACE
19435
19436 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19437 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19438 ID3D12Device8 * This,
19439 REFIID riid,
19440 _COM_Outptr_ void **ppvObject);
19441
19442 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19443 ULONG ( STDMETHODCALLTYPE *AddRef )(
19444 ID3D12Device8 * This);
19445
19446 DECLSPEC_XFGVIRT(IUnknown, Release)
19447 ULONG ( STDMETHODCALLTYPE *Release )(
19448 ID3D12Device8 * This);
19449
19450 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19451 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19452 ID3D12Device8 * This,
19453 _In_ REFGUID guid,
19454 _Inout_ UINT *pDataSize,
19455 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19456
19457 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19458 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19459 ID3D12Device8 * This,
19460 _In_ REFGUID guid,
19461 _In_ UINT DataSize,
19462 _In_reads_bytes_opt_( DataSize ) const void *pData);
19463
19464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19465 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19466 ID3D12Device8 * This,
19467 _In_ REFGUID guid,
19468 _In_opt_ const IUnknown *pData);
19469
19470 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19471 HRESULT ( STDMETHODCALLTYPE *SetName )(
19472 ID3D12Device8 * This,
19473 _In_z_ LPCWSTR Name);
19474
19475 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
19476 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
19477 ID3D12Device8 * This);
19478
19479 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
19480 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
19481 ID3D12Device8 * This,
19482 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
19483 REFIID riid,
19484 _COM_Outptr_ void **ppCommandQueue);
19485
19486 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
19487 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
19488 ID3D12Device8 * This,
19489 _In_ D3D12_COMMAND_LIST_TYPE type,
19490 REFIID riid,
19491 _COM_Outptr_ void **ppCommandAllocator);
19492
19493 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
19494 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
19495 ID3D12Device8 * This,
19496 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
19497 REFIID riid,
19498 _COM_Outptr_ void **ppPipelineState);
19499
19500 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
19501 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
19502 ID3D12Device8 * This,
19503 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
19504 REFIID riid,
19505 _COM_Outptr_ void **ppPipelineState);
19506
19507 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
19508 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
19509 ID3D12Device8 * This,
19510 _In_ UINT nodeMask,
19511 _In_ D3D12_COMMAND_LIST_TYPE type,
19512 _In_ ID3D12CommandAllocator *pCommandAllocator,
19513 _In_opt_ ID3D12PipelineState *pInitialState,
19514 REFIID riid,
19515 _COM_Outptr_ void **ppCommandList);
19516
19517 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
19518 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
19519 ID3D12Device8 * This,
19520 D3D12_FEATURE Feature,
19521 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
19522 UINT FeatureSupportDataSize);
19523
19524 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
19525 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
19526 ID3D12Device8 * This,
19527 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
19528 REFIID riid,
19529 _COM_Outptr_ void **ppvHeap);
19530
19531 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
19532 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
19533 ID3D12Device8 * This,
19534 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
19535
19536 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
19537 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
19538 ID3D12Device8 * This,
19539 _In_ UINT nodeMask,
19540 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
19541 _In_ SIZE_T blobLengthInBytes,
19542 REFIID riid,
19543 _COM_Outptr_ void **ppvRootSignature);
19544
19545 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
19546 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
19547 ID3D12Device8 * This,
19548 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
19549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19550
19551 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
19552 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
19553 ID3D12Device8 * This,
19554 _In_opt_ ID3D12Resource *pResource,
19555 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
19556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19557
19558 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
19559 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
19560 ID3D12Device8 * This,
19561 _In_opt_ ID3D12Resource *pResource,
19562 _In_opt_ ID3D12Resource *pCounterResource,
19563 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
19564 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19565
19566 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
19567 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
19568 ID3D12Device8 * This,
19569 _In_opt_ ID3D12Resource *pResource,
19570 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
19571 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19572
19573 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
19574 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
19575 ID3D12Device8 * This,
19576 _In_opt_ ID3D12Resource *pResource,
19577 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
19578 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19579
19580 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
19581 void ( STDMETHODCALLTYPE *CreateSampler )(
19582 ID3D12Device8 * This,
19583 _In_ const D3D12_SAMPLER_DESC *pDesc,
19584 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19585
19586 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
19587 void ( STDMETHODCALLTYPE *CopyDescriptors )(
19588 ID3D12Device8 * This,
19589 _In_ UINT NumDestDescriptorRanges,
19590 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
19591 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
19592 _In_ UINT NumSrcDescriptorRanges,
19593 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
19594 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
19595 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19596
19597 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
19598 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
19599 ID3D12Device8 * This,
19600 _In_ UINT NumDescriptors,
19601 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
19602 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
19603 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19604
19605 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
19606#if !defined(_WIN32)
19607 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19608 ID3D12Device8 * This,
19609 _In_ UINT visibleMask,
19610 _In_ UINT numResourceDescs,
19611 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19612
19613#else
19614 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19615 ID3D12Device8 * This,
19616 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19617 _In_ UINT visibleMask,
19618 _In_ UINT numResourceDescs,
19619 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19620
19621#endif
19622
19623 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
19624#if !defined(_WIN32)
19625 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19626 ID3D12Device8 * This,
19627 _In_ UINT nodeMask,
19628 D3D12_HEAP_TYPE heapType);
19629
19630#else
19631 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19632 ID3D12Device8 * This,
19633 D3D12_HEAP_PROPERTIES * RetVal,
19634 _In_ UINT nodeMask,
19635 D3D12_HEAP_TYPE heapType);
19636
19637#endif
19638
19639 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
19640 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
19641 ID3D12Device8 * This,
19642 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19643 D3D12_HEAP_FLAGS HeapFlags,
19644 _In_ const D3D12_RESOURCE_DESC *pDesc,
19645 D3D12_RESOURCE_STATES InitialResourceState,
19646 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19647 REFIID riidResource,
19648 _COM_Outptr_opt_ void **ppvResource);
19649
19650 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
19651 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
19652 ID3D12Device8 * This,
19653 _In_ const D3D12_HEAP_DESC *pDesc,
19654 REFIID riid,
19655 _COM_Outptr_opt_ void **ppvHeap);
19656
19657 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
19658 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
19659 ID3D12Device8 * This,
19660 _In_ ID3D12Heap *pHeap,
19661 UINT64 HeapOffset,
19662 _In_ const D3D12_RESOURCE_DESC *pDesc,
19663 D3D12_RESOURCE_STATES InitialState,
19664 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19665 REFIID riid,
19666 _COM_Outptr_opt_ void **ppvResource);
19667
19668 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
19669 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
19670 ID3D12Device8 * This,
19671 _In_ const D3D12_RESOURCE_DESC *pDesc,
19672 D3D12_RESOURCE_STATES InitialState,
19673 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19674 REFIID riid,
19675 _COM_Outptr_opt_ void **ppvResource);
19676
19677 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
19678 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
19679 ID3D12Device8 * This,
19680 _In_ ID3D12DeviceChild *pObject,
19681 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
19682 DWORD Access,
19683 _In_opt_ LPCWSTR Name,
19684 _Out_ HANDLE *pHandle);
19685
19686 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
19687 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
19688 ID3D12Device8 * This,
19689 _In_ HANDLE NTHandle,
19690 REFIID riid,
19691 _COM_Outptr_opt_ void **ppvObj);
19692
19693 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
19694 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
19695 ID3D12Device8 * This,
19696 _In_ LPCWSTR Name,
19697 DWORD Access,
19698 /* [annotation][out] */
19699 _Out_ HANDLE *pNTHandle);
19700
19701 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
19702 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
19703 ID3D12Device8 * This,
19704 UINT NumObjects,
19705 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19706
19707 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
19708 HRESULT ( STDMETHODCALLTYPE *Evict )(
19709 ID3D12Device8 * This,
19710 UINT NumObjects,
19711 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19712
19713 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
19714 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
19715 ID3D12Device8 * This,
19716 UINT64 InitialValue,
19717 D3D12_FENCE_FLAGS Flags,
19718 REFIID riid,
19719 _COM_Outptr_ void **ppFence);
19720
19721 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
19722 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
19723 ID3D12Device8 * This);
19724
19725 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
19726 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
19727 ID3D12Device8 * This,
19728 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
19729 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19730 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19731 UINT64 BaseOffset,
19732 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19733 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19734 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19735 _Out_opt_ UINT64 *pTotalBytes);
19736
19737 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
19738 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
19739 ID3D12Device8 * This,
19740 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
19741 REFIID riid,
19742 _COM_Outptr_opt_ void **ppvHeap);
19743
19744 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
19745 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
19746 ID3D12Device8 * This,
19747 BOOL Enable);
19748
19749 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
19750 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
19751 ID3D12Device8 * This,
19752 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
19753 _In_opt_ ID3D12RootSignature *pRootSignature,
19754 REFIID riid,
19755 _COM_Outptr_opt_ void **ppvCommandSignature);
19756
19757 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
19758 void ( STDMETHODCALLTYPE *GetResourceTiling )(
19759 ID3D12Device8 * This,
19760 _In_ ID3D12Resource *pTiledResource,
19761 _Out_opt_ UINT *pNumTilesForEntireResource,
19762 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
19763 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
19764 _Inout_opt_ UINT *pNumSubresourceTilings,
19765 _In_ UINT FirstSubresourceTilingToGet,
19766 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
19767
19768 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
19769#if !defined(_WIN32)
19770 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
19771 ID3D12Device8 * This);
19772
19773#else
19774 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
19775 ID3D12Device8 * This,
19776 LUID * RetVal);
19777
19778#endif
19779
19780 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
19781 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
19782 ID3D12Device8 * This,
19783 _In_reads_(BlobLength) const void *pLibraryBlob,
19784 SIZE_T BlobLength,
19785 REFIID riid,
19786 _COM_Outptr_ void **ppPipelineLibrary);
19787
19788 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
19789 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
19790 ID3D12Device8 * This,
19791 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
19792 _In_reads_(NumFences) const UINT64 *pFenceValues,
19793 UINT NumFences,
19794 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
19795 HANDLE hEvent);
19796
19797 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
19798 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
19799 ID3D12Device8 * This,
19800 UINT NumObjects,
19801 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19802 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
19803
19804 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
19805 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
19806 ID3D12Device8 * This,
19807 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
19808 REFIID riid,
19809 _COM_Outptr_ void **ppPipelineState);
19810
19811 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
19812 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
19813 ID3D12Device8 * This,
19814 _In_ const void *pAddress,
19815 REFIID riid,
19816 _COM_Outptr_ void **ppvHeap);
19817
19818 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
19819 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
19820 ID3D12Device8 * This,
19821 _In_ HANDLE hFileMapping,
19822 REFIID riid,
19823 _COM_Outptr_ void **ppvHeap);
19824
19825 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
19826 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
19827 ID3D12Device8 * This,
19828 D3D12_RESIDENCY_FLAGS Flags,
19829 UINT NumObjects,
19830 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19831 _In_ ID3D12Fence *pFenceToSignal,
19832 UINT64 FenceValueToSignal);
19833
19834 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
19835 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
19836 ID3D12Device8 * This,
19837 _In_ UINT nodeMask,
19838 _In_ D3D12_COMMAND_LIST_TYPE type,
19839 _In_ D3D12_COMMAND_LIST_FLAGS flags,
19840 REFIID riid,
19841 _COM_Outptr_ void **ppCommandList);
19842
19843 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
19844 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
19845 ID3D12Device8 * This,
19846 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
19847 _In_ REFIID riid,
19848 _COM_Outptr_ void **ppSession);
19849
19850 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
19851 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
19852 ID3D12Device8 * This,
19853 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19854 D3D12_HEAP_FLAGS HeapFlags,
19855 _In_ const D3D12_RESOURCE_DESC *pDesc,
19856 D3D12_RESOURCE_STATES InitialResourceState,
19857 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19858 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19859 REFIID riidResource,
19860 _COM_Outptr_opt_ void **ppvResource);
19861
19862 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
19863 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
19864 ID3D12Device8 * This,
19865 _In_ const D3D12_HEAP_DESC *pDesc,
19866 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19867 REFIID riid,
19868 _COM_Outptr_opt_ void **ppvHeap);
19869
19870 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
19871 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19872 ID3D12Device8 * This,
19873 _In_ const D3D12_RESOURCE_DESC *pDesc,
19874 D3D12_RESOURCE_STATES InitialState,
19875 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19876 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19877 REFIID riid,
19878 _COM_Outptr_opt_ void **ppvResource);
19879
19880 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19881#if !defined(_WIN32)
19882 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19883 ID3D12Device8 * This,
19884 UINT visibleMask,
19885 UINT numResourceDescs,
19886 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19887 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19888
19889#else
19890 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19891 ID3D12Device8 * This,
19892 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19893 UINT visibleMask,
19894 UINT numResourceDescs,
19895 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19896 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19897
19898#endif
19899
19900 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19901 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19902 ID3D12Device8 * This,
19903 _In_ ID3D12LifetimeOwner *pOwner,
19904 REFIID riid,
19905 _COM_Outptr_ void **ppvTracker);
19906
19907 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19908 void ( STDMETHODCALLTYPE *RemoveDevice )(
19909 ID3D12Device8 * This);
19910
19911 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19912 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19913 ID3D12Device8 * This,
19914 _Inout_ UINT *pNumMetaCommands,
19915 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19916
19917 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19918 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19919 ID3D12Device8 * This,
19920 _In_ REFGUID CommandId,
19921 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19922 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19923 _Inout_ UINT *pParameterCount,
19924 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19925
19926 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19927 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19928 ID3D12Device8 * This,
19929 _In_ REFGUID CommandId,
19930 _In_ UINT NodeMask,
19931 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19932 _In_ SIZE_T CreationParametersDataSizeInBytes,
19933 REFIID riid,
19934 _COM_Outptr_ void **ppMetaCommand);
19935
19936 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19937 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19938 ID3D12Device8 * This,
19939 const D3D12_STATE_OBJECT_DESC *pDesc,
19940 REFIID riid,
19941 _COM_Outptr_ void **ppStateObject);
19942
19943 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19944 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19945 ID3D12Device8 * This,
19946 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19947 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19948
19949 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19950 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19951 ID3D12Device8 * This,
19952 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19953 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19954
19955 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19956 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19957 ID3D12Device8 * This,
19958 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19959 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19960 _In_opt_ HANDLE hEventToSignalUponCompletion,
19961 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19962
19963 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19964 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19965 ID3D12Device8 * This,
19966 const D3D12_STATE_OBJECT_DESC *pAddition,
19967 ID3D12StateObject *pStateObjectToGrowFrom,
19968 REFIID riid,
19969 _COM_Outptr_ void **ppNewStateObject);
19970
19971 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19972 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19973 ID3D12Device8 * This,
19974 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19975 _In_ REFIID riid,
19976 _COM_Outptr_ void **ppSession);
19977
19978 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
19979#if !defined(_WIN32)
19980 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19981 ID3D12Device8 * This,
19982 UINT visibleMask,
19983 UINT numResourceDescs,
19984 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19986
19987#else
19988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19989 ID3D12Device8 * This,
19990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19991 UINT visibleMask,
19992 UINT numResourceDescs,
19993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19994 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19995
19996#endif
19997
19998 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
19999 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
20000 ID3D12Device8 * This,
20001 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20002 D3D12_HEAP_FLAGS HeapFlags,
20003 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20004 D3D12_RESOURCE_STATES InitialResourceState,
20005 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20006 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20007 REFIID riidResource,
20008 _COM_Outptr_opt_ void **ppvResource);
20009
20010 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20011 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20012 ID3D12Device8 * This,
20013 _In_ ID3D12Heap *pHeap,
20014 UINT64 HeapOffset,
20015 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20016 D3D12_RESOURCE_STATES InitialState,
20017 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20018 REFIID riid,
20019 _COM_Outptr_opt_ void **ppvResource);
20020
20021 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20022 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20023 ID3D12Device8 * This,
20024 _In_opt_ ID3D12Resource *pTargetedResource,
20025 _In_opt_ ID3D12Resource *pFeedbackResource,
20026 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20027
20028 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20029 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20030 ID3D12Device8 * This,
20031 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20032 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20033 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20034 UINT64 BaseOffset,
20035 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20036 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20037 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20038 _Out_opt_ UINT64 *pTotalBytes);
20039
20040 END_INTERFACE
20041 } ID3D12Device8Vtbl;
20042
20043 interface ID3D12Device8
20044 {
20045 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
20046 };
20047
20048
20049
20050#ifdef COBJMACROS
20051
20052
20053#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
20054 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20055
20056#define ID3D12Device8_AddRef(This) \
20057 ( (This)->lpVtbl -> AddRef(This) )
20058
20059#define ID3D12Device8_Release(This) \
20060 ( (This)->lpVtbl -> Release(This) )
20061
20062
20063#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
20064 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20065
20066#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
20067 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20068
20069#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
20070 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20071
20072#define ID3D12Device8_SetName(This,Name) \
20073 ( (This)->lpVtbl -> SetName(This,Name) )
20074
20075
20076#define ID3D12Device8_GetNodeCount(This) \
20077 ( (This)->lpVtbl -> GetNodeCount(This) )
20078
20079#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20080 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20081
20082#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20083 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20084
20085#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20086 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20087
20088#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20089 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20090
20091#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20092 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20093
20094#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20095 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20096
20097#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20098 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20099
20100#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20101 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20102
20103#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20104 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20105
20106#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20107 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20108
20109#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20110 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20111
20112#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20113 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20114
20115#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20116 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20117
20118#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20119 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20120
20121#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
20122 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20123
20124#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20125 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20126
20127#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20128 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20129#if !defined(_WIN32)
20130
20131#define ID3D12Device8_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
20132 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
20133#else
20134#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20135 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20136#endif
20137#if !defined(_WIN32)
20138
20139#define ID3D12Device8_GetCustomHeapProperties(This,nodeMask,heapType) \
20140 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
20141#else
20142#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20143 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20144#endif
20145
20146#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20147 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20148
20149#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
20150 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20151
20152#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20153 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20154
20155#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20156 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20157
20158#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20159 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20160
20161#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20162 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20163
20164#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20165 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20166
20167#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
20168 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20169
20170#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
20171 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20172
20173#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20174 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20175
20176#define ID3D12Device8_GetDeviceRemovedReason(This) \
20177 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20178
20179#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20180 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20181
20182#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20183 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20184
20185#define ID3D12Device8_SetStablePowerState(This,Enable) \
20186 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20187
20188#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20189 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20190
20191#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20192 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20193#if !defined(_WIN32)
20194
20195#define ID3D12Device8_GetAdapterLuid(This) \
20196 ( (This)->lpVtbl -> GetAdapterLuid(This) )
20197#else
20198#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
20199 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20200#endif
20201
20202
20203#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20204 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20205
20206#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20207 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20208
20209#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20210 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20211
20212
20213#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20214 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20215
20216
20217#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20218 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20219
20220#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20221 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20222
20223#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20224 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20225
20226
20227#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20228 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20229
20230#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20231 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20232
20233#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20234 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20235
20236#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20237 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20238
20239#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20240 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20241#if !defined(_WIN32)
20242
20243#define ID3D12Device8_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20244 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20245#else
20246#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20247 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20248#endif
20249
20250
20251#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20252 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20253
20254#define ID3D12Device8_RemoveDevice(This) \
20255 ( (This)->lpVtbl -> RemoveDevice(This) )
20256
20257#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20258 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20259
20260#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20261 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20262
20263#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20264 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20265
20266#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
20267 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20268
20269#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20270 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20271
20272#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20273 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20274
20275
20276#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20277 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20278
20279
20280#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20281 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20282
20283#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20284 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20285
20286#if !defined(_WIN32)
20287
20288#define ID3D12Device8_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20289 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20290#else
20291#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20292 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20293#endif
20294
20295#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20296 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20297
20298#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20299 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20300
20301#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20302 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20303
20304#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20305 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20306
20307#endif /* COBJMACROS */
20308
20309
20310#endif /* C style interface */
20311
20312
20313
20314
20315#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
20316
20317
20318#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
20319#define __ID3D12Resource1_INTERFACE_DEFINED__
20320
20321/* interface ID3D12Resource1 */
20322/* [unique][local][object][uuid] */
20323
20324
20325EXTERN_C const IID IID_ID3D12Resource1;
20326
20327#if defined(__cplusplus) && !defined(CINTERFACE)
20328
20329 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
20330 ID3D12Resource1 : public ID3D12Resource
20331 {
20332 public:
20333 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20334 REFIID riid,
20335 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20336
20337 };
20338
20339
20340#else /* C style interface */
20341
20342 typedef struct ID3D12Resource1Vtbl
20343 {
20344 BEGIN_INTERFACE
20345
20346 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20347 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20348 ID3D12Resource1 * This,
20349 REFIID riid,
20350 _COM_Outptr_ void **ppvObject);
20351
20352 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20353 ULONG ( STDMETHODCALLTYPE *AddRef )(
20354 ID3D12Resource1 * This);
20355
20356 DECLSPEC_XFGVIRT(IUnknown, Release)
20357 ULONG ( STDMETHODCALLTYPE *Release )(
20358 ID3D12Resource1 * This);
20359
20360 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20361 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20362 ID3D12Resource1 * This,
20363 _In_ REFGUID guid,
20364 _Inout_ UINT *pDataSize,
20365 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20366
20367 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20368 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20369 ID3D12Resource1 * This,
20370 _In_ REFGUID guid,
20371 _In_ UINT DataSize,
20372 _In_reads_bytes_opt_( DataSize ) const void *pData);
20373
20374 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20375 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20376 ID3D12Resource1 * This,
20377 _In_ REFGUID guid,
20378 _In_opt_ const IUnknown *pData);
20379
20380 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20381 HRESULT ( STDMETHODCALLTYPE *SetName )(
20382 ID3D12Resource1 * This,
20383 _In_z_ LPCWSTR Name);
20384
20385 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20386 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20387 ID3D12Resource1 * This,
20388 REFIID riid,
20389 _COM_Outptr_opt_ void **ppvDevice);
20390
20391 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20392 HRESULT ( STDMETHODCALLTYPE *Map )(
20393 ID3D12Resource1 * This,
20394 UINT Subresource,
20395 _In_opt_ const D3D12_RANGE *pReadRange,
20396 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20397
20398 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20399 void ( STDMETHODCALLTYPE *Unmap )(
20400 ID3D12Resource1 * This,
20401 UINT Subresource,
20402 _In_opt_ const D3D12_RANGE *pWrittenRange);
20403
20404 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20405#if !defined(_WIN32)
20406 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20407 ID3D12Resource1 * This);
20408
20409#else
20410 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20411 ID3D12Resource1 * This,
20412 D3D12_RESOURCE_DESC * RetVal);
20413
20414#endif
20415
20416 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20417 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20418 ID3D12Resource1 * This);
20419
20420 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20421 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20422 ID3D12Resource1 * This,
20423 UINT DstSubresource,
20424 _In_opt_ const D3D12_BOX *pDstBox,
20425 _In_ const void *pSrcData,
20426 UINT SrcRowPitch,
20427 UINT SrcDepthPitch);
20428
20429 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20430 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20431 ID3D12Resource1 * This,
20432 _Out_ void *pDstData,
20433 UINT DstRowPitch,
20434 UINT DstDepthPitch,
20435 UINT SrcSubresource,
20436 _In_opt_ const D3D12_BOX *pSrcBox);
20437
20438 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20439 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20440 ID3D12Resource1 * This,
20441 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20442 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20443
20444 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20445 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20446 ID3D12Resource1 * This,
20447 REFIID riid,
20448 _COM_Outptr_opt_ void **ppProtectedSession);
20449
20450 END_INTERFACE
20451 } ID3D12Resource1Vtbl;
20452
20453 interface ID3D12Resource1
20454 {
20455 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
20456 };
20457
20458
20459
20460#ifdef COBJMACROS
20461
20462
20463#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
20464 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20465
20466#define ID3D12Resource1_AddRef(This) \
20467 ( (This)->lpVtbl -> AddRef(This) )
20468
20469#define ID3D12Resource1_Release(This) \
20470 ( (This)->lpVtbl -> Release(This) )
20471
20472
20473#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
20474 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20475
20476#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
20477 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20478
20479#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
20480 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20481
20482#define ID3D12Resource1_SetName(This,Name) \
20483 ( (This)->lpVtbl -> SetName(This,Name) )
20484
20485
20486#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
20487 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20488
20489
20490
20491#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
20492 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20493
20494#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
20495 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20496#if !defined(_WIN32)
20497
20498#define ID3D12Resource1_GetDesc(This) \
20499 ( (This)->lpVtbl -> GetDesc(This) )
20500#else
20501#define ID3D12Resource1_GetDesc(This,RetVal) \
20502 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20503#endif
20504
20505#define ID3D12Resource1_GetGPUVirtualAddress(This) \
20506 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20507
20508#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20509 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20510
20511#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20512 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20513
20514#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20515 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20516
20517
20518#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20519 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20520
20521#endif /* COBJMACROS */
20522
20523
20524#endif /* C style interface */
20525
20526
20527
20528
20529#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
20530
20531
20532#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
20533#define __ID3D12Resource2_INTERFACE_DEFINED__
20534
20535/* interface ID3D12Resource2 */
20536/* [unique][local][object][uuid] */
20537
20538
20539EXTERN_C const IID IID_ID3D12Resource2;
20540
20541#if defined(__cplusplus) && !defined(CINTERFACE)
20542
20543 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
20544 ID3D12Resource2 : public ID3D12Resource1
20545 {
20546 public:
20547#if defined(_MSC_VER) || !defined(_WIN32)
20548 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
20549#else
20550 virtual D3D12_RESOURCE_DESC1 *STDMETHODCALLTYPE GetDesc1(
20551 D3D12_RESOURCE_DESC1 * RetVal) = 0;
20552#endif
20553
20554 };
20555
20556
20557#else /* C style interface */
20558
20559 typedef struct ID3D12Resource2Vtbl
20560 {
20561 BEGIN_INTERFACE
20562
20563 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20564 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20565 ID3D12Resource2 * This,
20566 REFIID riid,
20567 _COM_Outptr_ void **ppvObject);
20568
20569 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20570 ULONG ( STDMETHODCALLTYPE *AddRef )(
20571 ID3D12Resource2 * This);
20572
20573 DECLSPEC_XFGVIRT(IUnknown, Release)
20574 ULONG ( STDMETHODCALLTYPE *Release )(
20575 ID3D12Resource2 * This);
20576
20577 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20578 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20579 ID3D12Resource2 * This,
20580 _In_ REFGUID guid,
20581 _Inout_ UINT *pDataSize,
20582 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20583
20584 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20585 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20586 ID3D12Resource2 * This,
20587 _In_ REFGUID guid,
20588 _In_ UINT DataSize,
20589 _In_reads_bytes_opt_( DataSize ) const void *pData);
20590
20591 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20592 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20593 ID3D12Resource2 * This,
20594 _In_ REFGUID guid,
20595 _In_opt_ const IUnknown *pData);
20596
20597 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20598 HRESULT ( STDMETHODCALLTYPE *SetName )(
20599 ID3D12Resource2 * This,
20600 _In_z_ LPCWSTR Name);
20601
20602 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20603 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20604 ID3D12Resource2 * This,
20605 REFIID riid,
20606 _COM_Outptr_opt_ void **ppvDevice);
20607
20608 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20609 HRESULT ( STDMETHODCALLTYPE *Map )(
20610 ID3D12Resource2 * This,
20611 UINT Subresource,
20612 _In_opt_ const D3D12_RANGE *pReadRange,
20613 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20614
20615 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20616 void ( STDMETHODCALLTYPE *Unmap )(
20617 ID3D12Resource2 * This,
20618 UINT Subresource,
20619 _In_opt_ const D3D12_RANGE *pWrittenRange);
20620
20621 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20622#if !defined(_WIN32)
20623 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20624 ID3D12Resource2 * This);
20625
20626#else
20627 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20628 ID3D12Resource2 * This,
20629 D3D12_RESOURCE_DESC * RetVal);
20630
20631#endif
20632
20633 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20634 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20635 ID3D12Resource2 * This);
20636
20637 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20638 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20639 ID3D12Resource2 * This,
20640 UINT DstSubresource,
20641 _In_opt_ const D3D12_BOX *pDstBox,
20642 _In_ const void *pSrcData,
20643 UINT SrcRowPitch,
20644 UINT SrcDepthPitch);
20645
20646 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20647 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20648 ID3D12Resource2 * This,
20649 _Out_ void *pDstData,
20650 UINT DstRowPitch,
20651 UINT DstDepthPitch,
20652 UINT SrcSubresource,
20653 _In_opt_ const D3D12_BOX *pSrcBox);
20654
20655 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20656 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20657 ID3D12Resource2 * This,
20658 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20659 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20660
20661 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20662 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20663 ID3D12Resource2 * This,
20664 REFIID riid,
20665 _COM_Outptr_opt_ void **ppProtectedSession);
20666
20667 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
20668#if !defined(_WIN32)
20669 D3D12_RESOURCE_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
20670 ID3D12Resource2 * This);
20671
20672#else
20673 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
20674 ID3D12Resource2 * This,
20675 D3D12_RESOURCE_DESC1 * RetVal);
20676
20677#endif
20678
20679 END_INTERFACE
20680 } ID3D12Resource2Vtbl;
20681
20682 interface ID3D12Resource2
20683 {
20684 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
20685 };
20686
20687
20688
20689#ifdef COBJMACROS
20690
20691
20692#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
20693 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20694
20695#define ID3D12Resource2_AddRef(This) \
20696 ( (This)->lpVtbl -> AddRef(This) )
20697
20698#define ID3D12Resource2_Release(This) \
20699 ( (This)->lpVtbl -> Release(This) )
20700
20701
20702#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
20703 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20704
20705#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
20706 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20707
20708#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
20709 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20710
20711#define ID3D12Resource2_SetName(This,Name) \
20712 ( (This)->lpVtbl -> SetName(This,Name) )
20713
20714
20715#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
20716 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20717
20718
20719
20720#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
20721 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20722
20723#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
20724 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20725#if !defined(_WIN32)
20726
20727#define ID3D12Resource2_GetDesc(This) \
20728 ( (This)->lpVtbl -> GetDesc(This) )
20729#else
20730#define ID3D12Resource2_GetDesc(This,RetVal) \
20731 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20732#endif
20733
20734#define ID3D12Resource2_GetGPUVirtualAddress(This) \
20735 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20736
20737#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20738 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20739
20740#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20741 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20742
20743#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20744 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20745
20746
20747#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20748 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20749
20750#if !defined(_WIN32)
20751
20752#define ID3D12Resource2_GetDesc1(This) \
20753 ( (This)->lpVtbl -> GetDesc1(This) )
20754#else
20755#define ID3D12Resource2_GetDesc1(This,RetVal) \
20756 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
20757#endif
20758
20759#endif /* COBJMACROS */
20760
20761
20762#endif /* C style interface */
20763
20764
20765
20766
20767#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
20768
20769
20770#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
20771#define __ID3D12Heap1_INTERFACE_DEFINED__
20772
20773/* interface ID3D12Heap1 */
20774/* [unique][local][object][uuid] */
20775
20776
20777EXTERN_C const IID IID_ID3D12Heap1;
20778
20779#if defined(__cplusplus) && !defined(CINTERFACE)
20780
20781 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
20782 ID3D12Heap1 : public ID3D12Heap
20783 {
20784 public:
20785 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20786 REFIID riid,
20787 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20788
20789 };
20790
20791
20792#else /* C style interface */
20793
20794 typedef struct ID3D12Heap1Vtbl
20795 {
20796 BEGIN_INTERFACE
20797
20798 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20799 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20800 ID3D12Heap1 * This,
20801 REFIID riid,
20802 _COM_Outptr_ void **ppvObject);
20803
20804 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20805 ULONG ( STDMETHODCALLTYPE *AddRef )(
20806 ID3D12Heap1 * This);
20807
20808 DECLSPEC_XFGVIRT(IUnknown, Release)
20809 ULONG ( STDMETHODCALLTYPE *Release )(
20810 ID3D12Heap1 * This);
20811
20812 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20813 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20814 ID3D12Heap1 * This,
20815 _In_ REFGUID guid,
20816 _Inout_ UINT *pDataSize,
20817 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20818
20819 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20820 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20821 ID3D12Heap1 * This,
20822 _In_ REFGUID guid,
20823 _In_ UINT DataSize,
20824 _In_reads_bytes_opt_( DataSize ) const void *pData);
20825
20826 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20827 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20828 ID3D12Heap1 * This,
20829 _In_ REFGUID guid,
20830 _In_opt_ const IUnknown *pData);
20831
20832 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20833 HRESULT ( STDMETHODCALLTYPE *SetName )(
20834 ID3D12Heap1 * This,
20835 _In_z_ LPCWSTR Name);
20836
20837 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20838 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20839 ID3D12Heap1 * This,
20840 REFIID riid,
20841 _COM_Outptr_opt_ void **ppvDevice);
20842
20843 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
20844#if !defined(_WIN32)
20845 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
20846 ID3D12Heap1 * This);
20847
20848#else
20849 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
20850 ID3D12Heap1 * This,
20851 D3D12_HEAP_DESC * RetVal);
20852
20853#endif
20854
20855 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
20856 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20857 ID3D12Heap1 * This,
20858 REFIID riid,
20859 _COM_Outptr_opt_ void **ppProtectedSession);
20860
20861 END_INTERFACE
20862 } ID3D12Heap1Vtbl;
20863
20864 interface ID3D12Heap1
20865 {
20866 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
20867 };
20868
20869
20870
20871#ifdef COBJMACROS
20872
20873
20874#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
20875 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20876
20877#define ID3D12Heap1_AddRef(This) \
20878 ( (This)->lpVtbl -> AddRef(This) )
20879
20880#define ID3D12Heap1_Release(This) \
20881 ( (This)->lpVtbl -> Release(This) )
20882
20883
20884#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
20885 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20886
20887#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
20888 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20889
20890#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
20891 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20892
20893#define ID3D12Heap1_SetName(This,Name) \
20894 ( (This)->lpVtbl -> SetName(This,Name) )
20895
20896
20897#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
20898 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20899
20900
20901#if !defined(_WIN32)
20902
20903#define ID3D12Heap1_GetDesc(This) \
20904 ( (This)->lpVtbl -> GetDesc(This) )
20905#else
20906#define ID3D12Heap1_GetDesc(This,RetVal) \
20907 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20908#endif
20909
20910
20911#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20912 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20913
20914#endif /* COBJMACROS */
20915
20916
20917#endif /* C style interface */
20918
20919
20920
20921
20922#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
20923
20924
20925#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20926#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20927
20928/* interface ID3D12GraphicsCommandList3 */
20929/* [unique][local][object][uuid] */
20930
20931
20932EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
20933
20934#if defined(__cplusplus) && !defined(CINTERFACE)
20935
20936 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
20937 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
20938 {
20939 public:
20940 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
20941 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
20942
20943 };
20944
20945
20946#else /* C style interface */
20947
20948 typedef struct ID3D12GraphicsCommandList3Vtbl
20949 {
20950 BEGIN_INTERFACE
20951
20952 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20953 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20954 ID3D12GraphicsCommandList3 * This,
20955 REFIID riid,
20956 _COM_Outptr_ void **ppvObject);
20957
20958 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20959 ULONG ( STDMETHODCALLTYPE *AddRef )(
20960 ID3D12GraphicsCommandList3 * This);
20961
20962 DECLSPEC_XFGVIRT(IUnknown, Release)
20963 ULONG ( STDMETHODCALLTYPE *Release )(
20964 ID3D12GraphicsCommandList3 * This);
20965
20966 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20967 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20968 ID3D12GraphicsCommandList3 * This,
20969 _In_ REFGUID guid,
20970 _Inout_ UINT *pDataSize,
20971 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20972
20973 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20974 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20975 ID3D12GraphicsCommandList3 * This,
20976 _In_ REFGUID guid,
20977 _In_ UINT DataSize,
20978 _In_reads_bytes_opt_( DataSize ) const void *pData);
20979
20980 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20981 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20982 ID3D12GraphicsCommandList3 * This,
20983 _In_ REFGUID guid,
20984 _In_opt_ const IUnknown *pData);
20985
20986 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20987 HRESULT ( STDMETHODCALLTYPE *SetName )(
20988 ID3D12GraphicsCommandList3 * This,
20989 _In_z_ LPCWSTR Name);
20990
20991 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20992 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20993 ID3D12GraphicsCommandList3 * This,
20994 REFIID riid,
20995 _COM_Outptr_opt_ void **ppvDevice);
20996
20997 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
20998 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
20999 ID3D12GraphicsCommandList3 * This);
21000
21001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
21002 HRESULT ( STDMETHODCALLTYPE *Close )(
21003 ID3D12GraphicsCommandList3 * This);
21004
21005 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21006 HRESULT ( STDMETHODCALLTYPE *Reset )(
21007 ID3D12GraphicsCommandList3 * This,
21008 _In_ ID3D12CommandAllocator *pAllocator,
21009 _In_opt_ ID3D12PipelineState *pInitialState);
21010
21011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21012 void ( STDMETHODCALLTYPE *ClearState )(
21013 ID3D12GraphicsCommandList3 * This,
21014 _In_opt_ ID3D12PipelineState *pPipelineState);
21015
21016 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21017 void ( STDMETHODCALLTYPE *DrawInstanced )(
21018 ID3D12GraphicsCommandList3 * This,
21019 _In_ UINT VertexCountPerInstance,
21020 _In_ UINT InstanceCount,
21021 _In_ UINT StartVertexLocation,
21022 _In_ UINT StartInstanceLocation);
21023
21024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21025 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21026 ID3D12GraphicsCommandList3 * This,
21027 _In_ UINT IndexCountPerInstance,
21028 _In_ UINT InstanceCount,
21029 _In_ UINT StartIndexLocation,
21030 _In_ INT BaseVertexLocation,
21031 _In_ UINT StartInstanceLocation);
21032
21033 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21034 void ( STDMETHODCALLTYPE *Dispatch )(
21035 ID3D12GraphicsCommandList3 * This,
21036 _In_ UINT ThreadGroupCountX,
21037 _In_ UINT ThreadGroupCountY,
21038 _In_ UINT ThreadGroupCountZ);
21039
21040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21041 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21042 ID3D12GraphicsCommandList3 * This,
21043 _In_ ID3D12Resource *pDstBuffer,
21044 UINT64 DstOffset,
21045 _In_ ID3D12Resource *pSrcBuffer,
21046 UINT64 SrcOffset,
21047 UINT64 NumBytes);
21048
21049 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21050 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21051 ID3D12GraphicsCommandList3 * This,
21052 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21053 UINT DstX,
21054 UINT DstY,
21055 UINT DstZ,
21056 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21057 _In_opt_ const D3D12_BOX *pSrcBox);
21058
21059 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21060 void ( STDMETHODCALLTYPE *CopyResource )(
21061 ID3D12GraphicsCommandList3 * This,
21062 _In_ ID3D12Resource *pDstResource,
21063 _In_ ID3D12Resource *pSrcResource);
21064
21065 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21066 void ( STDMETHODCALLTYPE *CopyTiles )(
21067 ID3D12GraphicsCommandList3 * This,
21068 _In_ ID3D12Resource *pTiledResource,
21069 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21070 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21071 _In_ ID3D12Resource *pBuffer,
21072 UINT64 BufferStartOffsetInBytes,
21073 D3D12_TILE_COPY_FLAGS Flags);
21074
21075 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21076 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21077 ID3D12GraphicsCommandList3 * This,
21078 _In_ ID3D12Resource *pDstResource,
21079 _In_ UINT DstSubresource,
21080 _In_ ID3D12Resource *pSrcResource,
21081 _In_ UINT SrcSubresource,
21082 _In_ DXGI_FORMAT Format);
21083
21084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21085 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21086 ID3D12GraphicsCommandList3 * This,
21087 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21088
21089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21090 void ( STDMETHODCALLTYPE *RSSetViewports )(
21091 ID3D12GraphicsCommandList3 * This,
21092 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21093 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21094
21095 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21096 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21097 ID3D12GraphicsCommandList3 * This,
21098 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21099 _In_reads_( NumRects) const D3D12_RECT *pRects);
21100
21101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21102 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21103 ID3D12GraphicsCommandList3 * This,
21104 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21105
21106 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21107 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21108 ID3D12GraphicsCommandList3 * This,
21109 _In_ UINT StencilRef);
21110
21111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21112 void ( STDMETHODCALLTYPE *SetPipelineState )(
21113 ID3D12GraphicsCommandList3 * This,
21114 _In_ ID3D12PipelineState *pPipelineState);
21115
21116 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21117 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21118 ID3D12GraphicsCommandList3 * This,
21119 _In_ UINT NumBarriers,
21120 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21121
21122 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21123 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21124 ID3D12GraphicsCommandList3 * This,
21125 _In_ ID3D12GraphicsCommandList *pCommandList);
21126
21127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21128 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21129 ID3D12GraphicsCommandList3 * This,
21130 _In_ UINT NumDescriptorHeaps,
21131 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21132
21133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21134 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21135 ID3D12GraphicsCommandList3 * This,
21136 _In_opt_ ID3D12RootSignature *pRootSignature);
21137
21138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21139 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21140 ID3D12GraphicsCommandList3 * This,
21141 _In_opt_ ID3D12RootSignature *pRootSignature);
21142
21143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21144 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21145 ID3D12GraphicsCommandList3 * This,
21146 _In_ UINT RootParameterIndex,
21147 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21148
21149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21150 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21151 ID3D12GraphicsCommandList3 * This,
21152 _In_ UINT RootParameterIndex,
21153 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21154
21155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21156 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21157 ID3D12GraphicsCommandList3 * This,
21158 _In_ UINT RootParameterIndex,
21159 _In_ UINT SrcData,
21160 _In_ UINT DestOffsetIn32BitValues);
21161
21162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21163 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21164 ID3D12GraphicsCommandList3 * This,
21165 _In_ UINT RootParameterIndex,
21166 _In_ UINT SrcData,
21167 _In_ UINT DestOffsetIn32BitValues);
21168
21169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21170 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21171 ID3D12GraphicsCommandList3 * This,
21172 _In_ UINT RootParameterIndex,
21173 _In_ UINT Num32BitValuesToSet,
21174 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21175 _In_ UINT DestOffsetIn32BitValues);
21176
21177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21178 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21179 ID3D12GraphicsCommandList3 * This,
21180 _In_ UINT RootParameterIndex,
21181 _In_ UINT Num32BitValuesToSet,
21182 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21183 _In_ UINT DestOffsetIn32BitValues);
21184
21185 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21186 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21187 ID3D12GraphicsCommandList3 * This,
21188 _In_ UINT RootParameterIndex,
21189 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21190
21191 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21192 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21193 ID3D12GraphicsCommandList3 * This,
21194 _In_ UINT RootParameterIndex,
21195 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21196
21197 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21198 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21199 ID3D12GraphicsCommandList3 * This,
21200 _In_ UINT RootParameterIndex,
21201 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21202
21203 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21204 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21205 ID3D12GraphicsCommandList3 * This,
21206 _In_ UINT RootParameterIndex,
21207 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21208
21209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21210 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21211 ID3D12GraphicsCommandList3 * This,
21212 _In_ UINT RootParameterIndex,
21213 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21214
21215 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21216 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21217 ID3D12GraphicsCommandList3 * This,
21218 _In_ UINT RootParameterIndex,
21219 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21220
21221 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21222 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21223 ID3D12GraphicsCommandList3 * This,
21224 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21225
21226 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21227 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21228 ID3D12GraphicsCommandList3 * This,
21229 _In_ UINT StartSlot,
21230 _In_ UINT NumViews,
21231 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21232
21233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21234 void ( STDMETHODCALLTYPE *SOSetTargets )(
21235 ID3D12GraphicsCommandList3 * This,
21236 _In_ UINT StartSlot,
21237 _In_ UINT NumViews,
21238 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21239
21240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21241 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21242 ID3D12GraphicsCommandList3 * This,
21243 _In_ UINT NumRenderTargetDescriptors,
21244 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21245 _In_ BOOL RTsSingleHandleToDescriptorRange,
21246 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21247
21248 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21249 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21250 ID3D12GraphicsCommandList3 * This,
21251 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21252 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21253 _In_ FLOAT Depth,
21254 _In_ UINT8 Stencil,
21255 _In_ UINT NumRects,
21256 _In_reads_(NumRects) const D3D12_RECT *pRects);
21257
21258 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21259 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21260 ID3D12GraphicsCommandList3 * This,
21261 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21262 _In_ const FLOAT ColorRGBA[ 4 ],
21263 _In_ UINT NumRects,
21264 _In_reads_(NumRects) const D3D12_RECT *pRects);
21265
21266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21267 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21268 ID3D12GraphicsCommandList3 * This,
21269 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21270 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21271 _In_ ID3D12Resource *pResource,
21272 _In_ const UINT Values[ 4 ],
21273 _In_ UINT NumRects,
21274 _In_reads_(NumRects) const D3D12_RECT *pRects);
21275
21276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21277 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21278 ID3D12GraphicsCommandList3 * This,
21279 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21281 _In_ ID3D12Resource *pResource,
21282 _In_ const FLOAT Values[ 4 ],
21283 _In_ UINT NumRects,
21284 _In_reads_(NumRects) const D3D12_RECT *pRects);
21285
21286 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21287 void ( STDMETHODCALLTYPE *DiscardResource )(
21288 ID3D12GraphicsCommandList3 * This,
21289 _In_ ID3D12Resource *pResource,
21290 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21291
21292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21293 void ( STDMETHODCALLTYPE *BeginQuery )(
21294 ID3D12GraphicsCommandList3 * This,
21295 _In_ ID3D12QueryHeap *pQueryHeap,
21296 _In_ D3D12_QUERY_TYPE Type,
21297 _In_ UINT Index);
21298
21299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21300 void ( STDMETHODCALLTYPE *EndQuery )(
21301 ID3D12GraphicsCommandList3 * This,
21302 _In_ ID3D12QueryHeap *pQueryHeap,
21303 _In_ D3D12_QUERY_TYPE Type,
21304 _In_ UINT Index);
21305
21306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21307 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21308 ID3D12GraphicsCommandList3 * This,
21309 _In_ ID3D12QueryHeap *pQueryHeap,
21310 _In_ D3D12_QUERY_TYPE Type,
21311 _In_ UINT StartIndex,
21312 _In_ UINT NumQueries,
21313 _In_ ID3D12Resource *pDestinationBuffer,
21314 _In_ UINT64 AlignedDestinationBufferOffset);
21315
21316 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21317 void ( STDMETHODCALLTYPE *SetPredication )(
21318 ID3D12GraphicsCommandList3 * This,
21319 _In_opt_ ID3D12Resource *pBuffer,
21320 _In_ UINT64 AlignedBufferOffset,
21321 _In_ D3D12_PREDICATION_OP Operation);
21322
21323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21324 void ( STDMETHODCALLTYPE *SetMarker )(
21325 ID3D12GraphicsCommandList3 * This,
21326 UINT Metadata,
21327 _In_reads_bytes_opt_(Size) const void *pData,
21328 UINT Size);
21329
21330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21331 void ( STDMETHODCALLTYPE *BeginEvent )(
21332 ID3D12GraphicsCommandList3 * This,
21333 UINT Metadata,
21334 _In_reads_bytes_opt_(Size) const void *pData,
21335 UINT Size);
21336
21337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21338 void ( STDMETHODCALLTYPE *EndEvent )(
21339 ID3D12GraphicsCommandList3 * This);
21340
21341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21342 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21343 ID3D12GraphicsCommandList3 * This,
21344 _In_ ID3D12CommandSignature *pCommandSignature,
21345 _In_ UINT MaxCommandCount,
21346 _In_ ID3D12Resource *pArgumentBuffer,
21347 _In_ UINT64 ArgumentBufferOffset,
21348 _In_opt_ ID3D12Resource *pCountBuffer,
21349 _In_ UINT64 CountBufferOffset);
21350
21351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21352 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21353 ID3D12GraphicsCommandList3 * This,
21354 _In_ ID3D12Resource *pDstBuffer,
21355 UINT64 DstOffset,
21356 _In_ ID3D12Resource *pSrcBuffer,
21357 UINT64 SrcOffset,
21358 UINT Dependencies,
21359 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21360 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21361
21362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21363 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21364 ID3D12GraphicsCommandList3 * This,
21365 _In_ ID3D12Resource *pDstBuffer,
21366 UINT64 DstOffset,
21367 _In_ ID3D12Resource *pSrcBuffer,
21368 UINT64 SrcOffset,
21369 UINT Dependencies,
21370 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21371 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21372
21373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21374 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21375 ID3D12GraphicsCommandList3 * This,
21376 _In_ FLOAT Min,
21377 _In_ FLOAT Max);
21378
21379 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21380 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21381 ID3D12GraphicsCommandList3 * This,
21382 _In_ UINT NumSamplesPerPixel,
21383 _In_ UINT NumPixels,
21384 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21385
21386 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21387 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21388 ID3D12GraphicsCommandList3 * This,
21389 _In_ ID3D12Resource *pDstResource,
21390 _In_ UINT DstSubresource,
21391 _In_ UINT DstX,
21392 _In_ UINT DstY,
21393 _In_ ID3D12Resource *pSrcResource,
21394 _In_ UINT SrcSubresource,
21395 _In_opt_ D3D12_RECT *pSrcRect,
21396 _In_ DXGI_FORMAT Format,
21397 _In_ D3D12_RESOLVE_MODE ResolveMode);
21398
21399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21400 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21401 ID3D12GraphicsCommandList3 * This,
21402 _In_ UINT Mask);
21403
21404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21405 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21406 ID3D12GraphicsCommandList3 * This,
21407 UINT Count,
21408 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21409 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21410
21411 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21412 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21413 ID3D12GraphicsCommandList3 * This,
21414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21415
21416 END_INTERFACE
21417 } ID3D12GraphicsCommandList3Vtbl;
21418
21419 interface ID3D12GraphicsCommandList3
21420 {
21421 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
21422 };
21423
21424
21425
21426#ifdef COBJMACROS
21427
21428
21429#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
21430 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21431
21432#define ID3D12GraphicsCommandList3_AddRef(This) \
21433 ( (This)->lpVtbl -> AddRef(This) )
21434
21435#define ID3D12GraphicsCommandList3_Release(This) \
21436 ( (This)->lpVtbl -> Release(This) )
21437
21438
21439#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
21440 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21441
21442#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
21443 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21444
21445#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
21446 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21447
21448#define ID3D12GraphicsCommandList3_SetName(This,Name) \
21449 ( (This)->lpVtbl -> SetName(This,Name) )
21450
21451
21452#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
21453 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21454
21455
21456#define ID3D12GraphicsCommandList3_GetType(This) \
21457 ( (This)->lpVtbl -> GetType(This) )
21458
21459
21460#define ID3D12GraphicsCommandList3_Close(This) \
21461 ( (This)->lpVtbl -> Close(This) )
21462
21463#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
21464 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21465
21466#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
21467 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21468
21469#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21470 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21471
21472#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21473 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21474
21475#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21476 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21477
21478#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21479 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
21480
21481#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
21482 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
21483
21484#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
21485 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
21486
21487#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
21488 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
21489
21490#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
21491 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
21492
21493#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
21494 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
21495
21496#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
21497 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
21498
21499#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
21500 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
21501
21502#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
21503 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
21504
21505#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
21506 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
21507
21508#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
21509 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
21510
21511#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
21512 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
21513
21514#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
21515 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
21516
21517#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
21518 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
21519
21520#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
21521 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
21522
21523#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
21524 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
21525
21526#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21527 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21528
21529#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21530 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21531
21532#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21533 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21534
21535#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21536 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21537
21538#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21539 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21540
21541#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21542 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21543
21544#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21545 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21546
21547#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21548 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21549
21550#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21551 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21552
21553#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21554 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21555
21556#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21557 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21558
21559#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21560 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21561
21562#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
21563 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
21564
21565#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
21566 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
21567
21568#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
21569 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
21570
21571#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
21572 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
21573
21574#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
21575 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
21576
21577#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
21578 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
21579
21580#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21581 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21582
21583#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21584 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21585
21586#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
21587 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
21588
21589#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
21590 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
21591
21592#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
21593 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
21594
21595#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
21596 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
21597
21598#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
21599 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
21600
21601#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
21602 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
21603
21604#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
21605 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
21606
21607#define ID3D12GraphicsCommandList3_EndEvent(This) \
21608 ( (This)->lpVtbl -> EndEvent(This) )
21609
21610#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
21611 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
21612
21613
21614#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21615 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21616
21617#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21618 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21619
21620#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
21621 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
21622
21623#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
21624 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
21625
21626#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
21627 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
21628
21629#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
21630 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
21631
21632
21633#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
21634 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
21635
21636
21637#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
21638 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
21639
21640#endif /* COBJMACROS */
21641
21642
21643#endif /* C style interface */
21644
21645
21646
21647
21648#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
21649
21650
21651/* interface __MIDL_itf_d3d12_0000_0054 */
21652/* [local] */
21653
21654typedef
21655enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
21656 {
21657 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
21658 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
21659 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
21660 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) ,
21661 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21662 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21663 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21664 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
21665
21666typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
21667 {
21668 D3D12_CLEAR_VALUE ClearValue;
21669 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
21670
21671typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21672 {
21673 UINT AdditionalWidth;
21674 UINT AdditionalHeight;
21675 } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21676
21677typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
21678 {
21679 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
21680 union
21681 {
21682 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
21683 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21684 } ;
21685 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
21686
21687typedef
21688enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
21689 {
21690 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
21691 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
21692 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
21693 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) ,
21694 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21695 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21696 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21697 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
21698
21699typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
21700 {
21701 UINT SrcSubresource;
21702 UINT DstSubresource;
21703 UINT DstX;
21704 UINT DstY;
21705 D3D12_RECT SrcRect;
21706 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
21707
21708typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
21709 {
21710 ID3D12Resource *pSrcResource;
21711 ID3D12Resource *pDstResource;
21712 UINT SubresourceCount;
21713 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
21714 DXGI_FORMAT Format;
21715 D3D12_RESOLVE_MODE ResolveMode;
21716 BOOL PreserveResolveSource;
21717 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
21718
21719typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21720 {
21721 UINT AdditionalWidth;
21722 UINT AdditionalHeight;
21723 } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21724
21725typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
21726 {
21727 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
21728 union
21729 {
21730 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
21731 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21732 } ;
21733 } D3D12_RENDER_PASS_ENDING_ACCESS;
21734
21735typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
21736 {
21737 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21738 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
21739 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
21740 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
21741
21742typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
21743 {
21744 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21745 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
21746 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
21747 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
21748 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
21749 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
21750
21751typedef
21752enum D3D12_RENDER_PASS_FLAGS
21753 {
21754 D3D12_RENDER_PASS_FLAG_NONE = 0,
21755 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
21756 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
21757 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
21758 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
21759 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
21760 } D3D12_RENDER_PASS_FLAGS;
21761
21762DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
21763
21764
21765extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21766extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21767
21768#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
21769#define __ID3D12MetaCommand_INTERFACE_DEFINED__
21770
21771/* interface ID3D12MetaCommand */
21772/* [unique][local][object][uuid] */
21773
21774
21775EXTERN_C const IID IID_ID3D12MetaCommand;
21776
21777#if defined(__cplusplus) && !defined(CINTERFACE)
21778
21779 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
21780 ID3D12MetaCommand : public ID3D12Pageable
21781 {
21782 public:
21783 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
21784 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21785 _In_ UINT ParameterIndex) = 0;
21786
21787 };
21788
21789
21790#else /* C style interface */
21791
21792 typedef struct ID3D12MetaCommandVtbl
21793 {
21794 BEGIN_INTERFACE
21795
21796 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21797 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21798 ID3D12MetaCommand * This,
21799 REFIID riid,
21800 _COM_Outptr_ void **ppvObject);
21801
21802 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21803 ULONG ( STDMETHODCALLTYPE *AddRef )(
21804 ID3D12MetaCommand * This);
21805
21806 DECLSPEC_XFGVIRT(IUnknown, Release)
21807 ULONG ( STDMETHODCALLTYPE *Release )(
21808 ID3D12MetaCommand * This);
21809
21810 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21811 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21812 ID3D12MetaCommand * This,
21813 _In_ REFGUID guid,
21814 _Inout_ UINT *pDataSize,
21815 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21816
21817 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21818 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21819 ID3D12MetaCommand * This,
21820 _In_ REFGUID guid,
21821 _In_ UINT DataSize,
21822 _In_reads_bytes_opt_( DataSize ) const void *pData);
21823
21824 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21825 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21826 ID3D12MetaCommand * This,
21827 _In_ REFGUID guid,
21828 _In_opt_ const IUnknown *pData);
21829
21830 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21831 HRESULT ( STDMETHODCALLTYPE *SetName )(
21832 ID3D12MetaCommand * This,
21833 _In_z_ LPCWSTR Name);
21834
21835 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21836 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21837 ID3D12MetaCommand * This,
21838 REFIID riid,
21839 _COM_Outptr_opt_ void **ppvDevice);
21840
21841 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
21842 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
21843 ID3D12MetaCommand * This,
21844 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21845 _In_ UINT ParameterIndex);
21846
21847 END_INTERFACE
21848 } ID3D12MetaCommandVtbl;
21849
21850 interface ID3D12MetaCommand
21851 {
21852 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
21853 };
21854
21855
21856
21857#ifdef COBJMACROS
21858
21859
21860#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
21861 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21862
21863#define ID3D12MetaCommand_AddRef(This) \
21864 ( (This)->lpVtbl -> AddRef(This) )
21865
21866#define ID3D12MetaCommand_Release(This) \
21867 ( (This)->lpVtbl -> Release(This) )
21868
21869
21870#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
21871 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21872
21873#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
21874 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21875
21876#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
21877 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21878
21879#define ID3D12MetaCommand_SetName(This,Name) \
21880 ( (This)->lpVtbl -> SetName(This,Name) )
21881
21882
21883#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
21884 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21885
21886
21887
21888#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
21889 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
21890
21891#endif /* COBJMACROS */
21892
21893
21894#endif /* C style interface */
21895
21896
21897
21898
21899#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
21900
21901
21902/* interface __MIDL_itf_d3d12_0000_0055 */
21903/* [local] */
21904
21905typedef struct D3D12_DISPATCH_RAYS_DESC
21906 {
21907 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
21908 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
21909 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
21910 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
21911 UINT Width;
21912 UINT Height;
21913 UINT Depth;
21914 } D3D12_DISPATCH_RAYS_DESC;
21915
21916typedef
21917enum D3D12_SET_WORK_GRAPH_FLAGS
21918 {
21919 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
21920 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
21921 } D3D12_SET_WORK_GRAPH_FLAGS;
21922
21923DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
21924typedef struct D3D12_SET_WORK_GRAPH_DESC
21925 {
21926 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21927 D3D12_SET_WORK_GRAPH_FLAGS Flags;
21928 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
21929 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
21930 } D3D12_SET_WORK_GRAPH_DESC;
21931
21932typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
21933 {
21934 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21935 } D3D12_SET_RAYTRACING_PIPELINE_DESC;
21936
21937typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
21938 {
21939 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21940 } D3D12_SET_GENERIC_PIPELINE_DESC;
21941
21942typedef
21943enum D3D12_PROGRAM_TYPE
21944 {
21945 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
21946 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
21947 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
21948 } D3D12_PROGRAM_TYPE;
21949
21950typedef struct D3D12_SET_PROGRAM_DESC
21951 {
21952 D3D12_PROGRAM_TYPE Type;
21953 union
21954 {
21955 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
21956 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
21957 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
21958 } ;
21959 } D3D12_SET_PROGRAM_DESC;
21960
21961typedef
21962enum D3D12_DISPATCH_MODE
21963 {
21964 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
21965 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
21966 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
21967 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
21968 } D3D12_DISPATCH_MODE;
21969
21970typedef struct D3D12_NODE_CPU_INPUT
21971 {
21972 UINT EntrypointIndex;
21973 UINT NumRecords;
21974 const void *pRecords;
21975 UINT64 RecordStrideInBytes;
21976 } D3D12_NODE_CPU_INPUT;
21977
21978typedef struct D3D12_NODE_GPU_INPUT
21979 {
21980 UINT EntrypointIndex;
21981 UINT NumRecords;
21982 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
21983 } D3D12_NODE_GPU_INPUT;
21984
21985typedef struct D3D12_MULTI_NODE_CPU_INPUT
21986 {
21987 UINT NumNodeInputs;
21988 const D3D12_NODE_CPU_INPUT *pNodeInputs;
21989 UINT64 NodeInputStrideInBytes;
21990 } D3D12_MULTI_NODE_CPU_INPUT;
21991
21992typedef struct D3D12_MULTI_NODE_GPU_INPUT
21993 {
21994 UINT NumNodeInputs;
21995 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
21996 } D3D12_MULTI_NODE_GPU_INPUT;
21997
21998typedef struct D3D12_DISPATCH_GRAPH_DESC
21999 {
22000 D3D12_DISPATCH_MODE Mode;
22001 union
22002 {
22003 D3D12_NODE_CPU_INPUT NodeCPUInput;
22004 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
22005 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
22006 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
22007 } ;
22008 } D3D12_DISPATCH_GRAPH_DESC;
22009
22010
22011
22012extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22013extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22014
22015#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22016#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22017
22018/* interface ID3D12GraphicsCommandList4 */
22019/* [unique][local][object][uuid] */
22020
22021
22022EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
22023
22024#if defined(__cplusplus) && !defined(CINTERFACE)
22025
22026 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
22027 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
22028 {
22029 public:
22030 virtual void STDMETHODCALLTYPE BeginRenderPass(
22031 _In_ UINT NumRenderTargets,
22032 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22033 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22034 D3D12_RENDER_PASS_FLAGS Flags) = 0;
22035
22036 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
22037
22038 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
22039 _In_ ID3D12MetaCommand *pMetaCommand,
22040 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22041 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
22042
22043 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
22044 _In_ ID3D12MetaCommand *pMetaCommand,
22045 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22046 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
22047
22048 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
22049 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22050 _In_ UINT NumPostbuildInfoDescs,
22051 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
22052
22053 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
22054 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22055 _In_ UINT NumSourceAccelerationStructures,
22056 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
22057
22058 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
22059 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22060 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22061 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
22062
22063 virtual void STDMETHODCALLTYPE SetPipelineState1(
22064 _In_ ID3D12StateObject *pStateObject) = 0;
22065
22066 virtual void STDMETHODCALLTYPE DispatchRays(
22067 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
22068
22069 };
22070
22071
22072#else /* C style interface */
22073
22074 typedef struct ID3D12GraphicsCommandList4Vtbl
22075 {
22076 BEGIN_INTERFACE
22077
22078 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22079 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22080 ID3D12GraphicsCommandList4 * This,
22081 REFIID riid,
22082 _COM_Outptr_ void **ppvObject);
22083
22084 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22085 ULONG ( STDMETHODCALLTYPE *AddRef )(
22086 ID3D12GraphicsCommandList4 * This);
22087
22088 DECLSPEC_XFGVIRT(IUnknown, Release)
22089 ULONG ( STDMETHODCALLTYPE *Release )(
22090 ID3D12GraphicsCommandList4 * This);
22091
22092 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22093 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22094 ID3D12GraphicsCommandList4 * This,
22095 _In_ REFGUID guid,
22096 _Inout_ UINT *pDataSize,
22097 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22098
22099 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22100 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22101 ID3D12GraphicsCommandList4 * This,
22102 _In_ REFGUID guid,
22103 _In_ UINT DataSize,
22104 _In_reads_bytes_opt_( DataSize ) const void *pData);
22105
22106 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22107 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22108 ID3D12GraphicsCommandList4 * This,
22109 _In_ REFGUID guid,
22110 _In_opt_ const IUnknown *pData);
22111
22112 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22113 HRESULT ( STDMETHODCALLTYPE *SetName )(
22114 ID3D12GraphicsCommandList4 * This,
22115 _In_z_ LPCWSTR Name);
22116
22117 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22118 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22119 ID3D12GraphicsCommandList4 * This,
22120 REFIID riid,
22121 _COM_Outptr_opt_ void **ppvDevice);
22122
22123 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22124 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22125 ID3D12GraphicsCommandList4 * This);
22126
22127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22128 HRESULT ( STDMETHODCALLTYPE *Close )(
22129 ID3D12GraphicsCommandList4 * This);
22130
22131 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22132 HRESULT ( STDMETHODCALLTYPE *Reset )(
22133 ID3D12GraphicsCommandList4 * This,
22134 _In_ ID3D12CommandAllocator *pAllocator,
22135 _In_opt_ ID3D12PipelineState *pInitialState);
22136
22137 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22138 void ( STDMETHODCALLTYPE *ClearState )(
22139 ID3D12GraphicsCommandList4 * This,
22140 _In_opt_ ID3D12PipelineState *pPipelineState);
22141
22142 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22143 void ( STDMETHODCALLTYPE *DrawInstanced )(
22144 ID3D12GraphicsCommandList4 * This,
22145 _In_ UINT VertexCountPerInstance,
22146 _In_ UINT InstanceCount,
22147 _In_ UINT StartVertexLocation,
22148 _In_ UINT StartInstanceLocation);
22149
22150 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22151 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22152 ID3D12GraphicsCommandList4 * This,
22153 _In_ UINT IndexCountPerInstance,
22154 _In_ UINT InstanceCount,
22155 _In_ UINT StartIndexLocation,
22156 _In_ INT BaseVertexLocation,
22157 _In_ UINT StartInstanceLocation);
22158
22159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22160 void ( STDMETHODCALLTYPE *Dispatch )(
22161 ID3D12GraphicsCommandList4 * This,
22162 _In_ UINT ThreadGroupCountX,
22163 _In_ UINT ThreadGroupCountY,
22164 _In_ UINT ThreadGroupCountZ);
22165
22166 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22167 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22168 ID3D12GraphicsCommandList4 * This,
22169 _In_ ID3D12Resource *pDstBuffer,
22170 UINT64 DstOffset,
22171 _In_ ID3D12Resource *pSrcBuffer,
22172 UINT64 SrcOffset,
22173 UINT64 NumBytes);
22174
22175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22176 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22177 ID3D12GraphicsCommandList4 * This,
22178 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22179 UINT DstX,
22180 UINT DstY,
22181 UINT DstZ,
22182 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22183 _In_opt_ const D3D12_BOX *pSrcBox);
22184
22185 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22186 void ( STDMETHODCALLTYPE *CopyResource )(
22187 ID3D12GraphicsCommandList4 * This,
22188 _In_ ID3D12Resource *pDstResource,
22189 _In_ ID3D12Resource *pSrcResource);
22190
22191 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22192 void ( STDMETHODCALLTYPE *CopyTiles )(
22193 ID3D12GraphicsCommandList4 * This,
22194 _In_ ID3D12Resource *pTiledResource,
22195 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22196 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22197 _In_ ID3D12Resource *pBuffer,
22198 UINT64 BufferStartOffsetInBytes,
22199 D3D12_TILE_COPY_FLAGS Flags);
22200
22201 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22202 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22203 ID3D12GraphicsCommandList4 * This,
22204 _In_ ID3D12Resource *pDstResource,
22205 _In_ UINT DstSubresource,
22206 _In_ ID3D12Resource *pSrcResource,
22207 _In_ UINT SrcSubresource,
22208 _In_ DXGI_FORMAT Format);
22209
22210 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22211 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22212 ID3D12GraphicsCommandList4 * This,
22213 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22214
22215 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22216 void ( STDMETHODCALLTYPE *RSSetViewports )(
22217 ID3D12GraphicsCommandList4 * This,
22218 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22219 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22220
22221 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22222 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22223 ID3D12GraphicsCommandList4 * This,
22224 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22225 _In_reads_( NumRects) const D3D12_RECT *pRects);
22226
22227 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22228 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22229 ID3D12GraphicsCommandList4 * This,
22230 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22231
22232 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22233 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22234 ID3D12GraphicsCommandList4 * This,
22235 _In_ UINT StencilRef);
22236
22237 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22238 void ( STDMETHODCALLTYPE *SetPipelineState )(
22239 ID3D12GraphicsCommandList4 * This,
22240 _In_ ID3D12PipelineState *pPipelineState);
22241
22242 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22243 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22244 ID3D12GraphicsCommandList4 * This,
22245 _In_ UINT NumBarriers,
22246 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22247
22248 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22249 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22250 ID3D12GraphicsCommandList4 * This,
22251 _In_ ID3D12GraphicsCommandList *pCommandList);
22252
22253 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22254 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22255 ID3D12GraphicsCommandList4 * This,
22256 _In_ UINT NumDescriptorHeaps,
22257 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22258
22259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22260 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22261 ID3D12GraphicsCommandList4 * This,
22262 _In_opt_ ID3D12RootSignature *pRootSignature);
22263
22264 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22265 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22266 ID3D12GraphicsCommandList4 * This,
22267 _In_opt_ ID3D12RootSignature *pRootSignature);
22268
22269 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22270 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22271 ID3D12GraphicsCommandList4 * This,
22272 _In_ UINT RootParameterIndex,
22273 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22274
22275 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22276 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22277 ID3D12GraphicsCommandList4 * This,
22278 _In_ UINT RootParameterIndex,
22279 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22280
22281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22282 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22283 ID3D12GraphicsCommandList4 * This,
22284 _In_ UINT RootParameterIndex,
22285 _In_ UINT SrcData,
22286 _In_ UINT DestOffsetIn32BitValues);
22287
22288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22289 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22290 ID3D12GraphicsCommandList4 * This,
22291 _In_ UINT RootParameterIndex,
22292 _In_ UINT SrcData,
22293 _In_ UINT DestOffsetIn32BitValues);
22294
22295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22296 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22297 ID3D12GraphicsCommandList4 * This,
22298 _In_ UINT RootParameterIndex,
22299 _In_ UINT Num32BitValuesToSet,
22300 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22301 _In_ UINT DestOffsetIn32BitValues);
22302
22303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22304 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22305 ID3D12GraphicsCommandList4 * This,
22306 _In_ UINT RootParameterIndex,
22307 _In_ UINT Num32BitValuesToSet,
22308 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22309 _In_ UINT DestOffsetIn32BitValues);
22310
22311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22312 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22313 ID3D12GraphicsCommandList4 * This,
22314 _In_ UINT RootParameterIndex,
22315 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22316
22317 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22318 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22319 ID3D12GraphicsCommandList4 * This,
22320 _In_ UINT RootParameterIndex,
22321 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22322
22323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22324 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22325 ID3D12GraphicsCommandList4 * This,
22326 _In_ UINT RootParameterIndex,
22327 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22328
22329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22330 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22331 ID3D12GraphicsCommandList4 * This,
22332 _In_ UINT RootParameterIndex,
22333 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22334
22335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22336 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22337 ID3D12GraphicsCommandList4 * This,
22338 _In_ UINT RootParameterIndex,
22339 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22340
22341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22342 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22343 ID3D12GraphicsCommandList4 * This,
22344 _In_ UINT RootParameterIndex,
22345 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22346
22347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22348 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22349 ID3D12GraphicsCommandList4 * This,
22350 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22351
22352 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22353 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22354 ID3D12GraphicsCommandList4 * This,
22355 _In_ UINT StartSlot,
22356 _In_ UINT NumViews,
22357 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22358
22359 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22360 void ( STDMETHODCALLTYPE *SOSetTargets )(
22361 ID3D12GraphicsCommandList4 * This,
22362 _In_ UINT StartSlot,
22363 _In_ UINT NumViews,
22364 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22365
22366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22367 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22368 ID3D12GraphicsCommandList4 * This,
22369 _In_ UINT NumRenderTargetDescriptors,
22370 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22371 _In_ BOOL RTsSingleHandleToDescriptorRange,
22372 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22373
22374 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22375 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22376 ID3D12GraphicsCommandList4 * This,
22377 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22378 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22379 _In_ FLOAT Depth,
22380 _In_ UINT8 Stencil,
22381 _In_ UINT NumRects,
22382 _In_reads_(NumRects) const D3D12_RECT *pRects);
22383
22384 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22385 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22386 ID3D12GraphicsCommandList4 * This,
22387 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22388 _In_ const FLOAT ColorRGBA[ 4 ],
22389 _In_ UINT NumRects,
22390 _In_reads_(NumRects) const D3D12_RECT *pRects);
22391
22392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22393 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22394 ID3D12GraphicsCommandList4 * This,
22395 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22396 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22397 _In_ ID3D12Resource *pResource,
22398 _In_ const UINT Values[ 4 ],
22399 _In_ UINT NumRects,
22400 _In_reads_(NumRects) const D3D12_RECT *pRects);
22401
22402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22403 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22404 ID3D12GraphicsCommandList4 * This,
22405 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22406 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22407 _In_ ID3D12Resource *pResource,
22408 _In_ const FLOAT Values[ 4 ],
22409 _In_ UINT NumRects,
22410 _In_reads_(NumRects) const D3D12_RECT *pRects);
22411
22412 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22413 void ( STDMETHODCALLTYPE *DiscardResource )(
22414 ID3D12GraphicsCommandList4 * This,
22415 _In_ ID3D12Resource *pResource,
22416 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22417
22418 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22419 void ( STDMETHODCALLTYPE *BeginQuery )(
22420 ID3D12GraphicsCommandList4 * This,
22421 _In_ ID3D12QueryHeap *pQueryHeap,
22422 _In_ D3D12_QUERY_TYPE Type,
22423 _In_ UINT Index);
22424
22425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22426 void ( STDMETHODCALLTYPE *EndQuery )(
22427 ID3D12GraphicsCommandList4 * This,
22428 _In_ ID3D12QueryHeap *pQueryHeap,
22429 _In_ D3D12_QUERY_TYPE Type,
22430 _In_ UINT Index);
22431
22432 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22433 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22434 ID3D12GraphicsCommandList4 * This,
22435 _In_ ID3D12QueryHeap *pQueryHeap,
22436 _In_ D3D12_QUERY_TYPE Type,
22437 _In_ UINT StartIndex,
22438 _In_ UINT NumQueries,
22439 _In_ ID3D12Resource *pDestinationBuffer,
22440 _In_ UINT64 AlignedDestinationBufferOffset);
22441
22442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22443 void ( STDMETHODCALLTYPE *SetPredication )(
22444 ID3D12GraphicsCommandList4 * This,
22445 _In_opt_ ID3D12Resource *pBuffer,
22446 _In_ UINT64 AlignedBufferOffset,
22447 _In_ D3D12_PREDICATION_OP Operation);
22448
22449 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22450 void ( STDMETHODCALLTYPE *SetMarker )(
22451 ID3D12GraphicsCommandList4 * This,
22452 UINT Metadata,
22453 _In_reads_bytes_opt_(Size) const void *pData,
22454 UINT Size);
22455
22456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22457 void ( STDMETHODCALLTYPE *BeginEvent )(
22458 ID3D12GraphicsCommandList4 * This,
22459 UINT Metadata,
22460 _In_reads_bytes_opt_(Size) const void *pData,
22461 UINT Size);
22462
22463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22464 void ( STDMETHODCALLTYPE *EndEvent )(
22465 ID3D12GraphicsCommandList4 * This);
22466
22467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22468 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22469 ID3D12GraphicsCommandList4 * This,
22470 _In_ ID3D12CommandSignature *pCommandSignature,
22471 _In_ UINT MaxCommandCount,
22472 _In_ ID3D12Resource *pArgumentBuffer,
22473 _In_ UINT64 ArgumentBufferOffset,
22474 _In_opt_ ID3D12Resource *pCountBuffer,
22475 _In_ UINT64 CountBufferOffset);
22476
22477 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22478 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22479 ID3D12GraphicsCommandList4 * This,
22480 _In_ ID3D12Resource *pDstBuffer,
22481 UINT64 DstOffset,
22482 _In_ ID3D12Resource *pSrcBuffer,
22483 UINT64 SrcOffset,
22484 UINT Dependencies,
22485 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22486 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22487
22488 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22489 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22490 ID3D12GraphicsCommandList4 * This,
22491 _In_ ID3D12Resource *pDstBuffer,
22492 UINT64 DstOffset,
22493 _In_ ID3D12Resource *pSrcBuffer,
22494 UINT64 SrcOffset,
22495 UINT Dependencies,
22496 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22497 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22498
22499 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22500 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22501 ID3D12GraphicsCommandList4 * This,
22502 _In_ FLOAT Min,
22503 _In_ FLOAT Max);
22504
22505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22506 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22507 ID3D12GraphicsCommandList4 * This,
22508 _In_ UINT NumSamplesPerPixel,
22509 _In_ UINT NumPixels,
22510 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22511
22512 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22513 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22514 ID3D12GraphicsCommandList4 * This,
22515 _In_ ID3D12Resource *pDstResource,
22516 _In_ UINT DstSubresource,
22517 _In_ UINT DstX,
22518 _In_ UINT DstY,
22519 _In_ ID3D12Resource *pSrcResource,
22520 _In_ UINT SrcSubresource,
22521 _In_opt_ D3D12_RECT *pSrcRect,
22522 _In_ DXGI_FORMAT Format,
22523 _In_ D3D12_RESOLVE_MODE ResolveMode);
22524
22525 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22526 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22527 ID3D12GraphicsCommandList4 * This,
22528 _In_ UINT Mask);
22529
22530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22531 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22532 ID3D12GraphicsCommandList4 * This,
22533 UINT Count,
22534 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22535 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22536
22537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22538 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22539 ID3D12GraphicsCommandList4 * This,
22540 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22541
22542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22543 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22544 ID3D12GraphicsCommandList4 * This,
22545 _In_ UINT NumRenderTargets,
22546 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22547 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22548 D3D12_RENDER_PASS_FLAGS Flags);
22549
22550 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22551 void ( STDMETHODCALLTYPE *EndRenderPass )(
22552 ID3D12GraphicsCommandList4 * This);
22553
22554 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22555 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22556 ID3D12GraphicsCommandList4 * This,
22557 _In_ ID3D12MetaCommand *pMetaCommand,
22558 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22559 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22560
22561 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22562 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22563 ID3D12GraphicsCommandList4 * This,
22564 _In_ ID3D12MetaCommand *pMetaCommand,
22565 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22566 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22567
22568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22569 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22570 ID3D12GraphicsCommandList4 * This,
22571 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22572 _In_ UINT NumPostbuildInfoDescs,
22573 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22574
22575 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22576 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22577 ID3D12GraphicsCommandList4 * This,
22578 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22579 _In_ UINT NumSourceAccelerationStructures,
22580 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22581
22582 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22583 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22584 ID3D12GraphicsCommandList4 * This,
22585 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22586 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22587 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22588
22589 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22590 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22591 ID3D12GraphicsCommandList4 * This,
22592 _In_ ID3D12StateObject *pStateObject);
22593
22594 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22595 void ( STDMETHODCALLTYPE *DispatchRays )(
22596 ID3D12GraphicsCommandList4 * This,
22597 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22598
22599 END_INTERFACE
22600 } ID3D12GraphicsCommandList4Vtbl;
22601
22602 interface ID3D12GraphicsCommandList4
22603 {
22604 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
22605 };
22606
22607
22608
22609#ifdef COBJMACROS
22610
22611
22612#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
22613 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22614
22615#define ID3D12GraphicsCommandList4_AddRef(This) \
22616 ( (This)->lpVtbl -> AddRef(This) )
22617
22618#define ID3D12GraphicsCommandList4_Release(This) \
22619 ( (This)->lpVtbl -> Release(This) )
22620
22621
22622#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
22623 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22624
22625#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
22626 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22627
22628#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
22629 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22630
22631#define ID3D12GraphicsCommandList4_SetName(This,Name) \
22632 ( (This)->lpVtbl -> SetName(This,Name) )
22633
22634
22635#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
22636 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22637
22638
22639#define ID3D12GraphicsCommandList4_GetType(This) \
22640 ( (This)->lpVtbl -> GetType(This) )
22641
22642
22643#define ID3D12GraphicsCommandList4_Close(This) \
22644 ( (This)->lpVtbl -> Close(This) )
22645
22646#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
22647 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22648
22649#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
22650 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22651
22652#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22653 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22654
22655#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22656 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22657
22658#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22659 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22660
22661#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22662 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22663
22664#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22665 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22666
22667#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
22668 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22669
22670#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22671 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22672
22673#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22674 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22675
22676#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
22677 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22678
22679#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
22680 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22681
22682#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
22683 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22684
22685#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
22686 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22687
22688#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
22689 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22690
22691#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
22692 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22693
22694#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
22695 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22696
22697#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
22698 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22699
22700#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22701 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22702
22703#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
22704 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22705
22706#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
22707 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22708
22709#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22710 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22711
22712#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22713 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22714
22715#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22716 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22717
22718#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22719 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22720
22721#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22722 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22723
22724#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22725 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22726
22727#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22728 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22729
22730#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22731 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22732
22733#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22734 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22735
22736#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22737 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22738
22739#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22740 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22741
22742#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22743 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22744
22745#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
22746 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22747
22748#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22749 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22750
22751#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
22752 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22753
22754#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22755 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22756
22757#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22758 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22759
22760#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22761 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22762
22763#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22764 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22765
22766#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22767 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22768
22769#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
22770 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22771
22772#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
22773 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22774
22775#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
22776 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22777
22778#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22779 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22780
22781#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22782 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22783
22784#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
22785 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22786
22787#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
22788 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22789
22790#define ID3D12GraphicsCommandList4_EndEvent(This) \
22791 ( (This)->lpVtbl -> EndEvent(This) )
22792
22793#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22794 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22795
22796
22797#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22798 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22799
22800#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22801 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22802
22803#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
22804 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22805
22806#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22807 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22808
22809#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22810 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22811
22812#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
22813 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22814
22815
22816#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
22817 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22818
22819
22820#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
22821 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22822
22823
22824#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22825 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22826
22827#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
22828 ( (This)->lpVtbl -> EndRenderPass(This) )
22829
22830#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22831 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22832
22833#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22834 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22835
22836#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22837 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22838
22839#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22840 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22841
22842#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22843 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22844
22845#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
22846 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22847
22848#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
22849 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22850
22851#endif /* COBJMACROS */
22852
22853
22854#endif /* C style interface */
22855
22856
22857
22858
22859#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
22860
22861
22862/* interface __MIDL_itf_d3d12_0000_0056 */
22863/* [local] */
22864
22865typedef
22866enum D3D12_SHADER_CACHE_MODE
22867 {
22868 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
22869 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
22870 } D3D12_SHADER_CACHE_MODE;
22871
22872typedef
22873enum D3D12_SHADER_CACHE_FLAGS
22874 {
22875 D3D12_SHADER_CACHE_FLAG_NONE = 0,
22876 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
22877 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
22878 } D3D12_SHADER_CACHE_FLAGS;
22879
22880DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
22881typedef struct D3D12_SHADER_CACHE_SESSION_DESC
22882 {
22883 GUID Identifier;
22884 D3D12_SHADER_CACHE_MODE Mode;
22885 D3D12_SHADER_CACHE_FLAGS Flags;
22886 UINT MaximumInMemoryCacheSizeBytes;
22887 UINT MaximumInMemoryCacheEntries;
22888 UINT MaximumValueFileSizeBytes;
22889 UINT64 Version;
22890 } D3D12_SHADER_CACHE_SESSION_DESC;
22891
22892typedef
22893enum D3D12_BARRIER_LAYOUT
22894 {
22895 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
22896 D3D12_BARRIER_LAYOUT_COMMON = 0,
22897 D3D12_BARRIER_LAYOUT_PRESENT = 0,
22898 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
22899 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
22900 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
22901 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
22902 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
22903 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
22904 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
22905 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
22906 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
22907 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
22908 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
22909 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
22910 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
22911 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
22912 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
22913 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
22914 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
22915 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
22916 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
22917 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
22918 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
22919 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
22920 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
22921 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
22922 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
22923 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
22924 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
22925 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
22926 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
22927 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
22928 } D3D12_BARRIER_LAYOUT;
22929
22930typedef
22931enum D3D12_BARRIER_SYNC
22932 {
22933 D3D12_BARRIER_SYNC_NONE = 0,
22934 D3D12_BARRIER_SYNC_ALL = 0x1,
22935 D3D12_BARRIER_SYNC_DRAW = 0x2,
22936 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
22937 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
22938 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
22939 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
22940 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
22941 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
22942 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
22943 D3D12_BARRIER_SYNC_COPY = 0x200,
22944 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
22945 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
22946 D3D12_BARRIER_SYNC_PREDICATION = 0x800,
22947 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
22948 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
22949 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
22950 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
22951 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
22952 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
22953 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
22954 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
22955 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
22956 D3D12_BARRIER_SYNC_SPLIT = 0x80000000
22957 } D3D12_BARRIER_SYNC;
22958
22959DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
22960typedef
22961enum D3D12_BARRIER_ACCESS
22962 {
22963 D3D12_BARRIER_ACCESS_COMMON = 0,
22964 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
22965 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
22966 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
22967 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
22968 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
22969 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
22970 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
22971 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
22972 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
22973 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
22974 D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
22975 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
22976 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
22977 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
22978 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
22979 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
22980 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
22981 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
22982 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
22983 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
22984 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
22985 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
22986 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
22987 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
22988 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
22989 } D3D12_BARRIER_ACCESS;
22990
22991DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
22992typedef
22993enum D3D12_BARRIER_TYPE
22994 {
22995 D3D12_BARRIER_TYPE_GLOBAL = 0,
22996 D3D12_BARRIER_TYPE_TEXTURE = ( D3D12_BARRIER_TYPE_GLOBAL + 1 ) ,
22997 D3D12_BARRIER_TYPE_BUFFER = ( D3D12_BARRIER_TYPE_TEXTURE + 1 )
22998 } D3D12_BARRIER_TYPE;
22999
23000typedef
23001enum D3D12_TEXTURE_BARRIER_FLAGS
23002 {
23003 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0,
23004 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
23005 } D3D12_TEXTURE_BARRIER_FLAGS;
23006
23007DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
23008typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
23009 {
23010 UINT IndexOrFirstMipLevel;
23011 UINT NumMipLevels;
23012 UINT FirstArraySlice;
23013 UINT NumArraySlices;
23014 UINT FirstPlane;
23015 UINT NumPlanes;
23016 } D3D12_BARRIER_SUBRESOURCE_RANGE;
23017
23018typedef struct D3D12_GLOBAL_BARRIER
23019 {
23020 D3D12_BARRIER_SYNC SyncBefore;
23021 D3D12_BARRIER_SYNC SyncAfter;
23022 D3D12_BARRIER_ACCESS AccessBefore;
23023 D3D12_BARRIER_ACCESS AccessAfter;
23024 } D3D12_GLOBAL_BARRIER;
23025
23026typedef struct D3D12_TEXTURE_BARRIER
23027 {
23028 D3D12_BARRIER_SYNC SyncBefore;
23029 D3D12_BARRIER_SYNC SyncAfter;
23030 D3D12_BARRIER_ACCESS AccessBefore;
23031 D3D12_BARRIER_ACCESS AccessAfter;
23032 D3D12_BARRIER_LAYOUT LayoutBefore;
23033 D3D12_BARRIER_LAYOUT LayoutAfter;
23034 _In_ ID3D12Resource *pResource;
23035 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
23036 D3D12_TEXTURE_BARRIER_FLAGS Flags;
23037 } D3D12_TEXTURE_BARRIER;
23038
23039typedef struct D3D12_BUFFER_BARRIER
23040 {
23041 D3D12_BARRIER_SYNC SyncBefore;
23042 D3D12_BARRIER_SYNC SyncAfter;
23043 D3D12_BARRIER_ACCESS AccessBefore;
23044 D3D12_BARRIER_ACCESS AccessAfter;
23045 _In_ ID3D12Resource *pResource;
23046 UINT64 Offset;
23047 UINT64 Size;
23048 } D3D12_BUFFER_BARRIER;
23049
23050typedef struct D3D12_BARRIER_GROUP
23051 {
23052 D3D12_BARRIER_TYPE Type;
23053 UINT32 NumBarriers;
23054 union
23055 {
23056 _In_reads_(NumBarriers) const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
23057 _In_reads_(NumBarriers) const D3D12_TEXTURE_BARRIER *pTextureBarriers;
23058 _In_reads_(NumBarriers) const D3D12_BUFFER_BARRIER *pBufferBarriers;
23059 } ;
23060 } D3D12_BARRIER_GROUP;
23061
23062
23063
23064extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23065extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23066
23067#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23068#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23069
23070/* interface ID3D12ShaderCacheSession */
23071/* [unique][local][object][uuid] */
23072
23073
23074EXTERN_C const IID IID_ID3D12ShaderCacheSession;
23075
23076#if defined(__cplusplus) && !defined(CINTERFACE)
23077
23078 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
23079 ID3D12ShaderCacheSession : public ID3D12DeviceChild
23080 {
23081 public:
23082 virtual HRESULT STDMETHODCALLTYPE FindValue(
23083 /* [annotation][in] */
23084 _In_reads_bytes_(KeySize) const void *pKey,
23085 UINT KeySize,
23086 /* [annotation][out] */
23087 _Out_writes_bytes_(*pValueSize) void *pValue,
23088 _Inout_ UINT *pValueSize) = 0;
23089
23090 virtual HRESULT STDMETHODCALLTYPE StoreValue(
23091 /* [annotation][in] */
23092 _In_reads_bytes_(KeySize) const void *pKey,
23093 UINT KeySize,
23094 /* [annotation][in] */
23095 _In_reads_bytes_(ValueSize) const void *pValue,
23096 UINT ValueSize) = 0;
23097
23098 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
23099
23100#if defined(_MSC_VER) || !defined(_WIN32)
23101 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
23102#else
23103 virtual D3D12_SHADER_CACHE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
23104 D3D12_SHADER_CACHE_SESSION_DESC * RetVal) = 0;
23105#endif
23106
23107 };
23108
23109
23110#else /* C style interface */
23111
23112 typedef struct ID3D12ShaderCacheSessionVtbl
23113 {
23114 BEGIN_INTERFACE
23115
23116 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23117 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23118 ID3D12ShaderCacheSession * This,
23119 REFIID riid,
23120 _COM_Outptr_ void **ppvObject);
23121
23122 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23123 ULONG ( STDMETHODCALLTYPE *AddRef )(
23124 ID3D12ShaderCacheSession * This);
23125
23126 DECLSPEC_XFGVIRT(IUnknown, Release)
23127 ULONG ( STDMETHODCALLTYPE *Release )(
23128 ID3D12ShaderCacheSession * This);
23129
23130 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23131 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23132 ID3D12ShaderCacheSession * This,
23133 _In_ REFGUID guid,
23134 _Inout_ UINT *pDataSize,
23135 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23136
23137 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23138 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23139 ID3D12ShaderCacheSession * This,
23140 _In_ REFGUID guid,
23141 _In_ UINT DataSize,
23142 _In_reads_bytes_opt_( DataSize ) const void *pData);
23143
23144 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23145 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23146 ID3D12ShaderCacheSession * This,
23147 _In_ REFGUID guid,
23148 _In_opt_ const IUnknown *pData);
23149
23150 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23151 HRESULT ( STDMETHODCALLTYPE *SetName )(
23152 ID3D12ShaderCacheSession * This,
23153 _In_z_ LPCWSTR Name);
23154
23155 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
23156 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
23157 ID3D12ShaderCacheSession * This,
23158 REFIID riid,
23159 _COM_Outptr_opt_ void **ppvDevice);
23160
23161 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
23162 HRESULT ( STDMETHODCALLTYPE *FindValue )(
23163 ID3D12ShaderCacheSession * This,
23164 /* [annotation][in] */
23165 _In_reads_bytes_(KeySize) const void *pKey,
23166 UINT KeySize,
23167 /* [annotation][out] */
23168 _Out_writes_bytes_(*pValueSize) void *pValue,
23169 _Inout_ UINT *pValueSize);
23170
23171 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
23172 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
23173 ID3D12ShaderCacheSession * This,
23174 /* [annotation][in] */
23175 _In_reads_bytes_(KeySize) const void *pKey,
23176 UINT KeySize,
23177 /* [annotation][in] */
23178 _In_reads_bytes_(ValueSize) const void *pValue,
23179 UINT ValueSize);
23180
23181 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
23182 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
23183 ID3D12ShaderCacheSession * This);
23184
23185 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
23186#if !defined(_WIN32)
23187 D3D12_SHADER_CACHE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
23188 ID3D12ShaderCacheSession * This);
23189
23190#else
23191 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
23192 ID3D12ShaderCacheSession * This,
23193 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
23194
23195#endif
23196
23197 END_INTERFACE
23198 } ID3D12ShaderCacheSessionVtbl;
23199
23200 interface ID3D12ShaderCacheSession
23201 {
23202 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
23203 };
23204
23205
23206
23207#ifdef COBJMACROS
23208
23209
23210#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
23211 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23212
23213#define ID3D12ShaderCacheSession_AddRef(This) \
23214 ( (This)->lpVtbl -> AddRef(This) )
23215
23216#define ID3D12ShaderCacheSession_Release(This) \
23217 ( (This)->lpVtbl -> Release(This) )
23218
23219
23220#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
23221 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23222
23223#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
23224 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23225
23226#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
23227 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23228
23229#define ID3D12ShaderCacheSession_SetName(This,Name) \
23230 ( (This)->lpVtbl -> SetName(This,Name) )
23231
23232
23233#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
23234 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
23235
23236
23237#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
23238 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
23239
23240#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
23241 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
23242
23243#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
23244 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
23245#if !defined(_WIN32)
23246
23247#define ID3D12ShaderCacheSession_GetDesc(This) \
23248 ( (This)->lpVtbl -> GetDesc(This) )
23249#else
23250#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
23251 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
23252#endif
23253
23254#endif /* COBJMACROS */
23255
23256
23257#endif /* C style interface */
23258
23259
23260
23261
23262#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
23263
23264
23265/* interface __MIDL_itf_d3d12_0000_0057 */
23266/* [local] */
23267
23268typedef
23269enum D3D12_SHADER_CACHE_KIND_FLAGS
23270 {
23271 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
23272 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
23273 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
23274 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
23275 } D3D12_SHADER_CACHE_KIND_FLAGS;
23276
23277DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
23278typedef
23279enum D3D12_SHADER_CACHE_CONTROL_FLAGS
23280 {
23281 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
23282 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
23283 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
23284 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
23285
23286DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
23287
23288
23289extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
23290extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
23291
23292#ifndef __ID3D12Device9_INTERFACE_DEFINED__
23293#define __ID3D12Device9_INTERFACE_DEFINED__
23294
23295/* interface ID3D12Device9 */
23296/* [unique][local][object][uuid] */
23297
23298
23299EXTERN_C const IID IID_ID3D12Device9;
23300
23301#if defined(__cplusplus) && !defined(CINTERFACE)
23302
23303 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
23304 ID3D12Device9 : public ID3D12Device8
23305 {
23306 public:
23307 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
23308 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23309 REFIID riid,
23310 _COM_Outptr_opt_ void **ppvSession) = 0;
23311
23312 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
23313 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23314 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
23315
23316 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
23317 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23318 REFIID CreatorID,
23319 REFIID riid,
23320 _COM_Outptr_ void **ppCommandQueue) = 0;
23321
23322 };
23323
23324
23325#else /* C style interface */
23326
23327 typedef struct ID3D12Device9Vtbl
23328 {
23329 BEGIN_INTERFACE
23330
23331 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23332 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23333 ID3D12Device9 * This,
23334 REFIID riid,
23335 _COM_Outptr_ void **ppvObject);
23336
23337 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23338 ULONG ( STDMETHODCALLTYPE *AddRef )(
23339 ID3D12Device9 * This);
23340
23341 DECLSPEC_XFGVIRT(IUnknown, Release)
23342 ULONG ( STDMETHODCALLTYPE *Release )(
23343 ID3D12Device9 * This);
23344
23345 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23346 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23347 ID3D12Device9 * This,
23348 _In_ REFGUID guid,
23349 _Inout_ UINT *pDataSize,
23350 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23351
23352 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23353 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23354 ID3D12Device9 * This,
23355 _In_ REFGUID guid,
23356 _In_ UINT DataSize,
23357 _In_reads_bytes_opt_( DataSize ) const void *pData);
23358
23359 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23360 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23361 ID3D12Device9 * This,
23362 _In_ REFGUID guid,
23363 _In_opt_ const IUnknown *pData);
23364
23365 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23366 HRESULT ( STDMETHODCALLTYPE *SetName )(
23367 ID3D12Device9 * This,
23368 _In_z_ LPCWSTR Name);
23369
23370 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
23371 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
23372 ID3D12Device9 * This);
23373
23374 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
23375 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
23376 ID3D12Device9 * This,
23377 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23378 REFIID riid,
23379 _COM_Outptr_ void **ppCommandQueue);
23380
23381 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
23382 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
23383 ID3D12Device9 * This,
23384 _In_ D3D12_COMMAND_LIST_TYPE type,
23385 REFIID riid,
23386 _COM_Outptr_ void **ppCommandAllocator);
23387
23388 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
23389 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
23390 ID3D12Device9 * This,
23391 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
23392 REFIID riid,
23393 _COM_Outptr_ void **ppPipelineState);
23394
23395 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
23396 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
23397 ID3D12Device9 * This,
23398 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
23399 REFIID riid,
23400 _COM_Outptr_ void **ppPipelineState);
23401
23402 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
23403 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
23404 ID3D12Device9 * This,
23405 _In_ UINT nodeMask,
23406 _In_ D3D12_COMMAND_LIST_TYPE type,
23407 _In_ ID3D12CommandAllocator *pCommandAllocator,
23408 _In_opt_ ID3D12PipelineState *pInitialState,
23409 REFIID riid,
23410 _COM_Outptr_ void **ppCommandList);
23411
23412 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
23413 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
23414 ID3D12Device9 * This,
23415 D3D12_FEATURE Feature,
23416 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
23417 UINT FeatureSupportDataSize);
23418
23419 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
23420 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
23421 ID3D12Device9 * This,
23422 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
23423 REFIID riid,
23424 _COM_Outptr_ void **ppvHeap);
23425
23426 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
23427 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
23428 ID3D12Device9 * This,
23429 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
23430
23431 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
23432 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
23433 ID3D12Device9 * This,
23434 _In_ UINT nodeMask,
23435 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
23436 _In_ SIZE_T blobLengthInBytes,
23437 REFIID riid,
23438 _COM_Outptr_ void **ppvRootSignature);
23439
23440 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
23441 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
23442 ID3D12Device9 * This,
23443 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
23444 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23445
23446 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
23447 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
23448 ID3D12Device9 * This,
23449 _In_opt_ ID3D12Resource *pResource,
23450 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
23451 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23452
23453 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
23454 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
23455 ID3D12Device9 * This,
23456 _In_opt_ ID3D12Resource *pResource,
23457 _In_opt_ ID3D12Resource *pCounterResource,
23458 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
23459 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23460
23461 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
23462 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
23463 ID3D12Device9 * This,
23464 _In_opt_ ID3D12Resource *pResource,
23465 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
23466 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23467
23468 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
23469 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
23470 ID3D12Device9 * This,
23471 _In_opt_ ID3D12Resource *pResource,
23472 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
23473 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23474
23475 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
23476 void ( STDMETHODCALLTYPE *CreateSampler )(
23477 ID3D12Device9 * This,
23478 _In_ const D3D12_SAMPLER_DESC *pDesc,
23479 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23480
23481 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
23482 void ( STDMETHODCALLTYPE *CopyDescriptors )(
23483 ID3D12Device9 * This,
23484 _In_ UINT NumDestDescriptorRanges,
23485 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
23486 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
23487 _In_ UINT NumSrcDescriptorRanges,
23488 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
23489 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
23490 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23491
23492 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
23493 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
23494 ID3D12Device9 * This,
23495 _In_ UINT NumDescriptors,
23496 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
23497 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
23498 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23499
23500 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
23501#if !defined(_WIN32)
23502 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23503 ID3D12Device9 * This,
23504 _In_ UINT visibleMask,
23505 _In_ UINT numResourceDescs,
23506 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23507
23508#else
23509 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23510 ID3D12Device9 * This,
23511 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23512 _In_ UINT visibleMask,
23513 _In_ UINT numResourceDescs,
23514 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23515
23516#endif
23517
23518 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
23519#if !defined(_WIN32)
23520 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23521 ID3D12Device9 * This,
23522 _In_ UINT nodeMask,
23523 D3D12_HEAP_TYPE heapType);
23524
23525#else
23526 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23527 ID3D12Device9 * This,
23528 D3D12_HEAP_PROPERTIES * RetVal,
23529 _In_ UINT nodeMask,
23530 D3D12_HEAP_TYPE heapType);
23531
23532#endif
23533
23534 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
23535 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
23536 ID3D12Device9 * This,
23537 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23538 D3D12_HEAP_FLAGS HeapFlags,
23539 _In_ const D3D12_RESOURCE_DESC *pDesc,
23540 D3D12_RESOURCE_STATES InitialResourceState,
23541 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23542 REFIID riidResource,
23543 _COM_Outptr_opt_ void **ppvResource);
23544
23545 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
23546 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
23547 ID3D12Device9 * This,
23548 _In_ const D3D12_HEAP_DESC *pDesc,
23549 REFIID riid,
23550 _COM_Outptr_opt_ void **ppvHeap);
23551
23552 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
23553 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
23554 ID3D12Device9 * This,
23555 _In_ ID3D12Heap *pHeap,
23556 UINT64 HeapOffset,
23557 _In_ const D3D12_RESOURCE_DESC *pDesc,
23558 D3D12_RESOURCE_STATES InitialState,
23559 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23560 REFIID riid,
23561 _COM_Outptr_opt_ void **ppvResource);
23562
23563 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
23564 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
23565 ID3D12Device9 * This,
23566 _In_ const D3D12_RESOURCE_DESC *pDesc,
23567 D3D12_RESOURCE_STATES InitialState,
23568 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23569 REFIID riid,
23570 _COM_Outptr_opt_ void **ppvResource);
23571
23572 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
23573 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
23574 ID3D12Device9 * This,
23575 _In_ ID3D12DeviceChild *pObject,
23576 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
23577 DWORD Access,
23578 _In_opt_ LPCWSTR Name,
23579 _Out_ HANDLE *pHandle);
23580
23581 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
23582 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
23583 ID3D12Device9 * This,
23584 _In_ HANDLE NTHandle,
23585 REFIID riid,
23586 _COM_Outptr_opt_ void **ppvObj);
23587
23588 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
23589 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
23590 ID3D12Device9 * This,
23591 _In_ LPCWSTR Name,
23592 DWORD Access,
23593 /* [annotation][out] */
23594 _Out_ HANDLE *pNTHandle);
23595
23596 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
23597 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
23598 ID3D12Device9 * This,
23599 UINT NumObjects,
23600 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23601
23602 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
23603 HRESULT ( STDMETHODCALLTYPE *Evict )(
23604 ID3D12Device9 * This,
23605 UINT NumObjects,
23606 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23607
23608 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
23609 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
23610 ID3D12Device9 * This,
23611 UINT64 InitialValue,
23612 D3D12_FENCE_FLAGS Flags,
23613 REFIID riid,
23614 _COM_Outptr_ void **ppFence);
23615
23616 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
23617 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
23618 ID3D12Device9 * This);
23619
23620 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
23621 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
23622 ID3D12Device9 * This,
23623 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
23624 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23625 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23626 UINT64 BaseOffset,
23627 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23628 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23629 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23630 _Out_opt_ UINT64 *pTotalBytes);
23631
23632 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
23633 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
23634 ID3D12Device9 * This,
23635 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
23636 REFIID riid,
23637 _COM_Outptr_opt_ void **ppvHeap);
23638
23639 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
23640 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
23641 ID3D12Device9 * This,
23642 BOOL Enable);
23643
23644 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
23645 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
23646 ID3D12Device9 * This,
23647 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
23648 _In_opt_ ID3D12RootSignature *pRootSignature,
23649 REFIID riid,
23650 _COM_Outptr_opt_ void **ppvCommandSignature);
23651
23652 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
23653 void ( STDMETHODCALLTYPE *GetResourceTiling )(
23654 ID3D12Device9 * This,
23655 _In_ ID3D12Resource *pTiledResource,
23656 _Out_opt_ UINT *pNumTilesForEntireResource,
23657 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
23658 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
23659 _Inout_opt_ UINT *pNumSubresourceTilings,
23660 _In_ UINT FirstSubresourceTilingToGet,
23661 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
23662
23663 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
23664#if !defined(_WIN32)
23665 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
23666 ID3D12Device9 * This);
23667
23668#else
23669 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
23670 ID3D12Device9 * This,
23671 LUID * RetVal);
23672
23673#endif
23674
23675 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
23676 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
23677 ID3D12Device9 * This,
23678 _In_reads_(BlobLength) const void *pLibraryBlob,
23679 SIZE_T BlobLength,
23680 REFIID riid,
23681 _COM_Outptr_ void **ppPipelineLibrary);
23682
23683 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
23684 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
23685 ID3D12Device9 * This,
23686 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
23687 _In_reads_(NumFences) const UINT64 *pFenceValues,
23688 UINT NumFences,
23689 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
23690 HANDLE hEvent);
23691
23692 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
23693 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
23694 ID3D12Device9 * This,
23695 UINT NumObjects,
23696 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23697 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
23698
23699 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
23700 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
23701 ID3D12Device9 * This,
23702 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
23703 REFIID riid,
23704 _COM_Outptr_ void **ppPipelineState);
23705
23706 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
23707 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
23708 ID3D12Device9 * This,
23709 _In_ const void *pAddress,
23710 REFIID riid,
23711 _COM_Outptr_ void **ppvHeap);
23712
23713 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
23714 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
23715 ID3D12Device9 * This,
23716 _In_ HANDLE hFileMapping,
23717 REFIID riid,
23718 _COM_Outptr_ void **ppvHeap);
23719
23720 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
23721 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
23722 ID3D12Device9 * This,
23723 D3D12_RESIDENCY_FLAGS Flags,
23724 UINT NumObjects,
23725 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23726 _In_ ID3D12Fence *pFenceToSignal,
23727 UINT64 FenceValueToSignal);
23728
23729 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
23730 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
23731 ID3D12Device9 * This,
23732 _In_ UINT nodeMask,
23733 _In_ D3D12_COMMAND_LIST_TYPE type,
23734 _In_ D3D12_COMMAND_LIST_FLAGS flags,
23735 REFIID riid,
23736 _COM_Outptr_ void **ppCommandList);
23737
23738 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
23739 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
23740 ID3D12Device9 * This,
23741 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
23742 _In_ REFIID riid,
23743 _COM_Outptr_ void **ppSession);
23744
23745 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
23746 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
23747 ID3D12Device9 * This,
23748 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23749 D3D12_HEAP_FLAGS HeapFlags,
23750 _In_ const D3D12_RESOURCE_DESC *pDesc,
23751 D3D12_RESOURCE_STATES InitialResourceState,
23752 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23753 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23754 REFIID riidResource,
23755 _COM_Outptr_opt_ void **ppvResource);
23756
23757 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
23758 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
23759 ID3D12Device9 * This,
23760 _In_ const D3D12_HEAP_DESC *pDesc,
23761 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23762 REFIID riid,
23763 _COM_Outptr_opt_ void **ppvHeap);
23764
23765 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
23766 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
23767 ID3D12Device9 * This,
23768 _In_ const D3D12_RESOURCE_DESC *pDesc,
23769 D3D12_RESOURCE_STATES InitialState,
23770 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23771 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23772 REFIID riid,
23773 _COM_Outptr_opt_ void **ppvResource);
23774
23775 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
23776#if !defined(_WIN32)
23777 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23778 ID3D12Device9 * This,
23779 UINT visibleMask,
23780 UINT numResourceDescs,
23781 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23782 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23783
23784#else
23785 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23786 ID3D12Device9 * This,
23787 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23788 UINT visibleMask,
23789 UINT numResourceDescs,
23790 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23791 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23792
23793#endif
23794
23795 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
23796 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
23797 ID3D12Device9 * This,
23798 _In_ ID3D12LifetimeOwner *pOwner,
23799 REFIID riid,
23800 _COM_Outptr_ void **ppvTracker);
23801
23802 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
23803 void ( STDMETHODCALLTYPE *RemoveDevice )(
23804 ID3D12Device9 * This);
23805
23806 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
23807 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
23808 ID3D12Device9 * This,
23809 _Inout_ UINT *pNumMetaCommands,
23810 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
23811
23812 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
23813 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
23814 ID3D12Device9 * This,
23815 _In_ REFGUID CommandId,
23816 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
23817 _Out_opt_ UINT *pTotalStructureSizeInBytes,
23818 _Inout_ UINT *pParameterCount,
23819 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
23820
23821 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
23822 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
23823 ID3D12Device9 * This,
23824 _In_ REFGUID CommandId,
23825 _In_ UINT NodeMask,
23826 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
23827 _In_ SIZE_T CreationParametersDataSizeInBytes,
23828 REFIID riid,
23829 _COM_Outptr_ void **ppMetaCommand);
23830
23831 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
23832 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
23833 ID3D12Device9 * This,
23834 const D3D12_STATE_OBJECT_DESC *pDesc,
23835 REFIID riid,
23836 _COM_Outptr_ void **ppStateObject);
23837
23838 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
23839 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
23840 ID3D12Device9 * This,
23841 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
23842 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
23843
23844 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
23845 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
23846 ID3D12Device9 * This,
23847 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
23848 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
23849
23850 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
23851 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
23852 ID3D12Device9 * This,
23853 D3D12_BACKGROUND_PROCESSING_MODE Mode,
23854 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
23855 _In_opt_ HANDLE hEventToSignalUponCompletion,
23856 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
23857
23858 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
23859 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
23860 ID3D12Device9 * This,
23861 const D3D12_STATE_OBJECT_DESC *pAddition,
23862 ID3D12StateObject *pStateObjectToGrowFrom,
23863 REFIID riid,
23864 _COM_Outptr_ void **ppNewStateObject);
23865
23866 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
23867 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
23868 ID3D12Device9 * This,
23869 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
23870 _In_ REFIID riid,
23871 _COM_Outptr_ void **ppSession);
23872
23873 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
23874#if !defined(_WIN32)
23875 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23876 ID3D12Device9 * This,
23877 UINT visibleMask,
23878 UINT numResourceDescs,
23879 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23880 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23881
23882#else
23883 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23884 ID3D12Device9 * This,
23885 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23886 UINT visibleMask,
23887 UINT numResourceDescs,
23888 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23889 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23890
23891#endif
23892
23893 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
23894 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
23895 ID3D12Device9 * This,
23896 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23897 D3D12_HEAP_FLAGS HeapFlags,
23898 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23899 D3D12_RESOURCE_STATES InitialResourceState,
23900 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23901 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23902 REFIID riidResource,
23903 _COM_Outptr_opt_ void **ppvResource);
23904
23905 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
23906 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
23907 ID3D12Device9 * This,
23908 _In_ ID3D12Heap *pHeap,
23909 UINT64 HeapOffset,
23910 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23911 D3D12_RESOURCE_STATES InitialState,
23912 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23913 REFIID riid,
23914 _COM_Outptr_opt_ void **ppvResource);
23915
23916 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
23917 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
23918 ID3D12Device9 * This,
23919 _In_opt_ ID3D12Resource *pTargetedResource,
23920 _In_opt_ ID3D12Resource *pFeedbackResource,
23921 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23922
23923 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
23924 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
23925 ID3D12Device9 * This,
23926 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
23927 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23928 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23929 UINT64 BaseOffset,
23930 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23931 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23932 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23933 _Out_opt_ UINT64 *pTotalBytes);
23934
23935 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
23936 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
23937 ID3D12Device9 * This,
23938 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23939 REFIID riid,
23940 _COM_Outptr_opt_ void **ppvSession);
23941
23942 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
23943 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
23944 ID3D12Device9 * This,
23945 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23946 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
23947
23948 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
23949 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
23950 ID3D12Device9 * This,
23951 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23952 REFIID CreatorID,
23953 REFIID riid,
23954 _COM_Outptr_ void **ppCommandQueue);
23955
23956 END_INTERFACE
23957 } ID3D12Device9Vtbl;
23958
23959 interface ID3D12Device9
23960 {
23961 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
23962 };
23963
23964
23965
23966#ifdef COBJMACROS
23967
23968
23969#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
23970 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23971
23972#define ID3D12Device9_AddRef(This) \
23973 ( (This)->lpVtbl -> AddRef(This) )
23974
23975#define ID3D12Device9_Release(This) \
23976 ( (This)->lpVtbl -> Release(This) )
23977
23978
23979#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
23980 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23981
23982#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
23983 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23984
23985#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
23986 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23987
23988#define ID3D12Device9_SetName(This,Name) \
23989 ( (This)->lpVtbl -> SetName(This,Name) )
23990
23991
23992#define ID3D12Device9_GetNodeCount(This) \
23993 ( (This)->lpVtbl -> GetNodeCount(This) )
23994
23995#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
23996 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
23997
23998#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
23999 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
24000
24001#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
24002 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
24003
24004#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
24005 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
24006
24007#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
24008 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
24009
24010#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
24011 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
24012
24013#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
24014 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
24015
24016#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
24017 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
24018
24019#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
24020 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
24021
24022#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
24023 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
24024
24025#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
24026 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
24027
24028#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
24029 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
24030
24031#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
24032 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
24033
24034#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
24035 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
24036
24037#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
24038 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
24039
24040#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
24041 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
24042
24043#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
24044 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
24045#if !defined(_WIN32)
24046
24047#define ID3D12Device9_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
24048 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
24049#else
24050#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
24051 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
24052#endif
24053#if !defined(_WIN32)
24054
24055#define ID3D12Device9_GetCustomHeapProperties(This,nodeMask,heapType) \
24056 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
24057#else
24058#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
24059 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
24060#endif
24061
24062#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
24063 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
24064
24065#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
24066 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
24067
24068#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24069 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24070
24071#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24072 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24073
24074#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
24075 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
24076
24077#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
24078 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
24079
24080#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
24081 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
24082
24083#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
24084 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
24085
24086#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
24087 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
24088
24089#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
24090 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
24091
24092#define ID3D12Device9_GetDeviceRemovedReason(This) \
24093 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
24094
24095#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24096 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24097
24098#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
24099 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
24100
24101#define ID3D12Device9_SetStablePowerState(This,Enable) \
24102 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
24103
24104#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
24105 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
24106
24107#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
24108 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
24109#if !defined(_WIN32)
24110
24111#define ID3D12Device9_GetAdapterLuid(This) \
24112 ( (This)->lpVtbl -> GetAdapterLuid(This) )
24113#else
24114#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
24115 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
24116#endif
24117
24118
24119#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
24120 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
24121
24122#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
24123 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
24124
24125#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
24126 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
24127
24128
24129#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
24130 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
24131
24132
24133#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
24134 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
24135
24136#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
24137 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
24138
24139#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
24140 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
24141
24142
24143#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
24144 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
24145
24146#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
24147 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
24148
24149#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24150 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24151
24152#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
24153 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
24154
24155#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
24156 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
24157#if !defined(_WIN32)
24158
24159#define ID3D12Device9_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24160 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24161#else
24162#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24163 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24164#endif
24165
24166
24167#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
24168 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
24169
24170#define ID3D12Device9_RemoveDevice(This) \
24171 ( (This)->lpVtbl -> RemoveDevice(This) )
24172
24173#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
24174 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
24175
24176#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
24177 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
24178
24179#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
24180 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
24181
24182#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
24183 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
24184
24185#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
24186 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
24187
24188#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
24189 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
24190
24191
24192#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
24193 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
24194
24195
24196#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
24197 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
24198
24199#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
24200 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
24201
24202#if !defined(_WIN32)
24203
24204#define ID3D12Device9_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24205 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24206#else
24207#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24208 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24209#endif
24210
24211#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24212 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24213
24214#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24215 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24216
24217#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
24218 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
24219
24220#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24221 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24222
24223
24224#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
24225 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
24226
24227#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
24228 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
24229
24230#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
24231 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
24232
24233#endif /* COBJMACROS */
24234
24235
24236#endif /* C style interface */
24237
24238
24239
24240
24241#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
24242
24243
24244#ifndef __ID3D12Device10_INTERFACE_DEFINED__
24245#define __ID3D12Device10_INTERFACE_DEFINED__
24246
24247/* interface ID3D12Device10 */
24248/* [unique][local][object][uuid] */
24249
24250
24251EXTERN_C const IID IID_ID3D12Device10;
24252
24253#if defined(__cplusplus) && !defined(CINTERFACE)
24254
24255 MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
24256 ID3D12Device10 : public ID3D12Device9
24257 {
24258 public:
24259 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
24260 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24261 D3D12_HEAP_FLAGS HeapFlags,
24262 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24263 D3D12_BARRIER_LAYOUT InitialLayout,
24264 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24265 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24266 UINT32 NumCastableFormats,
24267 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24268 REFIID riidResource,
24269 _COM_Outptr_opt_ void **ppvResource) = 0;
24270
24271 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
24272 _In_ ID3D12Heap *pHeap,
24273 UINT64 HeapOffset,
24274 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24275 D3D12_BARRIER_LAYOUT InitialLayout,
24276 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24277 UINT32 NumCastableFormats,
24278 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24279 REFIID riid,
24280 _COM_Outptr_opt_ void **ppvResource) = 0;
24281
24282 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
24283 _In_ const D3D12_RESOURCE_DESC *pDesc,
24284 D3D12_BARRIER_LAYOUT InitialLayout,
24285 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24286 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24287 UINT32 NumCastableFormats,
24288 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24289 REFIID riid,
24290 _COM_Outptr_opt_ void **ppvResource) = 0;
24291
24292 };
24293
24294
24295#else /* C style interface */
24296
24297 typedef struct ID3D12Device10Vtbl
24298 {
24299 BEGIN_INTERFACE
24300
24301 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
24302 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
24303 ID3D12Device10 * This,
24304 REFIID riid,
24305 _COM_Outptr_ void **ppvObject);
24306
24307 DECLSPEC_XFGVIRT(IUnknown, AddRef)
24308 ULONG ( STDMETHODCALLTYPE *AddRef )(
24309 ID3D12Device10 * This);
24310
24311 DECLSPEC_XFGVIRT(IUnknown, Release)
24312 ULONG ( STDMETHODCALLTYPE *Release )(
24313 ID3D12Device10 * This);
24314
24315 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
24316 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
24317 ID3D12Device10 * This,
24318 _In_ REFGUID guid,
24319 _Inout_ UINT *pDataSize,
24320 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
24321
24322 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
24323 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
24324 ID3D12Device10 * This,
24325 _In_ REFGUID guid,
24326 _In_ UINT DataSize,
24327 _In_reads_bytes_opt_( DataSize ) const void *pData);
24328
24329 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
24330 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
24331 ID3D12Device10 * This,
24332 _In_ REFGUID guid,
24333 _In_opt_ const IUnknown *pData);
24334
24335 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
24336 HRESULT ( STDMETHODCALLTYPE *SetName )(
24337 ID3D12Device10 * This,
24338 _In_z_ LPCWSTR Name);
24339
24340 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
24341 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
24342 ID3D12Device10 * This);
24343
24344 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
24345 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
24346 ID3D12Device10 * This,
24347 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24348 REFIID riid,
24349 _COM_Outptr_ void **ppCommandQueue);
24350
24351 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
24352 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
24353 ID3D12Device10 * This,
24354 _In_ D3D12_COMMAND_LIST_TYPE type,
24355 REFIID riid,
24356 _COM_Outptr_ void **ppCommandAllocator);
24357
24358 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
24359 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
24360 ID3D12Device10 * This,
24361 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
24362 REFIID riid,
24363 _COM_Outptr_ void **ppPipelineState);
24364
24365 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
24366 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
24367 ID3D12Device10 * This,
24368 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
24369 REFIID riid,
24370 _COM_Outptr_ void **ppPipelineState);
24371
24372 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
24373 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
24374 ID3D12Device10 * This,
24375 _In_ UINT nodeMask,
24376 _In_ D3D12_COMMAND_LIST_TYPE type,
24377 _In_ ID3D12CommandAllocator *pCommandAllocator,
24378 _In_opt_ ID3D12PipelineState *pInitialState,
24379 REFIID riid,
24380 _COM_Outptr_ void **ppCommandList);
24381
24382 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
24383 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
24384 ID3D12Device10 * This,
24385 D3D12_FEATURE Feature,
24386 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
24387 UINT FeatureSupportDataSize);
24388
24389 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
24390 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
24391 ID3D12Device10 * This,
24392 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
24393 REFIID riid,
24394 _COM_Outptr_ void **ppvHeap);
24395
24396 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
24397 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
24398 ID3D12Device10 * This,
24399 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
24400
24401 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
24402 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
24403 ID3D12Device10 * This,
24404 _In_ UINT nodeMask,
24405 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
24406 _In_ SIZE_T blobLengthInBytes,
24407 REFIID riid,
24408 _COM_Outptr_ void **ppvRootSignature);
24409
24410 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
24411 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
24412 ID3D12Device10 * This,
24413 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
24414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24415
24416 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
24417 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
24418 ID3D12Device10 * This,
24419 _In_opt_ ID3D12Resource *pResource,
24420 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
24421 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24422
24423 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
24424 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
24425 ID3D12Device10 * This,
24426 _In_opt_ ID3D12Resource *pResource,
24427 _In_opt_ ID3D12Resource *pCounterResource,
24428 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
24429 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24430
24431 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
24432 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
24433 ID3D12Device10 * This,
24434 _In_opt_ ID3D12Resource *pResource,
24435 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
24436 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24437
24438 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
24439 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
24440 ID3D12Device10 * This,
24441 _In_opt_ ID3D12Resource *pResource,
24442 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
24443 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24444
24445 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
24446 void ( STDMETHODCALLTYPE *CreateSampler )(
24447 ID3D12Device10 * This,
24448 _In_ const D3D12_SAMPLER_DESC *pDesc,
24449 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24450
24451 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
24452 void ( STDMETHODCALLTYPE *CopyDescriptors )(
24453 ID3D12Device10 * This,
24454 _In_ UINT NumDestDescriptorRanges,
24455 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
24456 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
24457 _In_ UINT NumSrcDescriptorRanges,
24458 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
24459 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
24460 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24461
24462 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
24463 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
24464 ID3D12Device10 * This,
24465 _In_ UINT NumDescriptors,
24466 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
24467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
24468 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24469
24470 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
24471#if !defined(_WIN32)
24472 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24473 ID3D12Device10 * This,
24474 _In_ UINT visibleMask,
24475 _In_ UINT numResourceDescs,
24476 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24477
24478#else
24479 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24480 ID3D12Device10 * This,
24481 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24482 _In_ UINT visibleMask,
24483 _In_ UINT numResourceDescs,
24484 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24485
24486#endif
24487
24488 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
24489#if !defined(_WIN32)
24490 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24491 ID3D12Device10 * This,
24492 _In_ UINT nodeMask,
24493 D3D12_HEAP_TYPE heapType);
24494
24495#else
24496 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24497 ID3D12Device10 * This,
24498 D3D12_HEAP_PROPERTIES * RetVal,
24499 _In_ UINT nodeMask,
24500 D3D12_HEAP_TYPE heapType);
24501
24502#endif
24503
24504 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
24505 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
24506 ID3D12Device10 * This,
24507 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24508 D3D12_HEAP_FLAGS HeapFlags,
24509 _In_ const D3D12_RESOURCE_DESC *pDesc,
24510 D3D12_RESOURCE_STATES InitialResourceState,
24511 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24512 REFIID riidResource,
24513 _COM_Outptr_opt_ void **ppvResource);
24514
24515 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
24516 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
24517 ID3D12Device10 * This,
24518 _In_ const D3D12_HEAP_DESC *pDesc,
24519 REFIID riid,
24520 _COM_Outptr_opt_ void **ppvHeap);
24521
24522 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
24523 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
24524 ID3D12Device10 * This,
24525 _In_ ID3D12Heap *pHeap,
24526 UINT64 HeapOffset,
24527 _In_ const D3D12_RESOURCE_DESC *pDesc,
24528 D3D12_RESOURCE_STATES InitialState,
24529 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24530 REFIID riid,
24531 _COM_Outptr_opt_ void **ppvResource);
24532
24533 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
24534 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
24535 ID3D12Device10 * This,
24536 _In_ const D3D12_RESOURCE_DESC *pDesc,
24537 D3D12_RESOURCE_STATES InitialState,
24538 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24539 REFIID riid,
24540 _COM_Outptr_opt_ void **ppvResource);
24541
24542 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
24543 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
24544 ID3D12Device10 * This,
24545 _In_ ID3D12DeviceChild *pObject,
24546 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
24547 DWORD Access,
24548 _In_opt_ LPCWSTR Name,
24549 _Out_ HANDLE *pHandle);
24550
24551 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
24552 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
24553 ID3D12Device10 * This,
24554 _In_ HANDLE NTHandle,
24555 REFIID riid,
24556 _COM_Outptr_opt_ void **ppvObj);
24557
24558 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
24559 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
24560 ID3D12Device10 * This,
24561 _In_ LPCWSTR Name,
24562 DWORD Access,
24563 /* [annotation][out] */
24564 _Out_ HANDLE *pNTHandle);
24565
24566 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
24567 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
24568 ID3D12Device10 * This,
24569 UINT NumObjects,
24570 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24571
24572 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
24573 HRESULT ( STDMETHODCALLTYPE *Evict )(
24574 ID3D12Device10 * This,
24575 UINT NumObjects,
24576 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24577
24578 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
24579 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
24580 ID3D12Device10 * This,
24581 UINT64 InitialValue,
24582 D3D12_FENCE_FLAGS Flags,
24583 REFIID riid,
24584 _COM_Outptr_ void **ppFence);
24585
24586 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
24587 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
24588 ID3D12Device10 * This);
24589
24590 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
24591 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
24592 ID3D12Device10 * This,
24593 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
24594 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24595 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24596 UINT64 BaseOffset,
24597 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24598 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24599 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24600 _Out_opt_ UINT64 *pTotalBytes);
24601
24602 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
24603 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
24604 ID3D12Device10 * This,
24605 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
24606 REFIID riid,
24607 _COM_Outptr_opt_ void **ppvHeap);
24608
24609 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
24610 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
24611 ID3D12Device10 * This,
24612 BOOL Enable);
24613
24614 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
24615 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
24616 ID3D12Device10 * This,
24617 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
24618 _In_opt_ ID3D12RootSignature *pRootSignature,
24619 REFIID riid,
24620 _COM_Outptr_opt_ void **ppvCommandSignature);
24621
24622 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
24623 void ( STDMETHODCALLTYPE *GetResourceTiling )(
24624 ID3D12Device10 * This,
24625 _In_ ID3D12Resource *pTiledResource,
24626 _Out_opt_ UINT *pNumTilesForEntireResource,
24627 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
24628 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
24629 _Inout_opt_ UINT *pNumSubresourceTilings,
24630 _In_ UINT FirstSubresourceTilingToGet,
24631 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
24632
24633 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
24634#if !defined(_WIN32)
24635 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
24636 ID3D12Device10 * This);
24637
24638#else
24639 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
24640 ID3D12Device10 * This,
24641 LUID * RetVal);
24642
24643#endif
24644
24645 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
24646 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
24647 ID3D12Device10 * This,
24648 _In_reads_(BlobLength) const void *pLibraryBlob,
24649 SIZE_T BlobLength,
24650 REFIID riid,
24651 _COM_Outptr_ void **ppPipelineLibrary);
24652
24653 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
24654 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
24655 ID3D12Device10 * This,
24656 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
24657 _In_reads_(NumFences) const UINT64 *pFenceValues,
24658 UINT NumFences,
24659 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
24660 HANDLE hEvent);
24661
24662 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
24663 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
24664 ID3D12Device10 * This,
24665 UINT NumObjects,
24666 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24667 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
24668
24669 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
24670 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
24671 ID3D12Device10 * This,
24672 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
24673 REFIID riid,
24674 _COM_Outptr_ void **ppPipelineState);
24675
24676 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
24677 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
24678 ID3D12Device10 * This,
24679 _In_ const void *pAddress,
24680 REFIID riid,
24681 _COM_Outptr_ void **ppvHeap);
24682
24683 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
24684 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
24685 ID3D12Device10 * This,
24686 _In_ HANDLE hFileMapping,
24687 REFIID riid,
24688 _COM_Outptr_ void **ppvHeap);
24689
24690 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
24691 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
24692 ID3D12Device10 * This,
24693 D3D12_RESIDENCY_FLAGS Flags,
24694 UINT NumObjects,
24695 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24696 _In_ ID3D12Fence *pFenceToSignal,
24697 UINT64 FenceValueToSignal);
24698
24699 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
24700 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
24701 ID3D12Device10 * This,
24702 _In_ UINT nodeMask,
24703 _In_ D3D12_COMMAND_LIST_TYPE type,
24704 _In_ D3D12_COMMAND_LIST_FLAGS flags,
24705 REFIID riid,
24706 _COM_Outptr_ void **ppCommandList);
24707
24708 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
24709 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
24710 ID3D12Device10 * This,
24711 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
24712 _In_ REFIID riid,
24713 _COM_Outptr_ void **ppSession);
24714
24715 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
24716 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
24717 ID3D12Device10 * This,
24718 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24719 D3D12_HEAP_FLAGS HeapFlags,
24720 _In_ const D3D12_RESOURCE_DESC *pDesc,
24721 D3D12_RESOURCE_STATES InitialResourceState,
24722 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24723 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24724 REFIID riidResource,
24725 _COM_Outptr_opt_ void **ppvResource);
24726
24727 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
24728 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
24729 ID3D12Device10 * This,
24730 _In_ const D3D12_HEAP_DESC *pDesc,
24731 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24732 REFIID riid,
24733 _COM_Outptr_opt_ void **ppvHeap);
24734
24735 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
24736 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
24737 ID3D12Device10 * This,
24738 _In_ const D3D12_RESOURCE_DESC *pDesc,
24739 D3D12_RESOURCE_STATES InitialState,
24740 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24741 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24742 REFIID riid,
24743 _COM_Outptr_opt_ void **ppvResource);
24744
24745 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
24746#if !defined(_WIN32)
24747 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24748 ID3D12Device10 * This,
24749 UINT visibleMask,
24750 UINT numResourceDescs,
24751 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24752 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24753
24754#else
24755 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24756 ID3D12Device10 * This,
24757 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24758 UINT visibleMask,
24759 UINT numResourceDescs,
24760 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24761 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24762
24763#endif
24764
24765 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
24766 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
24767 ID3D12Device10 * This,
24768 _In_ ID3D12LifetimeOwner *pOwner,
24769 REFIID riid,
24770 _COM_Outptr_ void **ppvTracker);
24771
24772 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
24773 void ( STDMETHODCALLTYPE *RemoveDevice )(
24774 ID3D12Device10 * This);
24775
24776 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
24777 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
24778 ID3D12Device10 * This,
24779 _Inout_ UINT *pNumMetaCommands,
24780 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
24781
24782 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
24783 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
24784 ID3D12Device10 * This,
24785 _In_ REFGUID CommandId,
24786 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
24787 _Out_opt_ UINT *pTotalStructureSizeInBytes,
24788 _Inout_ UINT *pParameterCount,
24789 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
24790
24791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
24792 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
24793 ID3D12Device10 * This,
24794 _In_ REFGUID CommandId,
24795 _In_ UINT NodeMask,
24796 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
24797 _In_ SIZE_T CreationParametersDataSizeInBytes,
24798 REFIID riid,
24799 _COM_Outptr_ void **ppMetaCommand);
24800
24801 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
24802 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
24803 ID3D12Device10 * This,
24804 const D3D12_STATE_OBJECT_DESC *pDesc,
24805 REFIID riid,
24806 _COM_Outptr_ void **ppStateObject);
24807
24808 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
24809 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
24810 ID3D12Device10 * This,
24811 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
24812 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
24813
24814 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
24815 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
24816 ID3D12Device10 * This,
24817 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
24818 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
24819
24820 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
24821 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
24822 ID3D12Device10 * This,
24823 D3D12_BACKGROUND_PROCESSING_MODE Mode,
24824 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
24825 _In_opt_ HANDLE hEventToSignalUponCompletion,
24826 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
24827
24828 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
24829 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
24830 ID3D12Device10 * This,
24831 const D3D12_STATE_OBJECT_DESC *pAddition,
24832 ID3D12StateObject *pStateObjectToGrowFrom,
24833 REFIID riid,
24834 _COM_Outptr_ void **ppNewStateObject);
24835
24836 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
24837 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
24838 ID3D12Device10 * This,
24839 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
24840 _In_ REFIID riid,
24841 _COM_Outptr_ void **ppSession);
24842
24843 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
24844#if !defined(_WIN32)
24845 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24846 ID3D12Device10 * This,
24847 UINT visibleMask,
24848 UINT numResourceDescs,
24849 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24850 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24851
24852#else
24853 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24854 ID3D12Device10 * This,
24855 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24856 UINT visibleMask,
24857 UINT numResourceDescs,
24858 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24859 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24860
24861#endif
24862
24863 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
24864 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
24865 ID3D12Device10 * This,
24866 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24867 D3D12_HEAP_FLAGS HeapFlags,
24868 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24869 D3D12_RESOURCE_STATES InitialResourceState,
24870 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24871 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24872 REFIID riidResource,
24873 _COM_Outptr_opt_ void **ppvResource);
24874
24875 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
24876 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
24877 ID3D12Device10 * This,
24878 _In_ ID3D12Heap *pHeap,
24879 UINT64 HeapOffset,
24880 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24881 D3D12_RESOURCE_STATES InitialState,
24882 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24883 REFIID riid,
24884 _COM_Outptr_opt_ void **ppvResource);
24885
24886 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
24887 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
24888 ID3D12Device10 * This,
24889 _In_opt_ ID3D12Resource *pTargetedResource,
24890 _In_opt_ ID3D12Resource *pFeedbackResource,
24891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24892
24893 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
24894 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
24895 ID3D12Device10 * This,
24896 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
24897 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24898 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24899 UINT64 BaseOffset,
24900 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24901 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24902 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24903 _Out_opt_ UINT64 *pTotalBytes);
24904
24905 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
24906 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
24907 ID3D12Device10 * This,
24908 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
24909 REFIID riid,
24910 _COM_Outptr_opt_ void **ppvSession);
24911
24912 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
24913 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
24914 ID3D12Device10 * This,
24915 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
24916 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
24917
24918 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
24919 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
24920 ID3D12Device10 * This,
24921 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24922 REFIID CreatorID,
24923 REFIID riid,
24924 _COM_Outptr_ void **ppCommandQueue);
24925
24926 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
24927 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
24928 ID3D12Device10 * This,
24929 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24930 D3D12_HEAP_FLAGS HeapFlags,
24931 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24932 D3D12_BARRIER_LAYOUT InitialLayout,
24933 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24934 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24935 UINT32 NumCastableFormats,
24936 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24937 REFIID riidResource,
24938 _COM_Outptr_opt_ void **ppvResource);
24939
24940 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
24941 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
24942 ID3D12Device10 * This,
24943 _In_ ID3D12Heap *pHeap,
24944 UINT64 HeapOffset,
24945 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24946 D3D12_BARRIER_LAYOUT InitialLayout,
24947 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24948 UINT32 NumCastableFormats,
24949 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24950 REFIID riid,
24951 _COM_Outptr_opt_ void **ppvResource);
24952
24953 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
24954 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
24955 ID3D12Device10 * This,
24956 _In_ const D3D12_RESOURCE_DESC *pDesc,
24957 D3D12_BARRIER_LAYOUT InitialLayout,
24958 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24960 UINT32 NumCastableFormats,
24961 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24962 REFIID riid,
24963 _COM_Outptr_opt_ void **ppvResource);
24964
24965 END_INTERFACE
24966 } ID3D12Device10Vtbl;
24967
24968 interface ID3D12Device10
24969 {
24970 CONST_VTBL struct ID3D12Device10Vtbl *lpVtbl;
24971 };
24972
24973
24974
24975#ifdef COBJMACROS
24976
24977
24978#define ID3D12Device10_QueryInterface(This,riid,ppvObject) \
24979 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
24980
24981#define ID3D12Device10_AddRef(This) \
24982 ( (This)->lpVtbl -> AddRef(This) )
24983
24984#define ID3D12Device10_Release(This) \
24985 ( (This)->lpVtbl -> Release(This) )
24986
24987
24988#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData) \
24989 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
24990
24991#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData) \
24992 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
24993
24994#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData) \
24995 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
24996
24997#define ID3D12Device10_SetName(This,Name) \
24998 ( (This)->lpVtbl -> SetName(This,Name) )
24999
25000
25001#define ID3D12Device10_GetNodeCount(This) \
25002 ( (This)->lpVtbl -> GetNodeCount(This) )
25003
25004#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25005 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25006
25007#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
25008 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
25009
25010#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
25011 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
25012
25013#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
25014 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
25015
25016#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
25017 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
25018
25019#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
25020 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
25021
25022#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
25023 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
25024
25025#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
25026 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
25027
25028#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
25029 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
25030
25031#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor) \
25032 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
25033
25034#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
25035 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
25036
25037#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
25038 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
25039
25040#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
25041 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
25042
25043#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
25044 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
25045
25046#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor) \
25047 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
25048
25049#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
25050 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
25051
25052#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
25053 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
25054#if !defined(_WIN32)
25055
25056#define ID3D12Device10_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
25057 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
25058#else
25059#define ID3D12Device10_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
25060 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
25061#endif
25062#if !defined(_WIN32)
25063
25064#define ID3D12Device10_GetCustomHeapProperties(This,nodeMask,heapType) \
25065 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
25066#else
25067#define ID3D12Device10_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
25068 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
25069#endif
25070
25071#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
25072 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
25073
25074#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap) \
25075 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
25076
25077#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25078 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25079
25080#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25081 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25082
25083#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
25084 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
25085
25086#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
25087 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
25088
25089#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
25090 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
25091
25092#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects) \
25093 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
25094
25095#define ID3D12Device10_Evict(This,NumObjects,ppObjects) \
25096 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
25097
25098#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence) \
25099 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
25100
25101#define ID3D12Device10_GetDeviceRemovedReason(This) \
25102 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
25103
25104#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25105 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25106
25107#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
25108 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
25109
25110#define ID3D12Device10_SetStablePowerState(This,Enable) \
25111 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
25112
25113#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
25114 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
25115
25116#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
25117 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
25118#if !defined(_WIN32)
25119
25120#define ID3D12Device10_GetAdapterLuid(This) \
25121 ( (This)->lpVtbl -> GetAdapterLuid(This) )
25122#else
25123#define ID3D12Device10_GetAdapterLuid(This,RetVal) \
25124 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
25125#endif
25126
25127
25128#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
25129 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
25130
25131#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
25132 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
25133
25134#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
25135 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
25136
25137
25138#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
25139 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
25140
25141
25142#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
25143 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
25144
25145#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
25146 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
25147
25148#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
25149 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
25150
25151
25152#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
25153 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
25154
25155#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
25156 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
25157
25158#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25159 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25160
25161#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
25162 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
25163
25164#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
25165 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
25166#if !defined(_WIN32)
25167
25168#define ID3D12Device10_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25169 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25170#else
25171#define ID3D12Device10_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25172 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25173#endif
25174
25175
25176#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
25177 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
25178
25179#define ID3D12Device10_RemoveDevice(This) \
25180 ( (This)->lpVtbl -> RemoveDevice(This) )
25181
25182#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
25183 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
25184
25185#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
25186 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
25187
25188#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
25189 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
25190
25191#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject) \
25192 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
25193
25194#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
25195 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
25196
25197#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
25198 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
25199
25200
25201#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
25202 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
25203
25204
25205#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
25206 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
25207
25208#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
25209 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
25210
25211#if !defined(_WIN32)
25212
25213#define ID3D12Device10_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25214 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25215#else
25216#define ID3D12Device10_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25217 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25218#endif
25219
25220#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25221 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25222
25223#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25224 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25225
25226#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
25227 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
25228
25229#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25230 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25231
25232
25233#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
25234 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
25235
25236#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control) \
25237 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
25238
25239#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
25240 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
25241
25242
25243#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
25244 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
25245
25246#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25247 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25248
25249#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25250 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25251
25252#endif /* COBJMACROS */
25253
25254
25255#endif /* C style interface */
25256
25257
25258
25259
25260#endif /* __ID3D12Device10_INTERFACE_DEFINED__ */
25261
25262
25263#ifndef __ID3D12Device11_INTERFACE_DEFINED__
25264#define __ID3D12Device11_INTERFACE_DEFINED__
25265
25266/* interface ID3D12Device11 */
25267/* [unique][local][object][uuid] */
25268
25269
25270EXTERN_C const IID IID_ID3D12Device11;
25271
25272#if defined(__cplusplus) && !defined(CINTERFACE)
25273
25274 MIDL_INTERFACE("5405c344-d457-444e-b4dd-2366e45aee39")
25275 ID3D12Device11 : public ID3D12Device10
25276 {
25277 public:
25278 virtual void STDMETHODCALLTYPE CreateSampler2(
25279 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
25281
25282 };
25283
25284
25285#else /* C style interface */
25286
25287 typedef struct ID3D12Device11Vtbl
25288 {
25289 BEGIN_INTERFACE
25290
25291 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
25292 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
25293 ID3D12Device11 * This,
25294 REFIID riid,
25295 _COM_Outptr_ void **ppvObject);
25296
25297 DECLSPEC_XFGVIRT(IUnknown, AddRef)
25298 ULONG ( STDMETHODCALLTYPE *AddRef )(
25299 ID3D12Device11 * This);
25300
25301 DECLSPEC_XFGVIRT(IUnknown, Release)
25302 ULONG ( STDMETHODCALLTYPE *Release )(
25303 ID3D12Device11 * This);
25304
25305 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
25306 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
25307 ID3D12Device11 * This,
25308 _In_ REFGUID guid,
25309 _Inout_ UINT *pDataSize,
25310 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
25311
25312 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
25313 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
25314 ID3D12Device11 * This,
25315 _In_ REFGUID guid,
25316 _In_ UINT DataSize,
25317 _In_reads_bytes_opt_( DataSize ) const void *pData);
25318
25319 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
25320 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
25321 ID3D12Device11 * This,
25322 _In_ REFGUID guid,
25323 _In_opt_ const IUnknown *pData);
25324
25325 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
25326 HRESULT ( STDMETHODCALLTYPE *SetName )(
25327 ID3D12Device11 * This,
25328 _In_z_ LPCWSTR Name);
25329
25330 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
25331 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
25332 ID3D12Device11 * This);
25333
25334 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
25335 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
25336 ID3D12Device11 * This,
25337 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25338 REFIID riid,
25339 _COM_Outptr_ void **ppCommandQueue);
25340
25341 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
25342 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
25343 ID3D12Device11 * This,
25344 _In_ D3D12_COMMAND_LIST_TYPE type,
25345 REFIID riid,
25346 _COM_Outptr_ void **ppCommandAllocator);
25347
25348 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
25349 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
25350 ID3D12Device11 * This,
25351 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
25352 REFIID riid,
25353 _COM_Outptr_ void **ppPipelineState);
25354
25355 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
25356 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
25357 ID3D12Device11 * This,
25358 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
25359 REFIID riid,
25360 _COM_Outptr_ void **ppPipelineState);
25361
25362 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
25363 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
25364 ID3D12Device11 * This,
25365 _In_ UINT nodeMask,
25366 _In_ D3D12_COMMAND_LIST_TYPE type,
25367 _In_ ID3D12CommandAllocator *pCommandAllocator,
25368 _In_opt_ ID3D12PipelineState *pInitialState,
25369 REFIID riid,
25370 _COM_Outptr_ void **ppCommandList);
25371
25372 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
25373 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
25374 ID3D12Device11 * This,
25375 D3D12_FEATURE Feature,
25376 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
25377 UINT FeatureSupportDataSize);
25378
25379 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
25380 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
25381 ID3D12Device11 * This,
25382 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
25383 REFIID riid,
25384 _COM_Outptr_ void **ppvHeap);
25385
25386 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
25387 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
25388 ID3D12Device11 * This,
25389 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
25390
25391 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
25392 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
25393 ID3D12Device11 * This,
25394 _In_ UINT nodeMask,
25395 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
25396 _In_ SIZE_T blobLengthInBytes,
25397 REFIID riid,
25398 _COM_Outptr_ void **ppvRootSignature);
25399
25400 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
25401 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
25402 ID3D12Device11 * This,
25403 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
25404 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25405
25406 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
25407 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
25408 ID3D12Device11 * This,
25409 _In_opt_ ID3D12Resource *pResource,
25410 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
25411 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25412
25413 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
25414 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
25415 ID3D12Device11 * This,
25416 _In_opt_ ID3D12Resource *pResource,
25417 _In_opt_ ID3D12Resource *pCounterResource,
25418 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
25419 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25420
25421 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
25422 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
25423 ID3D12Device11 * This,
25424 _In_opt_ ID3D12Resource *pResource,
25425 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
25426 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25427
25428 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
25429 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
25430 ID3D12Device11 * This,
25431 _In_opt_ ID3D12Resource *pResource,
25432 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
25433 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25434
25435 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
25436 void ( STDMETHODCALLTYPE *CreateSampler )(
25437 ID3D12Device11 * This,
25438 _In_ const D3D12_SAMPLER_DESC *pDesc,
25439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25440
25441 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
25442 void ( STDMETHODCALLTYPE *CopyDescriptors )(
25443 ID3D12Device11 * This,
25444 _In_ UINT NumDestDescriptorRanges,
25445 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
25446 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
25447 _In_ UINT NumSrcDescriptorRanges,
25448 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
25449 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
25450 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25451
25452 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
25453 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
25454 ID3D12Device11 * This,
25455 _In_ UINT NumDescriptors,
25456 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
25457 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
25458 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25459
25460 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
25461#if !defined(_WIN32)
25462 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25463 ID3D12Device11 * This,
25464 _In_ UINT visibleMask,
25465 _In_ UINT numResourceDescs,
25466 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25467
25468#else
25469 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25470 ID3D12Device11 * This,
25471 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25472 _In_ UINT visibleMask,
25473 _In_ UINT numResourceDescs,
25474 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25475
25476#endif
25477
25478 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
25479#if !defined(_WIN32)
25480 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25481 ID3D12Device11 * This,
25482 _In_ UINT nodeMask,
25483 D3D12_HEAP_TYPE heapType);
25484
25485#else
25486 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25487 ID3D12Device11 * This,
25488 D3D12_HEAP_PROPERTIES * RetVal,
25489 _In_ UINT nodeMask,
25490 D3D12_HEAP_TYPE heapType);
25491
25492#endif
25493
25494 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
25495 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
25496 ID3D12Device11 * This,
25497 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25498 D3D12_HEAP_FLAGS HeapFlags,
25499 _In_ const D3D12_RESOURCE_DESC *pDesc,
25500 D3D12_RESOURCE_STATES InitialResourceState,
25501 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25502 REFIID riidResource,
25503 _COM_Outptr_opt_ void **ppvResource);
25504
25505 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
25506 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
25507 ID3D12Device11 * This,
25508 _In_ const D3D12_HEAP_DESC *pDesc,
25509 REFIID riid,
25510 _COM_Outptr_opt_ void **ppvHeap);
25511
25512 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
25513 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
25514 ID3D12Device11 * This,
25515 _In_ ID3D12Heap *pHeap,
25516 UINT64 HeapOffset,
25517 _In_ const D3D12_RESOURCE_DESC *pDesc,
25518 D3D12_RESOURCE_STATES InitialState,
25519 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25520 REFIID riid,
25521 _COM_Outptr_opt_ void **ppvResource);
25522
25523 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
25524 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
25525 ID3D12Device11 * This,
25526 _In_ const D3D12_RESOURCE_DESC *pDesc,
25527 D3D12_RESOURCE_STATES InitialState,
25528 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25529 REFIID riid,
25530 _COM_Outptr_opt_ void **ppvResource);
25531
25532 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
25533 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
25534 ID3D12Device11 * This,
25535 _In_ ID3D12DeviceChild *pObject,
25536 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
25537 DWORD Access,
25538 _In_opt_ LPCWSTR Name,
25539 _Out_ HANDLE *pHandle);
25540
25541 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
25542 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
25543 ID3D12Device11 * This,
25544 _In_ HANDLE NTHandle,
25545 REFIID riid,
25546 _COM_Outptr_opt_ void **ppvObj);
25547
25548 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
25549 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
25550 ID3D12Device11 * This,
25551 _In_ LPCWSTR Name,
25552 DWORD Access,
25553 /* [annotation][out] */
25554 _Out_ HANDLE *pNTHandle);
25555
25556 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
25557 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
25558 ID3D12Device11 * This,
25559 UINT NumObjects,
25560 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25561
25562 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
25563 HRESULT ( STDMETHODCALLTYPE *Evict )(
25564 ID3D12Device11 * This,
25565 UINT NumObjects,
25566 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25567
25568 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
25569 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
25570 ID3D12Device11 * This,
25571 UINT64 InitialValue,
25572 D3D12_FENCE_FLAGS Flags,
25573 REFIID riid,
25574 _COM_Outptr_ void **ppFence);
25575
25576 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
25577 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
25578 ID3D12Device11 * This);
25579
25580 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
25581 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
25582 ID3D12Device11 * This,
25583 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
25584 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25585 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25586 UINT64 BaseOffset,
25587 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25588 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25589 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25590 _Out_opt_ UINT64 *pTotalBytes);
25591
25592 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
25593 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
25594 ID3D12Device11 * This,
25595 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
25596 REFIID riid,
25597 _COM_Outptr_opt_ void **ppvHeap);
25598
25599 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
25600 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
25601 ID3D12Device11 * This,
25602 BOOL Enable);
25603
25604 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
25605 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
25606 ID3D12Device11 * This,
25607 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
25608 _In_opt_ ID3D12RootSignature *pRootSignature,
25609 REFIID riid,
25610 _COM_Outptr_opt_ void **ppvCommandSignature);
25611
25612 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
25613 void ( STDMETHODCALLTYPE *GetResourceTiling )(
25614 ID3D12Device11 * This,
25615 _In_ ID3D12Resource *pTiledResource,
25616 _Out_opt_ UINT *pNumTilesForEntireResource,
25617 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
25618 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
25619 _Inout_opt_ UINT *pNumSubresourceTilings,
25620 _In_ UINT FirstSubresourceTilingToGet,
25621 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
25622
25623 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
25624#if !defined(_WIN32)
25625 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
25626 ID3D12Device11 * This);
25627
25628#else
25629 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
25630 ID3D12Device11 * This,
25631 LUID * RetVal);
25632
25633#endif
25634
25635 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
25636 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
25637 ID3D12Device11 * This,
25638 _In_reads_(BlobLength) const void *pLibraryBlob,
25639 SIZE_T BlobLength,
25640 REFIID riid,
25641 _COM_Outptr_ void **ppPipelineLibrary);
25642
25643 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
25644 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
25645 ID3D12Device11 * This,
25646 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
25647 _In_reads_(NumFences) const UINT64 *pFenceValues,
25648 UINT NumFences,
25649 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
25650 HANDLE hEvent);
25651
25652 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
25653 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
25654 ID3D12Device11 * This,
25655 UINT NumObjects,
25656 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25657 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
25658
25659 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
25660 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
25661 ID3D12Device11 * This,
25662 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
25663 REFIID riid,
25664 _COM_Outptr_ void **ppPipelineState);
25665
25666 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
25667 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
25668 ID3D12Device11 * This,
25669 _In_ const void *pAddress,
25670 REFIID riid,
25671 _COM_Outptr_ void **ppvHeap);
25672
25673 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
25674 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
25675 ID3D12Device11 * This,
25676 _In_ HANDLE hFileMapping,
25677 REFIID riid,
25678 _COM_Outptr_ void **ppvHeap);
25679
25680 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
25681 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
25682 ID3D12Device11 * This,
25683 D3D12_RESIDENCY_FLAGS Flags,
25684 UINT NumObjects,
25685 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25686 _In_ ID3D12Fence *pFenceToSignal,
25687 UINT64 FenceValueToSignal);
25688
25689 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
25690 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
25691 ID3D12Device11 * This,
25692 _In_ UINT nodeMask,
25693 _In_ D3D12_COMMAND_LIST_TYPE type,
25694 _In_ D3D12_COMMAND_LIST_FLAGS flags,
25695 REFIID riid,
25696 _COM_Outptr_ void **ppCommandList);
25697
25698 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
25699 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
25700 ID3D12Device11 * This,
25701 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
25702 _In_ REFIID riid,
25703 _COM_Outptr_ void **ppSession);
25704
25705 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
25706 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
25707 ID3D12Device11 * This,
25708 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25709 D3D12_HEAP_FLAGS HeapFlags,
25710 _In_ const D3D12_RESOURCE_DESC *pDesc,
25711 D3D12_RESOURCE_STATES InitialResourceState,
25712 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25713 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25714 REFIID riidResource,
25715 _COM_Outptr_opt_ void **ppvResource);
25716
25717 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
25718 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
25719 ID3D12Device11 * This,
25720 _In_ const D3D12_HEAP_DESC *pDesc,
25721 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25722 REFIID riid,
25723 _COM_Outptr_opt_ void **ppvHeap);
25724
25725 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
25726 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
25727 ID3D12Device11 * This,
25728 _In_ const D3D12_RESOURCE_DESC *pDesc,
25729 D3D12_RESOURCE_STATES InitialState,
25730 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25731 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25732 REFIID riid,
25733 _COM_Outptr_opt_ void **ppvResource);
25734
25735 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
25736#if !defined(_WIN32)
25737 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25738 ID3D12Device11 * This,
25739 UINT visibleMask,
25740 UINT numResourceDescs,
25741 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25742 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25743
25744#else
25745 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25746 ID3D12Device11 * This,
25747 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25748 UINT visibleMask,
25749 UINT numResourceDescs,
25750 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25751 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25752
25753#endif
25754
25755 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
25756 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
25757 ID3D12Device11 * This,
25758 _In_ ID3D12LifetimeOwner *pOwner,
25759 REFIID riid,
25760 _COM_Outptr_ void **ppvTracker);
25761
25762 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
25763 void ( STDMETHODCALLTYPE *RemoveDevice )(
25764 ID3D12Device11 * This);
25765
25766 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
25767 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
25768 ID3D12Device11 * This,
25769 _Inout_ UINT *pNumMetaCommands,
25770 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
25771
25772 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
25773 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
25774 ID3D12Device11 * This,
25775 _In_ REFGUID CommandId,
25776 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
25777 _Out_opt_ UINT *pTotalStructureSizeInBytes,
25778 _Inout_ UINT *pParameterCount,
25779 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
25780
25781 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
25782 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
25783 ID3D12Device11 * This,
25784 _In_ REFGUID CommandId,
25785 _In_ UINT NodeMask,
25786 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
25787 _In_ SIZE_T CreationParametersDataSizeInBytes,
25788 REFIID riid,
25789 _COM_Outptr_ void **ppMetaCommand);
25790
25791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
25792 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
25793 ID3D12Device11 * This,
25794 const D3D12_STATE_OBJECT_DESC *pDesc,
25795 REFIID riid,
25796 _COM_Outptr_ void **ppStateObject);
25797
25798 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
25799 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
25800 ID3D12Device11 * This,
25801 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
25802 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
25803
25804 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
25805 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
25806 ID3D12Device11 * This,
25807 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
25808 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
25809
25810 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
25811 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
25812 ID3D12Device11 * This,
25813 D3D12_BACKGROUND_PROCESSING_MODE Mode,
25814 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
25815 _In_opt_ HANDLE hEventToSignalUponCompletion,
25816 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
25817
25818 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
25819 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
25820 ID3D12Device11 * This,
25821 const D3D12_STATE_OBJECT_DESC *pAddition,
25822 ID3D12StateObject *pStateObjectToGrowFrom,
25823 REFIID riid,
25824 _COM_Outptr_ void **ppNewStateObject);
25825
25826 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
25827 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
25828 ID3D12Device11 * This,
25829 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
25830 _In_ REFIID riid,
25831 _COM_Outptr_ void **ppSession);
25832
25833 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
25834#if !defined(_WIN32)
25835 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25836 ID3D12Device11 * This,
25837 UINT visibleMask,
25838 UINT numResourceDescs,
25839 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25840 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25841
25842#else
25843 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25844 ID3D12Device11 * This,
25845 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25846 UINT visibleMask,
25847 UINT numResourceDescs,
25848 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25849 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25850
25851#endif
25852
25853 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
25854 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
25855 ID3D12Device11 * This,
25856 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25857 D3D12_HEAP_FLAGS HeapFlags,
25858 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25859 D3D12_RESOURCE_STATES InitialResourceState,
25860 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25861 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25862 REFIID riidResource,
25863 _COM_Outptr_opt_ void **ppvResource);
25864
25865 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
25866 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
25867 ID3D12Device11 * This,
25868 _In_ ID3D12Heap *pHeap,
25869 UINT64 HeapOffset,
25870 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25871 D3D12_RESOURCE_STATES InitialState,
25872 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25873 REFIID riid,
25874 _COM_Outptr_opt_ void **ppvResource);
25875
25876 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
25877 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
25878 ID3D12Device11 * This,
25879 _In_opt_ ID3D12Resource *pTargetedResource,
25880 _In_opt_ ID3D12Resource *pFeedbackResource,
25881 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25882
25883 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
25884 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
25885 ID3D12Device11 * This,
25886 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
25887 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25888 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25889 UINT64 BaseOffset,
25890 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25891 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25892 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25893 _Out_opt_ UINT64 *pTotalBytes);
25894
25895 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
25896 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
25897 ID3D12Device11 * This,
25898 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
25899 REFIID riid,
25900 _COM_Outptr_opt_ void **ppvSession);
25901
25902 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
25903 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
25904 ID3D12Device11 * This,
25905 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
25906 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
25907
25908 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
25909 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
25910 ID3D12Device11 * This,
25911 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25912 REFIID CreatorID,
25913 REFIID riid,
25914 _COM_Outptr_ void **ppCommandQueue);
25915
25916 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
25917 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
25918 ID3D12Device11 * This,
25919 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25920 D3D12_HEAP_FLAGS HeapFlags,
25921 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25922 D3D12_BARRIER_LAYOUT InitialLayout,
25923 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25924 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25925 UINT32 NumCastableFormats,
25926 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25927 REFIID riidResource,
25928 _COM_Outptr_opt_ void **ppvResource);
25929
25930 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
25931 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
25932 ID3D12Device11 * This,
25933 _In_ ID3D12Heap *pHeap,
25934 UINT64 HeapOffset,
25935 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25936 D3D12_BARRIER_LAYOUT InitialLayout,
25937 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25938 UINT32 NumCastableFormats,
25939 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25940 REFIID riid,
25941 _COM_Outptr_opt_ void **ppvResource);
25942
25943 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
25944 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
25945 ID3D12Device11 * This,
25946 _In_ const D3D12_RESOURCE_DESC *pDesc,
25947 D3D12_BARRIER_LAYOUT InitialLayout,
25948 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25949 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25950 UINT32 NumCastableFormats,
25951 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25952 REFIID riid,
25953 _COM_Outptr_opt_ void **ppvResource);
25954
25955 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
25956 void ( STDMETHODCALLTYPE *CreateSampler2 )(
25957 ID3D12Device11 * This,
25958 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25959 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25960
25961 END_INTERFACE
25962 } ID3D12Device11Vtbl;
25963
25964 interface ID3D12Device11
25965 {
25966 CONST_VTBL struct ID3D12Device11Vtbl *lpVtbl;
25967 };
25968
25969
25970
25971#ifdef COBJMACROS
25972
25973
25974#define ID3D12Device11_QueryInterface(This,riid,ppvObject) \
25975 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
25976
25977#define ID3D12Device11_AddRef(This) \
25978 ( (This)->lpVtbl -> AddRef(This) )
25979
25980#define ID3D12Device11_Release(This) \
25981 ( (This)->lpVtbl -> Release(This) )
25982
25983
25984#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData) \
25985 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
25986
25987#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData) \
25988 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
25989
25990#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData) \
25991 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
25992
25993#define ID3D12Device11_SetName(This,Name) \
25994 ( (This)->lpVtbl -> SetName(This,Name) )
25995
25996
25997#define ID3D12Device11_GetNodeCount(This) \
25998 ( (This)->lpVtbl -> GetNodeCount(This) )
25999
26000#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
26001 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
26002
26003#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
26004 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
26005
26006#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
26007 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
26008
26009#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
26010 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
26011
26012#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
26013 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
26014
26015#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
26016 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
26017
26018#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
26019 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
26020
26021#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
26022 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
26023
26024#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
26025 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
26026
26027#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor) \
26028 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
26029
26030#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
26031 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
26032
26033#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
26034 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
26035
26036#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
26037 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
26038
26039#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
26040 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
26041
26042#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor) \
26043 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
26044
26045#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
26046 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
26047
26048#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
26049 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
26050#if !defined(_WIN32)
26051
26052#define ID3D12Device11_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
26053 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
26054#else
26055#define ID3D12Device11_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
26056 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
26057#endif
26058#if !defined(_WIN32)
26059
26060#define ID3D12Device11_GetCustomHeapProperties(This,nodeMask,heapType) \
26061 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
26062#else
26063#define ID3D12Device11_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
26064 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
26065#endif
26066
26067#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
26068 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
26069
26070#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap) \
26071 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
26072
26073#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26074 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26075
26076#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26077 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26078
26079#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
26080 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
26081
26082#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
26083 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
26084
26085#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
26086 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
26087
26088#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects) \
26089 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
26090
26091#define ID3D12Device11_Evict(This,NumObjects,ppObjects) \
26092 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
26093
26094#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence) \
26095 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
26096
26097#define ID3D12Device11_GetDeviceRemovedReason(This) \
26098 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
26099
26100#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26101 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26102
26103#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
26104 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
26105
26106#define ID3D12Device11_SetStablePowerState(This,Enable) \
26107 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
26108
26109#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
26110 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
26111
26112#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
26113 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
26114#if !defined(_WIN32)
26115
26116#define ID3D12Device11_GetAdapterLuid(This) \
26117 ( (This)->lpVtbl -> GetAdapterLuid(This) )
26118#else
26119#define ID3D12Device11_GetAdapterLuid(This,RetVal) \
26120 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
26121#endif
26122
26123
26124#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
26125 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
26126
26127#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
26128 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
26129
26130#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
26131 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
26132
26133
26134#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
26135 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
26136
26137
26138#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
26139 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
26140
26141#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
26142 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
26143
26144#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
26145 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
26146
26147
26148#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
26149 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
26150
26151#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
26152 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
26153
26154#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26155 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26156
26157#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
26158 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
26159
26160#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
26161 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
26162#if !defined(_WIN32)
26163
26164#define ID3D12Device11_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26165 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26166#else
26167#define ID3D12Device11_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26168 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26169#endif
26170
26171
26172#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
26173 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
26174
26175#define ID3D12Device11_RemoveDevice(This) \
26176 ( (This)->lpVtbl -> RemoveDevice(This) )
26177
26178#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
26179 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
26180
26181#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
26182 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
26183
26184#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
26185 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
26186
26187#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject) \
26188 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
26189
26190#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
26191 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
26192
26193#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
26194 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
26195
26196
26197#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
26198 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
26199
26200
26201#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
26202 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
26203
26204#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
26205 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
26206
26207#if !defined(_WIN32)
26208
26209#define ID3D12Device11_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26210 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26211#else
26212#define ID3D12Device11_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26213 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26214#endif
26215
26216#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26217 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26218
26219#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26220 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26221
26222#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
26223 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
26224
26225#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26226 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26227
26228
26229#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
26230 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
26231
26232#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control) \
26233 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
26234
26235#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
26236 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
26237
26238
26239#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
26240 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
26241
26242#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26243 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26244
26245#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26246 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26247
26248
26249#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor) \
26250 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
26251
26252#endif /* COBJMACROS */
26253
26254
26255#endif /* C style interface */
26256
26257
26258
26259
26260#endif /* __ID3D12Device11_INTERFACE_DEFINED__ */
26261
26262
26263#ifndef __ID3D12Device12_INTERFACE_DEFINED__
26264#define __ID3D12Device12_INTERFACE_DEFINED__
26265
26266/* interface ID3D12Device12 */
26267/* [unique][local][object][uuid] */
26268
26269
26270EXTERN_C const IID IID_ID3D12Device12;
26271
26272#if defined(__cplusplus) && !defined(CINTERFACE)
26273
26274 MIDL_INTERFACE("5af5c532-4c91-4cd0-b541-15a405395fc5")
26275 ID3D12Device12 : public ID3D12Device11
26276 {
26277 public:
26278#if defined(_MSC_VER) || !defined(_WIN32)
26279 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo3(
26280 UINT visibleMask,
26281 UINT numResourceDescs,
26282 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26283 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26284 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26285 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26286#else
26287 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo3(
26288 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26289 UINT visibleMask,
26290 UINT numResourceDescs,
26291 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26292 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26293 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26294 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26295#endif
26296
26297 };
26298
26299
26300#else /* C style interface */
26301
26302 typedef struct ID3D12Device12Vtbl
26303 {
26304 BEGIN_INTERFACE
26305
26306 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
26307 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
26308 ID3D12Device12 * This,
26309 REFIID riid,
26310 _COM_Outptr_ void **ppvObject);
26311
26312 DECLSPEC_XFGVIRT(IUnknown, AddRef)
26313 ULONG ( STDMETHODCALLTYPE *AddRef )(
26314 ID3D12Device12 * This);
26315
26316 DECLSPEC_XFGVIRT(IUnknown, Release)
26317 ULONG ( STDMETHODCALLTYPE *Release )(
26318 ID3D12Device12 * This);
26319
26320 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
26321 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
26322 ID3D12Device12 * This,
26323 _In_ REFGUID guid,
26324 _Inout_ UINT *pDataSize,
26325 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
26326
26327 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
26328 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
26329 ID3D12Device12 * This,
26330 _In_ REFGUID guid,
26331 _In_ UINT DataSize,
26332 _In_reads_bytes_opt_( DataSize ) const void *pData);
26333
26334 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
26335 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
26336 ID3D12Device12 * This,
26337 _In_ REFGUID guid,
26338 _In_opt_ const IUnknown *pData);
26339
26340 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
26341 HRESULT ( STDMETHODCALLTYPE *SetName )(
26342 ID3D12Device12 * This,
26343 _In_z_ LPCWSTR Name);
26344
26345 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
26346 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
26347 ID3D12Device12 * This);
26348
26349 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
26350 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
26351 ID3D12Device12 * This,
26352 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26353 REFIID riid,
26354 _COM_Outptr_ void **ppCommandQueue);
26355
26356 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
26357 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
26358 ID3D12Device12 * This,
26359 _In_ D3D12_COMMAND_LIST_TYPE type,
26360 REFIID riid,
26361 _COM_Outptr_ void **ppCommandAllocator);
26362
26363 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
26364 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
26365 ID3D12Device12 * This,
26366 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
26367 REFIID riid,
26368 _COM_Outptr_ void **ppPipelineState);
26369
26370 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
26371 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
26372 ID3D12Device12 * This,
26373 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
26374 REFIID riid,
26375 _COM_Outptr_ void **ppPipelineState);
26376
26377 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
26378 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
26379 ID3D12Device12 * This,
26380 _In_ UINT nodeMask,
26381 _In_ D3D12_COMMAND_LIST_TYPE type,
26382 _In_ ID3D12CommandAllocator *pCommandAllocator,
26383 _In_opt_ ID3D12PipelineState *pInitialState,
26384 REFIID riid,
26385 _COM_Outptr_ void **ppCommandList);
26386
26387 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
26388 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
26389 ID3D12Device12 * This,
26390 D3D12_FEATURE Feature,
26391 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
26392 UINT FeatureSupportDataSize);
26393
26394 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
26395 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
26396 ID3D12Device12 * This,
26397 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
26398 REFIID riid,
26399 _COM_Outptr_ void **ppvHeap);
26400
26401 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
26402 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
26403 ID3D12Device12 * This,
26404 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
26405
26406 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
26407 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
26408 ID3D12Device12 * This,
26409 _In_ UINT nodeMask,
26410 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
26411 _In_ SIZE_T blobLengthInBytes,
26412 REFIID riid,
26413 _COM_Outptr_ void **ppvRootSignature);
26414
26415 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
26416 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
26417 ID3D12Device12 * This,
26418 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
26419 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26420
26421 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
26422 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
26423 ID3D12Device12 * This,
26424 _In_opt_ ID3D12Resource *pResource,
26425 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
26426 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26427
26428 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
26429 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
26430 ID3D12Device12 * This,
26431 _In_opt_ ID3D12Resource *pResource,
26432 _In_opt_ ID3D12Resource *pCounterResource,
26433 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
26434 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26435
26436 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
26437 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
26438 ID3D12Device12 * This,
26439 _In_opt_ ID3D12Resource *pResource,
26440 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
26441 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26442
26443 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
26444 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
26445 ID3D12Device12 * This,
26446 _In_opt_ ID3D12Resource *pResource,
26447 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
26448 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26449
26450 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
26451 void ( STDMETHODCALLTYPE *CreateSampler )(
26452 ID3D12Device12 * This,
26453 _In_ const D3D12_SAMPLER_DESC *pDesc,
26454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26455
26456 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
26457 void ( STDMETHODCALLTYPE *CopyDescriptors )(
26458 ID3D12Device12 * This,
26459 _In_ UINT NumDestDescriptorRanges,
26460 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
26461 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
26462 _In_ UINT NumSrcDescriptorRanges,
26463 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
26464 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
26465 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26466
26467 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
26468 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
26469 ID3D12Device12 * This,
26470 _In_ UINT NumDescriptors,
26471 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
26472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
26473 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26474
26475 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
26476#if !defined(_WIN32)
26477 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26478 ID3D12Device12 * This,
26479 _In_ UINT visibleMask,
26480 _In_ UINT numResourceDescs,
26481 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26482
26483#else
26484 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26485 ID3D12Device12 * This,
26486 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26487 _In_ UINT visibleMask,
26488 _In_ UINT numResourceDescs,
26489 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26490
26491#endif
26492
26493 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
26494#if !defined(_WIN32)
26495 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26496 ID3D12Device12 * This,
26497 _In_ UINT nodeMask,
26498 D3D12_HEAP_TYPE heapType);
26499
26500#else
26501 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26502 ID3D12Device12 * This,
26503 D3D12_HEAP_PROPERTIES * RetVal,
26504 _In_ UINT nodeMask,
26505 D3D12_HEAP_TYPE heapType);
26506
26507#endif
26508
26509 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
26510 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
26511 ID3D12Device12 * This,
26512 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26513 D3D12_HEAP_FLAGS HeapFlags,
26514 _In_ const D3D12_RESOURCE_DESC *pDesc,
26515 D3D12_RESOURCE_STATES InitialResourceState,
26516 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26517 REFIID riidResource,
26518 _COM_Outptr_opt_ void **ppvResource);
26519
26520 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
26521 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
26522 ID3D12Device12 * This,
26523 _In_ const D3D12_HEAP_DESC *pDesc,
26524 REFIID riid,
26525 _COM_Outptr_opt_ void **ppvHeap);
26526
26527 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
26528 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
26529 ID3D12Device12 * This,
26530 _In_ ID3D12Heap *pHeap,
26531 UINT64 HeapOffset,
26532 _In_ const D3D12_RESOURCE_DESC *pDesc,
26533 D3D12_RESOURCE_STATES InitialState,
26534 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26535 REFIID riid,
26536 _COM_Outptr_opt_ void **ppvResource);
26537
26538 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
26539 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
26540 ID3D12Device12 * This,
26541 _In_ const D3D12_RESOURCE_DESC *pDesc,
26542 D3D12_RESOURCE_STATES InitialState,
26543 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26544 REFIID riid,
26545 _COM_Outptr_opt_ void **ppvResource);
26546
26547 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
26548 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
26549 ID3D12Device12 * This,
26550 _In_ ID3D12DeviceChild *pObject,
26551 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
26552 DWORD Access,
26553 _In_opt_ LPCWSTR Name,
26554 _Out_ HANDLE *pHandle);
26555
26556 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
26557 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
26558 ID3D12Device12 * This,
26559 _In_ HANDLE NTHandle,
26560 REFIID riid,
26561 _COM_Outptr_opt_ void **ppvObj);
26562
26563 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
26564 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
26565 ID3D12Device12 * This,
26566 _In_ LPCWSTR Name,
26567 DWORD Access,
26568 /* [annotation][out] */
26569 _Out_ HANDLE *pNTHandle);
26570
26571 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
26572 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
26573 ID3D12Device12 * This,
26574 UINT NumObjects,
26575 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26576
26577 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
26578 HRESULT ( STDMETHODCALLTYPE *Evict )(
26579 ID3D12Device12 * This,
26580 UINT NumObjects,
26581 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26582
26583 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
26584 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
26585 ID3D12Device12 * This,
26586 UINT64 InitialValue,
26587 D3D12_FENCE_FLAGS Flags,
26588 REFIID riid,
26589 _COM_Outptr_ void **ppFence);
26590
26591 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
26592 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
26593 ID3D12Device12 * This);
26594
26595 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
26596 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
26597 ID3D12Device12 * This,
26598 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
26599 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26600 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26601 UINT64 BaseOffset,
26602 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26603 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26604 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26605 _Out_opt_ UINT64 *pTotalBytes);
26606
26607 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
26608 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
26609 ID3D12Device12 * This,
26610 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
26611 REFIID riid,
26612 _COM_Outptr_opt_ void **ppvHeap);
26613
26614 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
26615 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
26616 ID3D12Device12 * This,
26617 BOOL Enable);
26618
26619 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
26620 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
26621 ID3D12Device12 * This,
26622 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
26623 _In_opt_ ID3D12RootSignature *pRootSignature,
26624 REFIID riid,
26625 _COM_Outptr_opt_ void **ppvCommandSignature);
26626
26627 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
26628 void ( STDMETHODCALLTYPE *GetResourceTiling )(
26629 ID3D12Device12 * This,
26630 _In_ ID3D12Resource *pTiledResource,
26631 _Out_opt_ UINT *pNumTilesForEntireResource,
26632 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
26633 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
26634 _Inout_opt_ UINT *pNumSubresourceTilings,
26635 _In_ UINT FirstSubresourceTilingToGet,
26636 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
26637
26638 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
26639#if !defined(_WIN32)
26640 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
26641 ID3D12Device12 * This);
26642
26643#else
26644 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
26645 ID3D12Device12 * This,
26646 LUID * RetVal);
26647
26648#endif
26649
26650 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
26651 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
26652 ID3D12Device12 * This,
26653 _In_reads_(BlobLength) const void *pLibraryBlob,
26654 SIZE_T BlobLength,
26655 REFIID riid,
26656 _COM_Outptr_ void **ppPipelineLibrary);
26657
26658 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
26659 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
26660 ID3D12Device12 * This,
26661 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
26662 _In_reads_(NumFences) const UINT64 *pFenceValues,
26663 UINT NumFences,
26664 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
26665 HANDLE hEvent);
26666
26667 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
26668 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
26669 ID3D12Device12 * This,
26670 UINT NumObjects,
26671 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26672 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
26673
26674 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
26675 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
26676 ID3D12Device12 * This,
26677 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
26678 REFIID riid,
26679 _COM_Outptr_ void **ppPipelineState);
26680
26681 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
26682 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
26683 ID3D12Device12 * This,
26684 _In_ const void *pAddress,
26685 REFIID riid,
26686 _COM_Outptr_ void **ppvHeap);
26687
26688 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
26689 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
26690 ID3D12Device12 * This,
26691 _In_ HANDLE hFileMapping,
26692 REFIID riid,
26693 _COM_Outptr_ void **ppvHeap);
26694
26695 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
26696 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
26697 ID3D12Device12 * This,
26698 D3D12_RESIDENCY_FLAGS Flags,
26699 UINT NumObjects,
26700 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26701 _In_ ID3D12Fence *pFenceToSignal,
26702 UINT64 FenceValueToSignal);
26703
26704 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
26705 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
26706 ID3D12Device12 * This,
26707 _In_ UINT nodeMask,
26708 _In_ D3D12_COMMAND_LIST_TYPE type,
26709 _In_ D3D12_COMMAND_LIST_FLAGS flags,
26710 REFIID riid,
26711 _COM_Outptr_ void **ppCommandList);
26712
26713 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
26714 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
26715 ID3D12Device12 * This,
26716 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
26717 _In_ REFIID riid,
26718 _COM_Outptr_ void **ppSession);
26719
26720 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
26721 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
26722 ID3D12Device12 * This,
26723 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26724 D3D12_HEAP_FLAGS HeapFlags,
26725 _In_ const D3D12_RESOURCE_DESC *pDesc,
26726 D3D12_RESOURCE_STATES InitialResourceState,
26727 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26728 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26729 REFIID riidResource,
26730 _COM_Outptr_opt_ void **ppvResource);
26731
26732 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
26733 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
26734 ID3D12Device12 * This,
26735 _In_ const D3D12_HEAP_DESC *pDesc,
26736 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26737 REFIID riid,
26738 _COM_Outptr_opt_ void **ppvHeap);
26739
26740 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
26741 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
26742 ID3D12Device12 * This,
26743 _In_ const D3D12_RESOURCE_DESC *pDesc,
26744 D3D12_RESOURCE_STATES InitialState,
26745 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26746 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26747 REFIID riid,
26748 _COM_Outptr_opt_ void **ppvResource);
26749
26750 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
26751#if !defined(_WIN32)
26752 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26753 ID3D12Device12 * This,
26754 UINT visibleMask,
26755 UINT numResourceDescs,
26756 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26757 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26758
26759#else
26760 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26761 ID3D12Device12 * This,
26762 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26763 UINT visibleMask,
26764 UINT numResourceDescs,
26765 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26766 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26767
26768#endif
26769
26770 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
26771 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
26772 ID3D12Device12 * This,
26773 _In_ ID3D12LifetimeOwner *pOwner,
26774 REFIID riid,
26775 _COM_Outptr_ void **ppvTracker);
26776
26777 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
26778 void ( STDMETHODCALLTYPE *RemoveDevice )(
26779 ID3D12Device12 * This);
26780
26781 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
26782 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
26783 ID3D12Device12 * This,
26784 _Inout_ UINT *pNumMetaCommands,
26785 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
26786
26787 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
26788 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
26789 ID3D12Device12 * This,
26790 _In_ REFGUID CommandId,
26791 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
26792 _Out_opt_ UINT *pTotalStructureSizeInBytes,
26793 _Inout_ UINT *pParameterCount,
26794 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
26795
26796 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
26797 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
26798 ID3D12Device12 * This,
26799 _In_ REFGUID CommandId,
26800 _In_ UINT NodeMask,
26801 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
26802 _In_ SIZE_T CreationParametersDataSizeInBytes,
26803 REFIID riid,
26804 _COM_Outptr_ void **ppMetaCommand);
26805
26806 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
26807 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
26808 ID3D12Device12 * This,
26809 const D3D12_STATE_OBJECT_DESC *pDesc,
26810 REFIID riid,
26811 _COM_Outptr_ void **ppStateObject);
26812
26813 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
26814 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
26815 ID3D12Device12 * This,
26816 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
26817 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
26818
26819 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
26820 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
26821 ID3D12Device12 * This,
26822 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
26823 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
26824
26825 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
26826 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
26827 ID3D12Device12 * This,
26828 D3D12_BACKGROUND_PROCESSING_MODE Mode,
26829 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
26830 _In_opt_ HANDLE hEventToSignalUponCompletion,
26831 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
26832
26833 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
26834 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
26835 ID3D12Device12 * This,
26836 const D3D12_STATE_OBJECT_DESC *pAddition,
26837 ID3D12StateObject *pStateObjectToGrowFrom,
26838 REFIID riid,
26839 _COM_Outptr_ void **ppNewStateObject);
26840
26841 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
26842 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
26843 ID3D12Device12 * This,
26844 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
26845 _In_ REFIID riid,
26846 _COM_Outptr_ void **ppSession);
26847
26848 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
26849#if !defined(_WIN32)
26850 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26851 ID3D12Device12 * This,
26852 UINT visibleMask,
26853 UINT numResourceDescs,
26854 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26855 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26856
26857#else
26858 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26859 ID3D12Device12 * This,
26860 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26861 UINT visibleMask,
26862 UINT numResourceDescs,
26863 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26864 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26865
26866#endif
26867
26868 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
26869 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
26870 ID3D12Device12 * This,
26871 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26872 D3D12_HEAP_FLAGS HeapFlags,
26873 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26874 D3D12_RESOURCE_STATES InitialResourceState,
26875 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26876 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26877 REFIID riidResource,
26878 _COM_Outptr_opt_ void **ppvResource);
26879
26880 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
26881 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
26882 ID3D12Device12 * This,
26883 _In_ ID3D12Heap *pHeap,
26884 UINT64 HeapOffset,
26885 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26886 D3D12_RESOURCE_STATES InitialState,
26887 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26888 REFIID riid,
26889 _COM_Outptr_opt_ void **ppvResource);
26890
26891 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
26892 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
26893 ID3D12Device12 * This,
26894 _In_opt_ ID3D12Resource *pTargetedResource,
26895 _In_opt_ ID3D12Resource *pFeedbackResource,
26896 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26897
26898 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
26899 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
26900 ID3D12Device12 * This,
26901 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
26902 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26903 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26904 UINT64 BaseOffset,
26905 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26906 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26907 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26908 _Out_opt_ UINT64 *pTotalBytes);
26909
26910 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
26911 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
26912 ID3D12Device12 * This,
26913 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
26914 REFIID riid,
26915 _COM_Outptr_opt_ void **ppvSession);
26916
26917 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
26918 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
26919 ID3D12Device12 * This,
26920 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
26921 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
26922
26923 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
26924 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
26925 ID3D12Device12 * This,
26926 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26927 REFIID CreatorID,
26928 REFIID riid,
26929 _COM_Outptr_ void **ppCommandQueue);
26930
26931 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
26932 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
26933 ID3D12Device12 * This,
26934 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26935 D3D12_HEAP_FLAGS HeapFlags,
26936 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26937 D3D12_BARRIER_LAYOUT InitialLayout,
26938 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26939 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26940 UINT32 NumCastableFormats,
26941 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26942 REFIID riidResource,
26943 _COM_Outptr_opt_ void **ppvResource);
26944
26945 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
26946 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
26947 ID3D12Device12 * This,
26948 _In_ ID3D12Heap *pHeap,
26949 UINT64 HeapOffset,
26950 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26951 D3D12_BARRIER_LAYOUT InitialLayout,
26952 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26953 UINT32 NumCastableFormats,
26954 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26955 REFIID riid,
26956 _COM_Outptr_opt_ void **ppvResource);
26957
26958 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
26959 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
26960 ID3D12Device12 * This,
26961 _In_ const D3D12_RESOURCE_DESC *pDesc,
26962 D3D12_BARRIER_LAYOUT InitialLayout,
26963 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26964 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26965 UINT32 NumCastableFormats,
26966 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26967 REFIID riid,
26968 _COM_Outptr_opt_ void **ppvResource);
26969
26970 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
26971 void ( STDMETHODCALLTYPE *CreateSampler2 )(
26972 ID3D12Device12 * This,
26973 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
26974 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26975
26976 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
26977#if !defined(_WIN32)
26978 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26979 ID3D12Device12 * This,
26980 UINT visibleMask,
26981 UINT numResourceDescs,
26982 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26983 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26984 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26986
26987#else
26988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26989 ID3D12Device12 * This,
26990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26991 UINT visibleMask,
26992 UINT numResourceDescs,
26993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26994 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26995 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26996 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26997
26998#endif
26999
27000 END_INTERFACE
27001 } ID3D12Device12Vtbl;
27002
27003 interface ID3D12Device12
27004 {
27005 CONST_VTBL struct ID3D12Device12Vtbl *lpVtbl;
27006 };
27007
27008
27009
27010#ifdef COBJMACROS
27011
27012
27013#define ID3D12Device12_QueryInterface(This,riid,ppvObject) \
27014 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
27015
27016#define ID3D12Device12_AddRef(This) \
27017 ( (This)->lpVtbl -> AddRef(This) )
27018
27019#define ID3D12Device12_Release(This) \
27020 ( (This)->lpVtbl -> Release(This) )
27021
27022
27023#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData) \
27024 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
27025
27026#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData) \
27027 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
27028
27029#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData) \
27030 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
27031
27032#define ID3D12Device12_SetName(This,Name) \
27033 ( (This)->lpVtbl -> SetName(This,Name) )
27034
27035
27036#define ID3D12Device12_GetNodeCount(This) \
27037 ( (This)->lpVtbl -> GetNodeCount(This) )
27038
27039#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
27040 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
27041
27042#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
27043 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
27044
27045#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
27046 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
27047
27048#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
27049 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
27050
27051#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
27052 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
27053
27054#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
27055 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
27056
27057#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
27058 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
27059
27060#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
27061 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
27062
27063#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
27064 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
27065
27066#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor) \
27067 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
27068
27069#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
27070 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
27071
27072#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
27073 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
27074
27075#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
27076 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
27077
27078#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
27079 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
27080
27081#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor) \
27082 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
27083
27084#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
27085 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
27086
27087#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
27088 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
27089#if !defined(_WIN32)
27090
27091#define ID3D12Device12_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
27092 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
27093#else
27094#define ID3D12Device12_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
27095 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
27096#endif
27097#if !defined(_WIN32)
27098
27099#define ID3D12Device12_GetCustomHeapProperties(This,nodeMask,heapType) \
27100 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
27101#else
27102#define ID3D12Device12_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
27103 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
27104#endif
27105
27106#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
27107 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
27108
27109#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap) \
27110 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
27111
27112#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27113 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27114
27115#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27116 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27117
27118#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
27119 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
27120
27121#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
27122 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
27123
27124#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
27125 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
27126
27127#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects) \
27128 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
27129
27130#define ID3D12Device12_Evict(This,NumObjects,ppObjects) \
27131 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
27132
27133#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence) \
27134 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
27135
27136#define ID3D12Device12_GetDeviceRemovedReason(This) \
27137 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
27138
27139#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27140 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27141
27142#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
27143 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
27144
27145#define ID3D12Device12_SetStablePowerState(This,Enable) \
27146 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
27147
27148#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
27149 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
27150
27151#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
27152 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
27153#if !defined(_WIN32)
27154
27155#define ID3D12Device12_GetAdapterLuid(This) \
27156 ( (This)->lpVtbl -> GetAdapterLuid(This) )
27157#else
27158#define ID3D12Device12_GetAdapterLuid(This,RetVal) \
27159 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
27160#endif
27161
27162
27163#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
27164 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
27165
27166#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
27167 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
27168
27169#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
27170 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
27171
27172
27173#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
27174 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
27175
27176
27177#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
27178 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
27179
27180#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
27181 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
27182
27183#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
27184 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
27185
27186
27187#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
27188 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
27189
27190#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
27191 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
27192
27193#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27194 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27195
27196#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
27197 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
27198
27199#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
27200 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
27201#if !defined(_WIN32)
27202
27203#define ID3D12Device12_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27204 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27205#else
27206#define ID3D12Device12_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27207 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27208#endif
27209
27210
27211#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
27212 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
27213
27214#define ID3D12Device12_RemoveDevice(This) \
27215 ( (This)->lpVtbl -> RemoveDevice(This) )
27216
27217#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
27218 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
27219
27220#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
27221 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
27222
27223#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
27224 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
27225
27226#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject) \
27227 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
27228
27229#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
27230 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
27231
27232#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
27233 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
27234
27235
27236#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
27237 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
27238
27239
27240#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
27241 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
27242
27243#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
27244 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
27245
27246#if !defined(_WIN32)
27247
27248#define ID3D12Device12_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27249 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27250#else
27251#define ID3D12Device12_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27252 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27253#endif
27254
27255#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27256 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27257
27258#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27259 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27260
27261#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
27262 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
27263
27264#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27265 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27266
27267
27268#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
27269 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
27270
27271#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control) \
27272 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
27273
27274#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
27275 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
27276
27277
27278#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
27279 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
27280
27281#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27282 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27283
27284#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27285 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27286
27287
27288#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor) \
27289 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
27290
27291#if !defined(_WIN32)
27292
27293#define ID3D12Device12_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27294 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27295#else
27296#define ID3D12Device12_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27297 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27298#endif
27299
27300#endif /* COBJMACROS */
27301
27302
27303#endif /* C style interface */
27304
27305
27306
27307
27308#endif /* __ID3D12Device12_INTERFACE_DEFINED__ */
27309
27310
27311#ifndef __ID3D12Device13_INTERFACE_DEFINED__
27312#define __ID3D12Device13_INTERFACE_DEFINED__
27313
27314/* interface ID3D12Device13 */
27315/* [unique][local][object][uuid] */
27316
27317
27318EXTERN_C const IID IID_ID3D12Device13;
27319
27320#if defined(__cplusplus) && !defined(CINTERFACE)
27321
27322 MIDL_INTERFACE("14eecffc-4df8-40f7-a118-5c816f45695e")
27323 ID3D12Device13 : public ID3D12Device12
27324 {
27325 public:
27326 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress1(
27327 _In_ const void *pAddress,
27328 SIZE_T size,
27329 REFIID riid,
27330 _COM_Outptr_ void **ppvHeap) = 0;
27331
27332 };
27333
27334
27335#else /* C style interface */
27336
27337 typedef struct ID3D12Device13Vtbl
27338 {
27339 BEGIN_INTERFACE
27340
27341 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
27342 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
27343 ID3D12Device13 * This,
27344 REFIID riid,
27345 _COM_Outptr_ void **ppvObject);
27346
27347 DECLSPEC_XFGVIRT(IUnknown, AddRef)
27348 ULONG ( STDMETHODCALLTYPE *AddRef )(
27349 ID3D12Device13 * This);
27350
27351 DECLSPEC_XFGVIRT(IUnknown, Release)
27352 ULONG ( STDMETHODCALLTYPE *Release )(
27353 ID3D12Device13 * This);
27354
27355 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
27356 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
27357 ID3D12Device13 * This,
27358 _In_ REFGUID guid,
27359 _Inout_ UINT *pDataSize,
27360 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
27361
27362 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
27363 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
27364 ID3D12Device13 * This,
27365 _In_ REFGUID guid,
27366 _In_ UINT DataSize,
27367 _In_reads_bytes_opt_( DataSize ) const void *pData);
27368
27369 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
27370 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
27371 ID3D12Device13 * This,
27372 _In_ REFGUID guid,
27373 _In_opt_ const IUnknown *pData);
27374
27375 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
27376 HRESULT ( STDMETHODCALLTYPE *SetName )(
27377 ID3D12Device13 * This,
27378 _In_z_ LPCWSTR Name);
27379
27380 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
27381 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
27382 ID3D12Device13 * This);
27383
27384 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
27385 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
27386 ID3D12Device13 * This,
27387 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27388 REFIID riid,
27389 _COM_Outptr_ void **ppCommandQueue);
27390
27391 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
27392 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
27393 ID3D12Device13 * This,
27394 _In_ D3D12_COMMAND_LIST_TYPE type,
27395 REFIID riid,
27396 _COM_Outptr_ void **ppCommandAllocator);
27397
27398 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
27399 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
27400 ID3D12Device13 * This,
27401 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
27402 REFIID riid,
27403 _COM_Outptr_ void **ppPipelineState);
27404
27405 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
27406 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
27407 ID3D12Device13 * This,
27408 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
27409 REFIID riid,
27410 _COM_Outptr_ void **ppPipelineState);
27411
27412 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
27413 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
27414 ID3D12Device13 * This,
27415 _In_ UINT nodeMask,
27416 _In_ D3D12_COMMAND_LIST_TYPE type,
27417 _In_ ID3D12CommandAllocator *pCommandAllocator,
27418 _In_opt_ ID3D12PipelineState *pInitialState,
27419 REFIID riid,
27420 _COM_Outptr_ void **ppCommandList);
27421
27422 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
27423 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
27424 ID3D12Device13 * This,
27425 D3D12_FEATURE Feature,
27426 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
27427 UINT FeatureSupportDataSize);
27428
27429 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
27430 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
27431 ID3D12Device13 * This,
27432 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
27433 REFIID riid,
27434 _COM_Outptr_ void **ppvHeap);
27435
27436 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
27437 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
27438 ID3D12Device13 * This,
27439 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
27440
27441 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
27442 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
27443 ID3D12Device13 * This,
27444 _In_ UINT nodeMask,
27445 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
27446 _In_ SIZE_T blobLengthInBytes,
27447 REFIID riid,
27448 _COM_Outptr_ void **ppvRootSignature);
27449
27450 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
27451 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
27452 ID3D12Device13 * This,
27453 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
27454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27455
27456 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
27457 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
27458 ID3D12Device13 * This,
27459 _In_opt_ ID3D12Resource *pResource,
27460 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
27461 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27462
27463 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
27464 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
27465 ID3D12Device13 * This,
27466 _In_opt_ ID3D12Resource *pResource,
27467 _In_opt_ ID3D12Resource *pCounterResource,
27468 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
27469 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27470
27471 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
27472 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
27473 ID3D12Device13 * This,
27474 _In_opt_ ID3D12Resource *pResource,
27475 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
27476 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27477
27478 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
27479 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
27480 ID3D12Device13 * This,
27481 _In_opt_ ID3D12Resource *pResource,
27482 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
27483 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27484
27485 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
27486 void ( STDMETHODCALLTYPE *CreateSampler )(
27487 ID3D12Device13 * This,
27488 _In_ const D3D12_SAMPLER_DESC *pDesc,
27489 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27490
27491 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
27492 void ( STDMETHODCALLTYPE *CopyDescriptors )(
27493 ID3D12Device13 * This,
27494 _In_ UINT NumDestDescriptorRanges,
27495 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
27496 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
27497 _In_ UINT NumSrcDescriptorRanges,
27498 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
27499 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
27500 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27501
27502 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
27503 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
27504 ID3D12Device13 * This,
27505 _In_ UINT NumDescriptors,
27506 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
27507 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
27508 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27509
27510 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
27511#if !defined(_WIN32)
27512 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27513 ID3D12Device13 * This,
27514 _In_ UINT visibleMask,
27515 _In_ UINT numResourceDescs,
27516 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27517
27518#else
27519 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27520 ID3D12Device13 * This,
27521 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27522 _In_ UINT visibleMask,
27523 _In_ UINT numResourceDescs,
27524 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27525
27526#endif
27527
27528 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
27529#if !defined(_WIN32)
27530 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27531 ID3D12Device13 * This,
27532 _In_ UINT nodeMask,
27533 D3D12_HEAP_TYPE heapType);
27534
27535#else
27536 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27537 ID3D12Device13 * This,
27538 D3D12_HEAP_PROPERTIES * RetVal,
27539 _In_ UINT nodeMask,
27540 D3D12_HEAP_TYPE heapType);
27541
27542#endif
27543
27544 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
27545 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
27546 ID3D12Device13 * This,
27547 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27548 D3D12_HEAP_FLAGS HeapFlags,
27549 _In_ const D3D12_RESOURCE_DESC *pDesc,
27550 D3D12_RESOURCE_STATES InitialResourceState,
27551 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27552 REFIID riidResource,
27553 _COM_Outptr_opt_ void **ppvResource);
27554
27555 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
27556 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
27557 ID3D12Device13 * This,
27558 _In_ const D3D12_HEAP_DESC *pDesc,
27559 REFIID riid,
27560 _COM_Outptr_opt_ void **ppvHeap);
27561
27562 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
27563 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
27564 ID3D12Device13 * This,
27565 _In_ ID3D12Heap *pHeap,
27566 UINT64 HeapOffset,
27567 _In_ const D3D12_RESOURCE_DESC *pDesc,
27568 D3D12_RESOURCE_STATES InitialState,
27569 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27570 REFIID riid,
27571 _COM_Outptr_opt_ void **ppvResource);
27572
27573 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
27574 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
27575 ID3D12Device13 * This,
27576 _In_ const D3D12_RESOURCE_DESC *pDesc,
27577 D3D12_RESOURCE_STATES InitialState,
27578 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27579 REFIID riid,
27580 _COM_Outptr_opt_ void **ppvResource);
27581
27582 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
27583 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
27584 ID3D12Device13 * This,
27585 _In_ ID3D12DeviceChild *pObject,
27586 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
27587 DWORD Access,
27588 _In_opt_ LPCWSTR Name,
27589 _Out_ HANDLE *pHandle);
27590
27591 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
27592 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
27593 ID3D12Device13 * This,
27594 _In_ HANDLE NTHandle,
27595 REFIID riid,
27596 _COM_Outptr_opt_ void **ppvObj);
27597
27598 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
27599 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
27600 ID3D12Device13 * This,
27601 _In_ LPCWSTR Name,
27602 DWORD Access,
27603 /* [annotation][out] */
27604 _Out_ HANDLE *pNTHandle);
27605
27606 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
27607 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
27608 ID3D12Device13 * This,
27609 UINT NumObjects,
27610 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27611
27612 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
27613 HRESULT ( STDMETHODCALLTYPE *Evict )(
27614 ID3D12Device13 * This,
27615 UINT NumObjects,
27616 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27617
27618 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
27619 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
27620 ID3D12Device13 * This,
27621 UINT64 InitialValue,
27622 D3D12_FENCE_FLAGS Flags,
27623 REFIID riid,
27624 _COM_Outptr_ void **ppFence);
27625
27626 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
27627 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
27628 ID3D12Device13 * This);
27629
27630 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
27631 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
27632 ID3D12Device13 * This,
27633 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
27634 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27635 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27636 UINT64 BaseOffset,
27637 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27638 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27639 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27640 _Out_opt_ UINT64 *pTotalBytes);
27641
27642 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
27643 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
27644 ID3D12Device13 * This,
27645 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
27646 REFIID riid,
27647 _COM_Outptr_opt_ void **ppvHeap);
27648
27649 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
27650 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
27651 ID3D12Device13 * This,
27652 BOOL Enable);
27653
27654 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
27655 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
27656 ID3D12Device13 * This,
27657 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
27658 _In_opt_ ID3D12RootSignature *pRootSignature,
27659 REFIID riid,
27660 _COM_Outptr_opt_ void **ppvCommandSignature);
27661
27662 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
27663 void ( STDMETHODCALLTYPE *GetResourceTiling )(
27664 ID3D12Device13 * This,
27665 _In_ ID3D12Resource *pTiledResource,
27666 _Out_opt_ UINT *pNumTilesForEntireResource,
27667 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
27668 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
27669 _Inout_opt_ UINT *pNumSubresourceTilings,
27670 _In_ UINT FirstSubresourceTilingToGet,
27671 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
27672
27673 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
27674#if !defined(_WIN32)
27675 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
27676 ID3D12Device13 * This);
27677
27678#else
27679 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
27680 ID3D12Device13 * This,
27681 LUID * RetVal);
27682
27683#endif
27684
27685 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
27686 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
27687 ID3D12Device13 * This,
27688 _In_reads_(BlobLength) const void *pLibraryBlob,
27689 SIZE_T BlobLength,
27690 REFIID riid,
27691 _COM_Outptr_ void **ppPipelineLibrary);
27692
27693 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
27694 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
27695 ID3D12Device13 * This,
27696 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
27697 _In_reads_(NumFences) const UINT64 *pFenceValues,
27698 UINT NumFences,
27699 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
27700 HANDLE hEvent);
27701
27702 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
27703 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
27704 ID3D12Device13 * This,
27705 UINT NumObjects,
27706 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27707 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
27708
27709 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
27710 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
27711 ID3D12Device13 * This,
27712 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
27713 REFIID riid,
27714 _COM_Outptr_ void **ppPipelineState);
27715
27716 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
27717 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
27718 ID3D12Device13 * This,
27719 _In_ const void *pAddress,
27720 REFIID riid,
27721 _COM_Outptr_ void **ppvHeap);
27722
27723 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
27724 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
27725 ID3D12Device13 * This,
27726 _In_ HANDLE hFileMapping,
27727 REFIID riid,
27728 _COM_Outptr_ void **ppvHeap);
27729
27730 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
27731 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
27732 ID3D12Device13 * This,
27733 D3D12_RESIDENCY_FLAGS Flags,
27734 UINT NumObjects,
27735 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27736 _In_ ID3D12Fence *pFenceToSignal,
27737 UINT64 FenceValueToSignal);
27738
27739 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
27740 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
27741 ID3D12Device13 * This,
27742 _In_ UINT nodeMask,
27743 _In_ D3D12_COMMAND_LIST_TYPE type,
27744 _In_ D3D12_COMMAND_LIST_FLAGS flags,
27745 REFIID riid,
27746 _COM_Outptr_ void **ppCommandList);
27747
27748 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
27749 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
27750 ID3D12Device13 * This,
27751 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
27752 _In_ REFIID riid,
27753 _COM_Outptr_ void **ppSession);
27754
27755 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
27756 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
27757 ID3D12Device13 * This,
27758 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27759 D3D12_HEAP_FLAGS HeapFlags,
27760 _In_ const D3D12_RESOURCE_DESC *pDesc,
27761 D3D12_RESOURCE_STATES InitialResourceState,
27762 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27763 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27764 REFIID riidResource,
27765 _COM_Outptr_opt_ void **ppvResource);
27766
27767 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
27768 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
27769 ID3D12Device13 * This,
27770 _In_ const D3D12_HEAP_DESC *pDesc,
27771 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27772 REFIID riid,
27773 _COM_Outptr_opt_ void **ppvHeap);
27774
27775 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
27776 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
27777 ID3D12Device13 * This,
27778 _In_ const D3D12_RESOURCE_DESC *pDesc,
27779 D3D12_RESOURCE_STATES InitialState,
27780 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27781 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27782 REFIID riid,
27783 _COM_Outptr_opt_ void **ppvResource);
27784
27785 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
27786#if !defined(_WIN32)
27787 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27788 ID3D12Device13 * This,
27789 UINT visibleMask,
27790 UINT numResourceDescs,
27791 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27792 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27793
27794#else
27795 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27796 ID3D12Device13 * This,
27797 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27798 UINT visibleMask,
27799 UINT numResourceDescs,
27800 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27801 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27802
27803#endif
27804
27805 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
27806 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
27807 ID3D12Device13 * This,
27808 _In_ ID3D12LifetimeOwner *pOwner,
27809 REFIID riid,
27810 _COM_Outptr_ void **ppvTracker);
27811
27812 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
27813 void ( STDMETHODCALLTYPE *RemoveDevice )(
27814 ID3D12Device13 * This);
27815
27816 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
27817 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
27818 ID3D12Device13 * This,
27819 _Inout_ UINT *pNumMetaCommands,
27820 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
27821
27822 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
27823 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
27824 ID3D12Device13 * This,
27825 _In_ REFGUID CommandId,
27826 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
27827 _Out_opt_ UINT *pTotalStructureSizeInBytes,
27828 _Inout_ UINT *pParameterCount,
27829 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
27830
27831 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
27832 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
27833 ID3D12Device13 * This,
27834 _In_ REFGUID CommandId,
27835 _In_ UINT NodeMask,
27836 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
27837 _In_ SIZE_T CreationParametersDataSizeInBytes,
27838 REFIID riid,
27839 _COM_Outptr_ void **ppMetaCommand);
27840
27841 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
27842 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
27843 ID3D12Device13 * This,
27844 const D3D12_STATE_OBJECT_DESC *pDesc,
27845 REFIID riid,
27846 _COM_Outptr_ void **ppStateObject);
27847
27848 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
27849 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
27850 ID3D12Device13 * This,
27851 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
27852 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
27853
27854 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
27855 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
27856 ID3D12Device13 * This,
27857 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
27858 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
27859
27860 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
27861 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
27862 ID3D12Device13 * This,
27863 D3D12_BACKGROUND_PROCESSING_MODE Mode,
27864 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
27865 _In_opt_ HANDLE hEventToSignalUponCompletion,
27866 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
27867
27868 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
27869 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
27870 ID3D12Device13 * This,
27871 const D3D12_STATE_OBJECT_DESC *pAddition,
27872 ID3D12StateObject *pStateObjectToGrowFrom,
27873 REFIID riid,
27874 _COM_Outptr_ void **ppNewStateObject);
27875
27876 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
27877 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
27878 ID3D12Device13 * This,
27879 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
27880 _In_ REFIID riid,
27881 _COM_Outptr_ void **ppSession);
27882
27883 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
27884#if !defined(_WIN32)
27885 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27886 ID3D12Device13 * This,
27887 UINT visibleMask,
27888 UINT numResourceDescs,
27889 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27890 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27891
27892#else
27893 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27894 ID3D12Device13 * This,
27895 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27896 UINT visibleMask,
27897 UINT numResourceDescs,
27898 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27899 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27900
27901#endif
27902
27903 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
27904 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
27905 ID3D12Device13 * This,
27906 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27907 D3D12_HEAP_FLAGS HeapFlags,
27908 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27909 D3D12_RESOURCE_STATES InitialResourceState,
27910 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27911 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27912 REFIID riidResource,
27913 _COM_Outptr_opt_ void **ppvResource);
27914
27915 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
27916 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
27917 ID3D12Device13 * This,
27918 _In_ ID3D12Heap *pHeap,
27919 UINT64 HeapOffset,
27920 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27921 D3D12_RESOURCE_STATES InitialState,
27922 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27923 REFIID riid,
27924 _COM_Outptr_opt_ void **ppvResource);
27925
27926 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
27927 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
27928 ID3D12Device13 * This,
27929 _In_opt_ ID3D12Resource *pTargetedResource,
27930 _In_opt_ ID3D12Resource *pFeedbackResource,
27931 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27932
27933 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
27934 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
27935 ID3D12Device13 * This,
27936 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
27937 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27938 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27939 UINT64 BaseOffset,
27940 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27941 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27942 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27943 _Out_opt_ UINT64 *pTotalBytes);
27944
27945 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
27946 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
27947 ID3D12Device13 * This,
27948 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
27949 REFIID riid,
27950 _COM_Outptr_opt_ void **ppvSession);
27951
27952 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
27953 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
27954 ID3D12Device13 * This,
27955 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
27956 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
27957
27958 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
27959 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
27960 ID3D12Device13 * This,
27961 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27962 REFIID CreatorID,
27963 REFIID riid,
27964 _COM_Outptr_ void **ppCommandQueue);
27965
27966 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
27967 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
27968 ID3D12Device13 * This,
27969 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27970 D3D12_HEAP_FLAGS HeapFlags,
27971 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27972 D3D12_BARRIER_LAYOUT InitialLayout,
27973 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27974 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27975 UINT32 NumCastableFormats,
27976 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27977 REFIID riidResource,
27978 _COM_Outptr_opt_ void **ppvResource);
27979
27980 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
27981 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
27982 ID3D12Device13 * This,
27983 _In_ ID3D12Heap *pHeap,
27984 UINT64 HeapOffset,
27985 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27986 D3D12_BARRIER_LAYOUT InitialLayout,
27987 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27988 UINT32 NumCastableFormats,
27989 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27990 REFIID riid,
27991 _COM_Outptr_opt_ void **ppvResource);
27992
27993 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
27994 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
27995 ID3D12Device13 * This,
27996 _In_ const D3D12_RESOURCE_DESC *pDesc,
27997 D3D12_BARRIER_LAYOUT InitialLayout,
27998 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27999 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28000 UINT32 NumCastableFormats,
28001 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
28002 REFIID riid,
28003 _COM_Outptr_opt_ void **ppvResource);
28004
28005 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
28006 void ( STDMETHODCALLTYPE *CreateSampler2 )(
28007 ID3D12Device13 * This,
28008 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
28009 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28010
28011 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
28012#if !defined(_WIN32)
28013 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28014 ID3D12Device13 * This,
28015 UINT visibleMask,
28016 UINT numResourceDescs,
28017 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28018 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28019 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28020 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28021
28022#else
28023 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28024 ID3D12Device13 * This,
28025 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28026 UINT visibleMask,
28027 UINT numResourceDescs,
28028 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28029 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28030 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28031 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28032
28033#endif
28034
28035 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
28036 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
28037 ID3D12Device13 * This,
28038 _In_ const void *pAddress,
28039 SIZE_T size,
28040 REFIID riid,
28041 _COM_Outptr_ void **ppvHeap);
28042
28043 END_INTERFACE
28044 } ID3D12Device13Vtbl;
28045
28046 interface ID3D12Device13
28047 {
28048 CONST_VTBL struct ID3D12Device13Vtbl *lpVtbl;
28049 };
28050
28051
28052
28053#ifdef COBJMACROS
28054
28055
28056#define ID3D12Device13_QueryInterface(This,riid,ppvObject) \
28057 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
28058
28059#define ID3D12Device13_AddRef(This) \
28060 ( (This)->lpVtbl -> AddRef(This) )
28061
28062#define ID3D12Device13_Release(This) \
28063 ( (This)->lpVtbl -> Release(This) )
28064
28065
28066#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData) \
28067 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
28068
28069#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData) \
28070 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
28071
28072#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData) \
28073 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
28074
28075#define ID3D12Device13_SetName(This,Name) \
28076 ( (This)->lpVtbl -> SetName(This,Name) )
28077
28078
28079#define ID3D12Device13_GetNodeCount(This) \
28080 ( (This)->lpVtbl -> GetNodeCount(This) )
28081
28082#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
28083 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
28084
28085#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
28086 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
28087
28088#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
28089 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
28090
28091#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
28092 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
28093
28094#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
28095 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
28096
28097#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
28098 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
28099
28100#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
28101 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
28102
28103#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
28104 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
28105
28106#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
28107 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
28108
28109#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor) \
28110 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
28111
28112#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
28113 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
28114
28115#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
28116 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
28117
28118#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
28119 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
28120
28121#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
28122 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
28123
28124#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor) \
28125 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
28126
28127#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
28128 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
28129
28130#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
28131 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
28132#if !defined(_WIN32)
28133
28134#define ID3D12Device13_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
28135 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
28136#else
28137#define ID3D12Device13_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
28138 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
28139#endif
28140#if !defined(_WIN32)
28141
28142#define ID3D12Device13_GetCustomHeapProperties(This,nodeMask,heapType) \
28143 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
28144#else
28145#define ID3D12Device13_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
28146 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
28147#endif
28148
28149#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
28150 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
28151
28152#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap) \
28153 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
28154
28155#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28156 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28157
28158#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28159 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28160
28161#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
28162 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
28163
28164#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
28165 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
28166
28167#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
28168 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
28169
28170#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects) \
28171 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
28172
28173#define ID3D12Device13_Evict(This,NumObjects,ppObjects) \
28174 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
28175
28176#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence) \
28177 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
28178
28179#define ID3D12Device13_GetDeviceRemovedReason(This) \
28180 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
28181
28182#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28183 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28184
28185#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
28186 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
28187
28188#define ID3D12Device13_SetStablePowerState(This,Enable) \
28189 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
28190
28191#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
28192 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
28193
28194#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
28195 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
28196#if !defined(_WIN32)
28197
28198#define ID3D12Device13_GetAdapterLuid(This) \
28199 ( (This)->lpVtbl -> GetAdapterLuid(This) )
28200#else
28201#define ID3D12Device13_GetAdapterLuid(This,RetVal) \
28202 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
28203#endif
28204
28205
28206#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
28207 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
28208
28209#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
28210 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
28211
28212#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
28213 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
28214
28215
28216#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
28217 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
28218
28219
28220#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
28221 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
28222
28223#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
28224 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
28225
28226#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
28227 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
28228
28229
28230#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
28231 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
28232
28233#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
28234 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
28235
28236#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28237 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28238
28239#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
28240 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
28241
28242#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
28243 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
28244#if !defined(_WIN32)
28245
28246#define ID3D12Device13_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28247 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28248#else
28249#define ID3D12Device13_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28250 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28251#endif
28252
28253
28254#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
28255 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
28256
28257#define ID3D12Device13_RemoveDevice(This) \
28258 ( (This)->lpVtbl -> RemoveDevice(This) )
28259
28260#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
28261 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
28262
28263#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
28264 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
28265
28266#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
28267 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
28268
28269#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject) \
28270 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
28271
28272#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
28273 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
28274
28275#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
28276 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
28277
28278
28279#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
28280 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
28281
28282
28283#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
28284 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
28285
28286#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
28287 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
28288
28289#if !defined(_WIN32)
28290
28291#define ID3D12Device13_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28292 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28293#else
28294#define ID3D12Device13_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28295 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28296#endif
28297
28298#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28299 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28300
28301#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28302 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28303
28304#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
28305 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
28306
28307#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28308 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28309
28310
28311#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
28312 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
28313
28314#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control) \
28315 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
28316
28317#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
28318 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
28319
28320
28321#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
28322 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
28323
28324#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28325 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28326
28327#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28328 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28329
28330
28331#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor) \
28332 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
28333
28334#if !defined(_WIN32)
28335
28336#define ID3D12Device13_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28337 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28338#else
28339#define ID3D12Device13_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28340 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28341#endif
28342
28343
28344#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
28345 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
28346
28347#endif /* COBJMACROS */
28348
28349
28350#endif /* C style interface */
28351
28352
28353
28354
28355#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
28356
28357
28358#ifndef __ID3D12Device14_INTERFACE_DEFINED__
28359#define __ID3D12Device14_INTERFACE_DEFINED__
28360
28361/* interface ID3D12Device14 */
28362/* [unique][local][object][uuid] */
28363
28364
28365EXTERN_C const IID IID_ID3D12Device14;
28366
28367#if defined(__cplusplus) && !defined(CINTERFACE)
28368
28369 MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
28370 ID3D12Device14 : public ID3D12Device13
28371 {
28372 public:
28373 virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
28374 _In_ UINT nodeMask,
28375 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
28376 _In_ SIZE_T blobLengthInBytes,
28377 _In_opt_ LPCWSTR subobjectName,
28378 REFIID riid,
28379 _COM_Outptr_ void **ppvRootSignature) = 0;
28380
28381 };
28382
28383
28384#else /* C style interface */
28385
28386 typedef struct ID3D12Device14Vtbl
28387 {
28388 BEGIN_INTERFACE
28389
28390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
28391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
28392 ID3D12Device14 * This,
28393 REFIID riid,
28394 _COM_Outptr_ void **ppvObject);
28395
28396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
28397 ULONG ( STDMETHODCALLTYPE *AddRef )(
28398 ID3D12Device14 * This);
28399
28400 DECLSPEC_XFGVIRT(IUnknown, Release)
28401 ULONG ( STDMETHODCALLTYPE *Release )(
28402 ID3D12Device14 * This);
28403
28404 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
28405 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
28406 ID3D12Device14 * This,
28407 _In_ REFGUID guid,
28408 _Inout_ UINT *pDataSize,
28409 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
28410
28411 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
28412 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
28413 ID3D12Device14 * This,
28414 _In_ REFGUID guid,
28415 _In_ UINT DataSize,
28416 _In_reads_bytes_opt_( DataSize ) const void *pData);
28417
28418 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
28419 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
28420 ID3D12Device14 * This,
28421 _In_ REFGUID guid,
28422 _In_opt_ const IUnknown *pData);
28423
28424 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
28425 HRESULT ( STDMETHODCALLTYPE *SetName )(
28426 ID3D12Device14 * This,
28427 _In_z_ LPCWSTR Name);
28428
28429 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
28430 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
28431 ID3D12Device14 * This);
28432
28433 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
28434 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
28435 ID3D12Device14 * This,
28436 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
28437 REFIID riid,
28438 _COM_Outptr_ void **ppCommandQueue);
28439
28440 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
28441 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
28442 ID3D12Device14 * This,
28443 _In_ D3D12_COMMAND_LIST_TYPE type,
28444 REFIID riid,
28445 _COM_Outptr_ void **ppCommandAllocator);
28446
28447 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
28448 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
28449 ID3D12Device14 * This,
28450 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
28451 REFIID riid,
28452 _COM_Outptr_ void **ppPipelineState);
28453
28454 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
28455 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
28456 ID3D12Device14 * This,
28457 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
28458 REFIID riid,
28459 _COM_Outptr_ void **ppPipelineState);
28460
28461 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
28462 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
28463 ID3D12Device14 * This,
28464 _In_ UINT nodeMask,
28465 _In_ D3D12_COMMAND_LIST_TYPE type,
28466 _In_ ID3D12CommandAllocator *pCommandAllocator,
28467 _In_opt_ ID3D12PipelineState *pInitialState,
28468 REFIID riid,
28469 _COM_Outptr_ void **ppCommandList);
28470
28471 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
28472 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
28473 ID3D12Device14 * This,
28474 D3D12_FEATURE Feature,
28475 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
28476 UINT FeatureSupportDataSize);
28477
28478 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
28479 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
28480 ID3D12Device14 * This,
28481 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
28482 REFIID riid,
28483 _COM_Outptr_ void **ppvHeap);
28484
28485 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
28486 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
28487 ID3D12Device14 * This,
28488 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
28489
28490 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
28491 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
28492 ID3D12Device14 * This,
28493 _In_ UINT nodeMask,
28494 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
28495 _In_ SIZE_T blobLengthInBytes,
28496 REFIID riid,
28497 _COM_Outptr_ void **ppvRootSignature);
28498
28499 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
28500 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
28501 ID3D12Device14 * This,
28502 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
28503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28504
28505 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
28506 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
28507 ID3D12Device14 * This,
28508 _In_opt_ ID3D12Resource *pResource,
28509 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
28510 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28511
28512 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
28513 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
28514 ID3D12Device14 * This,
28515 _In_opt_ ID3D12Resource *pResource,
28516 _In_opt_ ID3D12Resource *pCounterResource,
28517 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
28518 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28519
28520 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
28521 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
28522 ID3D12Device14 * This,
28523 _In_opt_ ID3D12Resource *pResource,
28524 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
28525 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28526
28527 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
28528 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
28529 ID3D12Device14 * This,
28530 _In_opt_ ID3D12Resource *pResource,
28531 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
28532 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28533
28534 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
28535 void ( STDMETHODCALLTYPE *CreateSampler )(
28536 ID3D12Device14 * This,
28537 _In_ const D3D12_SAMPLER_DESC *pDesc,
28538 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28539
28540 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
28541 void ( STDMETHODCALLTYPE *CopyDescriptors )(
28542 ID3D12Device14 * This,
28543 _In_ UINT NumDestDescriptorRanges,
28544 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
28545 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
28546 _In_ UINT NumSrcDescriptorRanges,
28547 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
28548 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
28549 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28550
28551 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
28552 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
28553 ID3D12Device14 * This,
28554 _In_ UINT NumDescriptors,
28555 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
28556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
28557 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28558
28559 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
28560#if !defined(_WIN32)
28561 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28562 ID3D12Device14 * This,
28563 _In_ UINT visibleMask,
28564 _In_ UINT numResourceDescs,
28565 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28566
28567#else
28568 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28569 ID3D12Device14 * This,
28570 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28571 _In_ UINT visibleMask,
28572 _In_ UINT numResourceDescs,
28573 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28574
28575#endif
28576
28577 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
28578#if !defined(_WIN32)
28579 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28580 ID3D12Device14 * This,
28581 _In_ UINT nodeMask,
28582 D3D12_HEAP_TYPE heapType);
28583
28584#else
28585 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28586 ID3D12Device14 * This,
28587 D3D12_HEAP_PROPERTIES * RetVal,
28588 _In_ UINT nodeMask,
28589 D3D12_HEAP_TYPE heapType);
28590
28591#endif
28592
28593 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
28594 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
28595 ID3D12Device14 * This,
28596 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28597 D3D12_HEAP_FLAGS HeapFlags,
28598 _In_ const D3D12_RESOURCE_DESC *pDesc,
28599 D3D12_RESOURCE_STATES InitialResourceState,
28600 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28601 REFIID riidResource,
28602 _COM_Outptr_opt_ void **ppvResource);
28603
28604 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
28605 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
28606 ID3D12Device14 * This,
28607 _In_ const D3D12_HEAP_DESC *pDesc,
28608 REFIID riid,
28609 _COM_Outptr_opt_ void **ppvHeap);
28610
28611 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
28612 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
28613 ID3D12Device14 * This,
28614 _In_ ID3D12Heap *pHeap,
28615 UINT64 HeapOffset,
28616 _In_ const D3D12_RESOURCE_DESC *pDesc,
28617 D3D12_RESOURCE_STATES InitialState,
28618 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28619 REFIID riid,
28620 _COM_Outptr_opt_ void **ppvResource);
28621
28622 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
28623 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
28624 ID3D12Device14 * This,
28625 _In_ const D3D12_RESOURCE_DESC *pDesc,
28626 D3D12_RESOURCE_STATES InitialState,
28627 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28628 REFIID riid,
28629 _COM_Outptr_opt_ void **ppvResource);
28630
28631 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
28632 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
28633 ID3D12Device14 * This,
28634 _In_ ID3D12DeviceChild *pObject,
28635 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
28636 DWORD Access,
28637 _In_opt_ LPCWSTR Name,
28638 _Out_ HANDLE *pHandle);
28639
28640 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
28641 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
28642 ID3D12Device14 * This,
28643 _In_ HANDLE NTHandle,
28644 REFIID riid,
28645 _COM_Outptr_opt_ void **ppvObj);
28646
28647 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
28648 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
28649 ID3D12Device14 * This,
28650 _In_ LPCWSTR Name,
28651 DWORD Access,
28652 /* [annotation][out] */
28653 _Out_ HANDLE *pNTHandle);
28654
28655 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
28656 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
28657 ID3D12Device14 * This,
28658 UINT NumObjects,
28659 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28660
28661 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
28662 HRESULT ( STDMETHODCALLTYPE *Evict )(
28663 ID3D12Device14 * This,
28664 UINT NumObjects,
28665 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28666
28667 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
28668 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
28669 ID3D12Device14 * This,
28670 UINT64 InitialValue,
28671 D3D12_FENCE_FLAGS Flags,
28672 REFIID riid,
28673 _COM_Outptr_ void **ppFence);
28674
28675 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
28676 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
28677 ID3D12Device14 * This);
28678
28679 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
28680 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
28681 ID3D12Device14 * This,
28682 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
28683 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28684 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28685 UINT64 BaseOffset,
28686 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28687 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28688 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28689 _Out_opt_ UINT64 *pTotalBytes);
28690
28691 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
28692 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
28693 ID3D12Device14 * This,
28694 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
28695 REFIID riid,
28696 _COM_Outptr_opt_ void **ppvHeap);
28697
28698 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
28699 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
28700 ID3D12Device14 * This,
28701 BOOL Enable);
28702
28703 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
28704 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
28705 ID3D12Device14 * This,
28706 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
28707 _In_opt_ ID3D12RootSignature *pRootSignature,
28708 REFIID riid,
28709 _COM_Outptr_opt_ void **ppvCommandSignature);
28710
28711 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
28712 void ( STDMETHODCALLTYPE *GetResourceTiling )(
28713 ID3D12Device14 * This,
28714 _In_ ID3D12Resource *pTiledResource,
28715 _Out_opt_ UINT *pNumTilesForEntireResource,
28716 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
28717 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
28718 _Inout_opt_ UINT *pNumSubresourceTilings,
28719 _In_ UINT FirstSubresourceTilingToGet,
28720 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
28721
28722 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
28723#if !defined(_WIN32)
28724 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
28725 ID3D12Device14 * This);
28726
28727#else
28728 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
28729 ID3D12Device14 * This,
28730 LUID * RetVal);
28731
28732#endif
28733
28734 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
28735 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
28736 ID3D12Device14 * This,
28737 _In_reads_(BlobLength) const void *pLibraryBlob,
28738 SIZE_T BlobLength,
28739 REFIID riid,
28740 _COM_Outptr_ void **ppPipelineLibrary);
28741
28742 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
28743 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
28744 ID3D12Device14 * This,
28745 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
28746 _In_reads_(NumFences) const UINT64 *pFenceValues,
28747 UINT NumFences,
28748 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
28749 HANDLE hEvent);
28750
28751 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
28752 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
28753 ID3D12Device14 * This,
28754 UINT NumObjects,
28755 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28756 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
28757
28758 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
28759 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
28760 ID3D12Device14 * This,
28761 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
28762 REFIID riid,
28763 _COM_Outptr_ void **ppPipelineState);
28764
28765 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
28766 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
28767 ID3D12Device14 * This,
28768 _In_ const void *pAddress,
28769 REFIID riid,
28770 _COM_Outptr_ void **ppvHeap);
28771
28772 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
28773 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
28774 ID3D12Device14 * This,
28775 _In_ HANDLE hFileMapping,
28776 REFIID riid,
28777 _COM_Outptr_ void **ppvHeap);
28778
28779 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
28780 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
28781 ID3D12Device14 * This,
28782 D3D12_RESIDENCY_FLAGS Flags,
28783 UINT NumObjects,
28784 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28785 _In_ ID3D12Fence *pFenceToSignal,
28786 UINT64 FenceValueToSignal);
28787
28788 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
28789 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
28790 ID3D12Device14 * This,
28791 _In_ UINT nodeMask,
28792 _In_ D3D12_COMMAND_LIST_TYPE type,
28793 _In_ D3D12_COMMAND_LIST_FLAGS flags,
28794 REFIID riid,
28795 _COM_Outptr_ void **ppCommandList);
28796
28797 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
28798 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
28799 ID3D12Device14 * This,
28800 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
28801 _In_ REFIID riid,
28802 _COM_Outptr_ void **ppSession);
28803
28804 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
28805 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
28806 ID3D12Device14 * This,
28807 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28808 D3D12_HEAP_FLAGS HeapFlags,
28809 _In_ const D3D12_RESOURCE_DESC *pDesc,
28810 D3D12_RESOURCE_STATES InitialResourceState,
28811 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28812 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28813 REFIID riidResource,
28814 _COM_Outptr_opt_ void **ppvResource);
28815
28816 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
28817 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
28818 ID3D12Device14 * This,
28819 _In_ const D3D12_HEAP_DESC *pDesc,
28820 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28821 REFIID riid,
28822 _COM_Outptr_opt_ void **ppvHeap);
28823
28824 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
28825 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
28826 ID3D12Device14 * This,
28827 _In_ const D3D12_RESOURCE_DESC *pDesc,
28828 D3D12_RESOURCE_STATES InitialState,
28829 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28830 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28831 REFIID riid,
28832 _COM_Outptr_opt_ void **ppvResource);
28833
28834 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
28835#if !defined(_WIN32)
28836 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28837 ID3D12Device14 * This,
28838 UINT visibleMask,
28839 UINT numResourceDescs,
28840 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28841 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28842
28843#else
28844 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28845 ID3D12Device14 * This,
28846 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28847 UINT visibleMask,
28848 UINT numResourceDescs,
28849 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28850 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28851
28852#endif
28853
28854 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
28855 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
28856 ID3D12Device14 * This,
28857 _In_ ID3D12LifetimeOwner *pOwner,
28858 REFIID riid,
28859 _COM_Outptr_ void **ppvTracker);
28860
28861 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
28862 void ( STDMETHODCALLTYPE *RemoveDevice )(
28863 ID3D12Device14 * This);
28864
28865 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
28866 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
28867 ID3D12Device14 * This,
28868 _Inout_ UINT *pNumMetaCommands,
28869 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
28870
28871 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
28872 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
28873 ID3D12Device14 * This,
28874 _In_ REFGUID CommandId,
28875 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
28876 _Out_opt_ UINT *pTotalStructureSizeInBytes,
28877 _Inout_ UINT *pParameterCount,
28878 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
28879
28880 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
28881 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
28882 ID3D12Device14 * This,
28883 _In_ REFGUID CommandId,
28884 _In_ UINT NodeMask,
28885 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
28886 _In_ SIZE_T CreationParametersDataSizeInBytes,
28887 REFIID riid,
28888 _COM_Outptr_ void **ppMetaCommand);
28889
28890 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
28891 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
28892 ID3D12Device14 * This,
28893 const D3D12_STATE_OBJECT_DESC *pDesc,
28894 REFIID riid,
28895 _COM_Outptr_ void **ppStateObject);
28896
28897 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
28898 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
28899 ID3D12Device14 * This,
28900 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
28901 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
28902
28903 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
28904 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
28905 ID3D12Device14 * This,
28906 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
28907 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
28908
28909 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
28910 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
28911 ID3D12Device14 * This,
28912 D3D12_BACKGROUND_PROCESSING_MODE Mode,
28913 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
28914 _In_opt_ HANDLE hEventToSignalUponCompletion,
28915 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
28916
28917 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
28918 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
28919 ID3D12Device14 * This,
28920 const D3D12_STATE_OBJECT_DESC *pAddition,
28921 ID3D12StateObject *pStateObjectToGrowFrom,
28922 REFIID riid,
28923 _COM_Outptr_ void **ppNewStateObject);
28924
28925 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
28926 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
28927 ID3D12Device14 * This,
28928 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
28929 _In_ REFIID riid,
28930 _COM_Outptr_ void **ppSession);
28931
28932 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
28933#if !defined(_WIN32)
28934 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28935 ID3D12Device14 * This,
28936 UINT visibleMask,
28937 UINT numResourceDescs,
28938 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28939 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28940
28941#else
28942 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28943 ID3D12Device14 * This,
28944 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28945 UINT visibleMask,
28946 UINT numResourceDescs,
28947 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28948 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28949
28950#endif
28951
28952 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
28953 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
28954 ID3D12Device14 * This,
28955 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28956 D3D12_HEAP_FLAGS HeapFlags,
28957 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28958 D3D12_RESOURCE_STATES InitialResourceState,
28959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28961 REFIID riidResource,
28962 _COM_Outptr_opt_ void **ppvResource);
28963
28964 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
28965 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
28966 ID3D12Device14 * This,
28967 _In_ ID3D12Heap *pHeap,
28968 UINT64 HeapOffset,
28969 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28970 D3D12_RESOURCE_STATES InitialState,
28971 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28972 REFIID riid,
28973 _COM_Outptr_opt_ void **ppvResource);
28974
28975 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
28976 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
28977 ID3D12Device14 * This,
28978 _In_opt_ ID3D12Resource *pTargetedResource,
28979 _In_opt_ ID3D12Resource *pFeedbackResource,
28980 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28981
28982 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
28983 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
28984 ID3D12Device14 * This,
28985 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
28986 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28987 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28988 UINT64 BaseOffset,
28989 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28990 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28991 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28992 _Out_opt_ UINT64 *pTotalBytes);
28993
28994 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
28995 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
28996 ID3D12Device14 * This,
28997 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
28998 REFIID riid,
28999 _COM_Outptr_opt_ void **ppvSession);
29000
29001 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
29002 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
29003 ID3D12Device14 * This,
29004 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
29005 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
29006
29007 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
29008 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
29009 ID3D12Device14 * This,
29010 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
29011 REFIID CreatorID,
29012 REFIID riid,
29013 _COM_Outptr_ void **ppCommandQueue);
29014
29015 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
29016 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
29017 ID3D12Device14 * This,
29018 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
29019 D3D12_HEAP_FLAGS HeapFlags,
29020 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29021 D3D12_BARRIER_LAYOUT InitialLayout,
29022 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29023 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29024 UINT32 NumCastableFormats,
29025 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29026 REFIID riidResource,
29027 _COM_Outptr_opt_ void **ppvResource);
29028
29029 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
29030 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
29031 ID3D12Device14 * This,
29032 _In_ ID3D12Heap *pHeap,
29033 UINT64 HeapOffset,
29034 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29035 D3D12_BARRIER_LAYOUT InitialLayout,
29036 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29037 UINT32 NumCastableFormats,
29038 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29039 REFIID riid,
29040 _COM_Outptr_opt_ void **ppvResource);
29041
29042 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
29043 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
29044 ID3D12Device14 * This,
29045 _In_ const D3D12_RESOURCE_DESC *pDesc,
29046 D3D12_BARRIER_LAYOUT InitialLayout,
29047 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29048 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29049 UINT32 NumCastableFormats,
29050 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29051 REFIID riid,
29052 _COM_Outptr_opt_ void **ppvResource);
29053
29054 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
29055 void ( STDMETHODCALLTYPE *CreateSampler2 )(
29056 ID3D12Device14 * This,
29057 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
29058 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
29059
29060 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
29061#if !defined(_WIN32)
29062 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29063 ID3D12Device14 * This,
29064 UINT visibleMask,
29065 UINT numResourceDescs,
29066 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29067 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29068 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29069 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29070
29071#else
29072 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29073 ID3D12Device14 * This,
29074 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
29075 UINT visibleMask,
29076 UINT numResourceDescs,
29077 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29078 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29079 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29080 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29081
29082#endif
29083
29084 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
29085 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
29086 ID3D12Device14 * This,
29087 _In_ const void *pAddress,
29088 SIZE_T size,
29089 REFIID riid,
29090 _COM_Outptr_ void **ppvHeap);
29091
29092 DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
29093 HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
29094 ID3D12Device14 * This,
29095 _In_ UINT nodeMask,
29096 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
29097 _In_ SIZE_T blobLengthInBytes,
29098 _In_opt_ LPCWSTR subobjectName,
29099 REFIID riid,
29100 _COM_Outptr_ void **ppvRootSignature);
29101
29102 END_INTERFACE
29103 } ID3D12Device14Vtbl;
29104
29105 interface ID3D12Device14
29106 {
29107 CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
29108 };
29109
29110
29111
29112#ifdef COBJMACROS
29113
29114
29115#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
29116 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29117
29118#define ID3D12Device14_AddRef(This) \
29119 ( (This)->lpVtbl -> AddRef(This) )
29120
29121#define ID3D12Device14_Release(This) \
29122 ( (This)->lpVtbl -> Release(This) )
29123
29124
29125#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
29126 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
29127
29128#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
29129 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
29130
29131#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
29132 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
29133
29134#define ID3D12Device14_SetName(This,Name) \
29135 ( (This)->lpVtbl -> SetName(This,Name) )
29136
29137
29138#define ID3D12Device14_GetNodeCount(This) \
29139 ( (This)->lpVtbl -> GetNodeCount(This) )
29140
29141#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
29142 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
29143
29144#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
29145 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
29146
29147#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
29148 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
29149
29150#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
29151 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
29152
29153#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
29154 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
29155
29156#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
29157 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
29158
29159#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
29160 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
29161
29162#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
29163 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
29164
29165#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
29166 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
29167
29168#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
29169 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
29170
29171#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
29172 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
29173
29174#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
29175 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
29176
29177#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
29178 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
29179
29180#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
29181 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
29182
29183#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
29184 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
29185
29186#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
29187 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
29188
29189#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
29190 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
29191#if !defined(_WIN32)
29192
29193#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
29194 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
29195#else
29196#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
29197 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
29198#endif
29199#if !defined(_WIN32)
29200
29201#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
29202 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
29203#else
29204#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
29205 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
29206#endif
29207
29208#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
29209 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
29210
29211#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
29212 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
29213
29214#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29215 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29216
29217#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29218 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29219
29220#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
29221 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
29222
29223#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
29224 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
29225
29226#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
29227 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
29228
29229#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
29230 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
29231
29232#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
29233 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
29234
29235#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
29236 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
29237
29238#define ID3D12Device14_GetDeviceRemovedReason(This) \
29239 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
29240
29241#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29242 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29243
29244#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
29245 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
29246
29247#define ID3D12Device14_SetStablePowerState(This,Enable) \
29248 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
29249
29250#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
29251 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
29252
29253#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
29254 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
29255#if !defined(_WIN32)
29256
29257#define ID3D12Device14_GetAdapterLuid(This) \
29258 ( (This)->lpVtbl -> GetAdapterLuid(This) )
29259#else
29260#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
29261 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
29262#endif
29263
29264
29265#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
29266 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
29267
29268#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
29269 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
29270
29271#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
29272 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
29273
29274
29275#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
29276 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
29277
29278
29279#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
29280 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
29281
29282#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
29283 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
29284
29285#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
29286 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
29287
29288
29289#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
29290 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
29291
29292#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
29293 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
29294
29295#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29296 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29297
29298#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
29299 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
29300
29301#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
29302 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
29303#if !defined(_WIN32)
29304
29305#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29306 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29307#else
29308#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29309 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29310#endif
29311
29312
29313#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
29314 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
29315
29316#define ID3D12Device14_RemoveDevice(This) \
29317 ( (This)->lpVtbl -> RemoveDevice(This) )
29318
29319#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
29320 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
29321
29322#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
29323 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
29324
29325#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
29326 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
29327
29328#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
29329 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
29330
29331#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
29332 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
29333
29334#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
29335 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
29336
29337
29338#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
29339 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
29340
29341
29342#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
29343 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
29344
29345#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
29346 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
29347
29348#if !defined(_WIN32)
29349
29350#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29351 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29352#else
29353#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29354 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29355#endif
29356
29357#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29358 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29359
29360#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29361 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29362
29363#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
29364 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
29365
29366#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29367 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29368
29369
29370#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
29371 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
29372
29373#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
29374 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
29375
29376#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
29377 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
29378
29379
29380#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
29381 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
29382
29383#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29384 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29385
29386#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29387 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29388
29389
29390#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
29391 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
29392
29393#if !defined(_WIN32)
29394
29395#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29396 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29397#else
29398#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29399 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29400#endif
29401
29402
29403#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
29404 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
29405
29406
29407#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
29408 ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
29409
29410#endif /* COBJMACROS */
29411
29412
29413#endif /* C style interface */
29414
29415
29416
29417
29418#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
29419
29420
29421/* interface __MIDL_itf_d3d12_0000_0063 */
29422/* [local] */
29423
29424typedef union D3D12_VERSION_NUMBER
29425 {
29426 UINT64 Version;
29427 UINT16 VersionParts[ 4 ];
29428 } D3D12_VERSION_NUMBER;
29429
29430typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
29431 {
29432 WCHAR szAdapterFamily[ 128 ];
29433 UINT64 MinimumABISupportVersion;
29434 UINT64 MaximumABISupportVersion;
29435 D3D12_VERSION_NUMBER CompilerVersion;
29436 D3D12_VERSION_NUMBER ApplicationProfileVersion;
29437 } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
29438
29439typedef void ( __stdcall *D3D12PipelineStateFunc )(
29440 _In_reads_bytes_(KeySize) const void *pKey,
29441 UINT KeySize,
29442 UINT Version,
29443 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
29444 _Inout_opt_ void *pContext);
29445
29446typedef void ( __stdcall *D3D12StateObjectFunc )(
29447 _In_reads_bytes_(KeySize) const void *pKey,
29448 UINT KeySize,
29449 UINT Version,
29450 const D3D12_STATE_OBJECT_DESC *pDesc,
29451 _In_reads_bytes_(ParentKeySize) const void *pParentKey,
29452 UINT ParentKeySize,
29453 _Inout_opt_ void *pContext);
29454
29455typedef struct D3D12_APPLICATION_DESC
29456 {
29457 LPCWSTR pExeFilename;
29458 LPCWSTR pName;
29459 D3D12_VERSION_NUMBER Version;
29460 LPCWSTR pEngineName;
29461 D3D12_VERSION_NUMBER EngineVersion;
29462 } D3D12_APPLICATION_DESC;
29463
29464typedef void ( __stdcall *D3D12ApplicationDescFunc )(
29465 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
29466 _Inout_opt_ void *pContext);
29467
29468typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
29469 {
29470 _Field_size_bytes_full_(KeySize) const void *pKey;
29471 UINT KeySize;
29472 UINT NumExports;
29473 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
29474 } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
29475
29476
29477
29478extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
29479extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
29480
29481#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29482#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29483
29484/* interface ID3D12StateObjectDatabase */
29485/* [unique][local][object][uuid] */
29486
29487
29488EXTERN_C const IID IID_ID3D12StateObjectDatabase;
29489
29490#if defined(__cplusplus) && !defined(CINTERFACE)
29491
29492 MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
29493 ID3D12StateObjectDatabase : public IUnknown
29494 {
29495 public:
29496 virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
29497 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
29498
29499 virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
29500 _In_ D3D12ApplicationDescFunc CallbackFunc,
29501 _Inout_opt_ void *pContext) = 0;
29502
29503 virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
29504 _In_reads_(KeySize) const void *pKey,
29505 UINT KeySize,
29506 UINT Version,
29507 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
29508
29509 virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
29510 _In_reads_(KeySize) const void *pKey,
29511 UINT KeySize,
29512 _In_ D3D12PipelineStateFunc CallbackFunc,
29513 _Inout_opt_ void *pContext) = 0;
29514
29515 virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
29516 _In_reads_(KeySize) const void *pKey,
29517 UINT KeySize,
29518 UINT Version,
29519 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29520 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29521 UINT StateObjectToGrowFromKeySize) = 0;
29522
29523 virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
29524 _In_reads_(keySize) const void *pKey,
29525 UINT KeySize,
29526 D3D12StateObjectFunc CallbackFunc,
29527 _Inout_opt_ void *pContext) = 0;
29528
29529 virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
29530 _In_reads_(keySize) const void *pKey,
29531 UINT KeySize,
29532 _Out_ UINT *pVersion) = 0;
29533
29534 };
29535
29536
29537#else /* C style interface */
29538
29539 typedef struct ID3D12StateObjectDatabaseVtbl
29540 {
29541 BEGIN_INTERFACE
29542
29543 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29544 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29545 ID3D12StateObjectDatabase * This,
29546 REFIID riid,
29547 _COM_Outptr_ void **ppvObject);
29548
29549 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29550 ULONG ( STDMETHODCALLTYPE *AddRef )(
29551 ID3D12StateObjectDatabase * This);
29552
29553 DECLSPEC_XFGVIRT(IUnknown, Release)
29554 ULONG ( STDMETHODCALLTYPE *Release )(
29555 ID3D12StateObjectDatabase * This);
29556
29557 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
29558 HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
29559 ID3D12StateObjectDatabase * This,
29560 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
29561
29562 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
29563 HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
29564 ID3D12StateObjectDatabase * This,
29565 _In_ D3D12ApplicationDescFunc CallbackFunc,
29566 _Inout_opt_ void *pContext);
29567
29568 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
29569 HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
29570 ID3D12StateObjectDatabase * This,
29571 _In_reads_(KeySize) const void *pKey,
29572 UINT KeySize,
29573 UINT Version,
29574 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
29575
29576 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
29577 HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
29578 ID3D12StateObjectDatabase * This,
29579 _In_reads_(KeySize) const void *pKey,
29580 UINT KeySize,
29581 _In_ D3D12PipelineStateFunc CallbackFunc,
29582 _Inout_opt_ void *pContext);
29583
29584 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
29585 HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
29586 ID3D12StateObjectDatabase * This,
29587 _In_reads_(KeySize) const void *pKey,
29588 UINT KeySize,
29589 UINT Version,
29590 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29591 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29592 UINT StateObjectToGrowFromKeySize);
29593
29594 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
29595 HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
29596 ID3D12StateObjectDatabase * This,
29597 _In_reads_(keySize) const void *pKey,
29598 UINT KeySize,
29599 D3D12StateObjectFunc CallbackFunc,
29600 _Inout_opt_ void *pContext);
29601
29602 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
29603 HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
29604 ID3D12StateObjectDatabase * This,
29605 _In_reads_(keySize) const void *pKey,
29606 UINT KeySize,
29607 _Out_ UINT *pVersion);
29608
29609 END_INTERFACE
29610 } ID3D12StateObjectDatabaseVtbl;
29611
29612 interface ID3D12StateObjectDatabase
29613 {
29614 CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
29615 };
29616
29617
29618
29619#ifdef COBJMACROS
29620
29621
29622#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
29623 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29624
29625#define ID3D12StateObjectDatabase_AddRef(This) \
29626 ( (This)->lpVtbl -> AddRef(This) )
29627
29628#define ID3D12StateObjectDatabase_Release(This) \
29629 ( (This)->lpVtbl -> Release(This) )
29630
29631
29632#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
29633 ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
29634
29635#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
29636 ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
29637
29638#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
29639 ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
29640
29641#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29642 ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29643
29644#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
29645 ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
29646
29647#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29648 ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29649
29650#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
29651 ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
29652
29653#endif /* COBJMACROS */
29654
29655
29656#endif /* C style interface */
29657
29658
29659
29660
29661#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
29662
29663
29664#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29665#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29666
29667/* interface ID3D12VirtualizationGuestDevice */
29668/* [unique][local][object][uuid] */
29669
29670
29671EXTERN_C const IID IID_ID3D12VirtualizationGuestDevice;
29672
29673#if defined(__cplusplus) && !defined(CINTERFACE)
29674
29675 MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
29676 ID3D12VirtualizationGuestDevice : public IUnknown
29677 {
29678 public:
29679 virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
29680 _In_ ID3D12DeviceChild *pObject,
29681 _Out_ HANDLE *pHandle) = 0;
29682
29683 virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
29684 _In_ ID3D12Fence *pFence,
29685 UINT64 FenceValue,
29686 _Out_ int *pFenceFd) = 0;
29687
29688 };
29689
29690
29691#else /* C style interface */
29692
29693 typedef struct ID3D12VirtualizationGuestDeviceVtbl
29694 {
29695 BEGIN_INTERFACE
29696
29697 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29698 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29699 ID3D12VirtualizationGuestDevice * This,
29700 REFIID riid,
29701 _COM_Outptr_ void **ppvObject);
29702
29703 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29704 ULONG ( STDMETHODCALLTYPE *AddRef )(
29705 ID3D12VirtualizationGuestDevice * This);
29706
29707 DECLSPEC_XFGVIRT(IUnknown, Release)
29708 ULONG ( STDMETHODCALLTYPE *Release )(
29709 ID3D12VirtualizationGuestDevice * This);
29710
29711 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, ShareWithHost)
29712 HRESULT ( STDMETHODCALLTYPE *ShareWithHost )(
29713 ID3D12VirtualizationGuestDevice * This,
29714 _In_ ID3D12DeviceChild *pObject,
29715 _Out_ HANDLE *pHandle);
29716
29717 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, CreateFenceFd)
29718 HRESULT ( STDMETHODCALLTYPE *CreateFenceFd )(
29719 ID3D12VirtualizationGuestDevice * This,
29720 _In_ ID3D12Fence *pFence,
29721 UINT64 FenceValue,
29722 _Out_ int *pFenceFd);
29723
29724 END_INTERFACE
29725 } ID3D12VirtualizationGuestDeviceVtbl;
29726
29727 interface ID3D12VirtualizationGuestDevice
29728 {
29729 CONST_VTBL struct ID3D12VirtualizationGuestDeviceVtbl *lpVtbl;
29730 };
29731
29732
29733
29734#ifdef COBJMACROS
29735
29736
29737#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) \
29738 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29739
29740#define ID3D12VirtualizationGuestDevice_AddRef(This) \
29741 ( (This)->lpVtbl -> AddRef(This) )
29742
29743#define ID3D12VirtualizationGuestDevice_Release(This) \
29744 ( (This)->lpVtbl -> Release(This) )
29745
29746
29747#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle) \
29748 ( (This)->lpVtbl -> ShareWithHost(This,pObject,pHandle) )
29749
29750#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd) \
29751 ( (This)->lpVtbl -> CreateFenceFd(This,pFence,FenceValue,pFenceFd) )
29752
29753#endif /* COBJMACROS */
29754
29755
29756#endif /* C style interface */
29757
29758
29759
29760
29761#endif /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
29762
29763
29764#ifndef __ID3D12Tools_INTERFACE_DEFINED__
29765#define __ID3D12Tools_INTERFACE_DEFINED__
29766
29767/* interface ID3D12Tools */
29768/* [unique][local][object][uuid] */
29769
29770
29771EXTERN_C const IID IID_ID3D12Tools;
29772
29773#if defined(__cplusplus) && !defined(CINTERFACE)
29774
29775 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
29776 ID3D12Tools : public IUnknown
29777 {
29778 public:
29779 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
29780 BOOL bEnable) = 0;
29781
29782 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
29783
29784 };
29785
29786
29787#else /* C style interface */
29788
29789 typedef struct ID3D12ToolsVtbl
29790 {
29791 BEGIN_INTERFACE
29792
29793 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29794 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29795 ID3D12Tools * This,
29796 REFIID riid,
29797 _COM_Outptr_ void **ppvObject);
29798
29799 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29800 ULONG ( STDMETHODCALLTYPE *AddRef )(
29801 ID3D12Tools * This);
29802
29803 DECLSPEC_XFGVIRT(IUnknown, Release)
29804 ULONG ( STDMETHODCALLTYPE *Release )(
29805 ID3D12Tools * This);
29806
29807 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29808 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29809 ID3D12Tools * This,
29810 BOOL bEnable);
29811
29812 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29813 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29814 ID3D12Tools * This);
29815
29816 END_INTERFACE
29817 } ID3D12ToolsVtbl;
29818
29819 interface ID3D12Tools
29820 {
29821 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
29822 };
29823
29824
29825
29826#ifdef COBJMACROS
29827
29828
29829#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
29830 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29831
29832#define ID3D12Tools_AddRef(This) \
29833 ( (This)->lpVtbl -> AddRef(This) )
29834
29835#define ID3D12Tools_Release(This) \
29836 ( (This)->lpVtbl -> Release(This) )
29837
29838
29839#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
29840 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29841
29842#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
29843 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29844
29845#endif /* COBJMACROS */
29846
29847
29848#endif /* C style interface */
29849
29850
29851
29852
29853#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
29854
29855
29856#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
29857#define __ID3D12Tools1_INTERFACE_DEFINED__
29858
29859/* interface ID3D12Tools1 */
29860/* [unique][local][object][uuid] */
29861
29862
29863EXTERN_C const IID IID_ID3D12Tools1;
29864
29865#if defined(__cplusplus) && !defined(CINTERFACE)
29866
29867 MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
29868 ID3D12Tools1 : public ID3D12Tools
29869 {
29870 public:
29871 virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
29872 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29873 _In_ UINT uiNumRanges) = 0;
29874
29875 virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
29876
29877 };
29878
29879
29880#else /* C style interface */
29881
29882 typedef struct ID3D12Tools1Vtbl
29883 {
29884 BEGIN_INTERFACE
29885
29886 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29887 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29888 ID3D12Tools1 * This,
29889 REFIID riid,
29890 _COM_Outptr_ void **ppvObject);
29891
29892 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29893 ULONG ( STDMETHODCALLTYPE *AddRef )(
29894 ID3D12Tools1 * This);
29895
29896 DECLSPEC_XFGVIRT(IUnknown, Release)
29897 ULONG ( STDMETHODCALLTYPE *Release )(
29898 ID3D12Tools1 * This);
29899
29900 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29901 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29902 ID3D12Tools1 * This,
29903 BOOL bEnable);
29904
29905 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29906 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29907 ID3D12Tools1 * This);
29908
29909 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
29910 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
29911 ID3D12Tools1 * This,
29912 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29913 _In_ UINT uiNumRanges);
29914
29915 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
29916 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
29917 ID3D12Tools1 * This);
29918
29919 END_INTERFACE
29920 } ID3D12Tools1Vtbl;
29921
29922 interface ID3D12Tools1
29923 {
29924 CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
29925 };
29926
29927
29928
29929#ifdef COBJMACROS
29930
29931
29932#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
29933 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29934
29935#define ID3D12Tools1_AddRef(This) \
29936 ( (This)->lpVtbl -> AddRef(This) )
29937
29938#define ID3D12Tools1_Release(This) \
29939 ( (This)->lpVtbl -> Release(This) )
29940
29941
29942#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
29943 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29944
29945#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
29946 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29947
29948
29949#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
29950 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
29951
29952#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
29953 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
29954
29955#endif /* COBJMACROS */
29956
29957
29958#endif /* C style interface */
29959
29960
29961
29962
29963#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
29964
29965
29966#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
29967#define __ID3D12Tools2_INTERFACE_DEFINED__
29968
29969/* interface ID3D12Tools2 */
29970/* [unique][local][object][uuid] */
29971
29972
29973EXTERN_C const IID IID_ID3D12Tools2;
29974
29975#if defined(__cplusplus) && !defined(CINTERFACE)
29976
29977 MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
29978 ID3D12Tools2 : public ID3D12Tools1
29979 {
29980 public:
29981 virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
29982 _In_ IUnknown *pAdapter,
29983 _In_opt_ ID3DBlob *pBlob) = 0;
29984
29985 };
29986
29987
29988#else /* C style interface */
29989
29990 typedef struct ID3D12Tools2Vtbl
29991 {
29992 BEGIN_INTERFACE
29993
29994 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29995 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29996 ID3D12Tools2 * This,
29997 REFIID riid,
29998 _COM_Outptr_ void **ppvObject);
29999
30000 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30001 ULONG ( STDMETHODCALLTYPE *AddRef )(
30002 ID3D12Tools2 * This);
30003
30004 DECLSPEC_XFGVIRT(IUnknown, Release)
30005 ULONG ( STDMETHODCALLTYPE *Release )(
30006 ID3D12Tools2 * This);
30007
30008 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
30009 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
30010 ID3D12Tools2 * This,
30011 BOOL bEnable);
30012
30013 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
30014 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
30015 ID3D12Tools2 * This);
30016
30017 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
30018 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
30019 ID3D12Tools2 * This,
30020 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
30021 _In_ UINT uiNumRanges);
30022
30023 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
30024 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
30025 ID3D12Tools2 * This);
30026
30027 DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
30028 HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
30029 ID3D12Tools2 * This,
30030 _In_ IUnknown *pAdapter,
30031 _In_opt_ ID3DBlob *pBlob);
30032
30033 END_INTERFACE
30034 } ID3D12Tools2Vtbl;
30035
30036 interface ID3D12Tools2
30037 {
30038 CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
30039 };
30040
30041
30042
30043#ifdef COBJMACROS
30044
30045
30046#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
30047 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30048
30049#define ID3D12Tools2_AddRef(This) \
30050 ( (This)->lpVtbl -> AddRef(This) )
30051
30052#define ID3D12Tools2_Release(This) \
30053 ( (This)->lpVtbl -> Release(This) )
30054
30055
30056#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
30057 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
30058
30059#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
30060 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
30061
30062
30063#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
30064 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
30065
30066#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
30067 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
30068
30069
30070#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
30071 ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
30072
30073#endif /* COBJMACROS */
30074
30075
30076#endif /* C style interface */
30077
30078
30079
30080
30081#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
30082
30083
30084#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
30085#define __ID3D12PageableTools_INTERFACE_DEFINED__
30086
30087/* interface ID3D12PageableTools */
30088/* [unique][local][object][uuid] */
30089
30090
30091EXTERN_C const IID IID_ID3D12PageableTools;
30092
30093#if defined(__cplusplus) && !defined(CINTERFACE)
30094
30095 MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
30096 ID3D12PageableTools : public IUnknown
30097 {
30098 public:
30099 virtual HRESULT STDMETHODCALLTYPE GetAllocation(
30100 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
30101
30102 };
30103
30104
30105#else /* C style interface */
30106
30107 typedef struct ID3D12PageableToolsVtbl
30108 {
30109 BEGIN_INTERFACE
30110
30111 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30112 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30113 ID3D12PageableTools * This,
30114 REFIID riid,
30115 _COM_Outptr_ void **ppvObject);
30116
30117 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30118 ULONG ( STDMETHODCALLTYPE *AddRef )(
30119 ID3D12PageableTools * This);
30120
30121 DECLSPEC_XFGVIRT(IUnknown, Release)
30122 ULONG ( STDMETHODCALLTYPE *Release )(
30123 ID3D12PageableTools * This);
30124
30125 DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
30126 HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
30127 ID3D12PageableTools * This,
30128 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
30129
30130 END_INTERFACE
30131 } ID3D12PageableToolsVtbl;
30132
30133 interface ID3D12PageableTools
30134 {
30135 CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
30136 };
30137
30138
30139
30140#ifdef COBJMACROS
30141
30142
30143#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
30144 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30145
30146#define ID3D12PageableTools_AddRef(This) \
30147 ( (This)->lpVtbl -> AddRef(This) )
30148
30149#define ID3D12PageableTools_Release(This) \
30150 ( (This)->lpVtbl -> Release(This) )
30151
30152
30153#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
30154 ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
30155
30156#endif /* COBJMACROS */
30157
30158
30159#endif /* C style interface */
30160
30161
30162
30163
30164#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
30165
30166
30167#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
30168#define __ID3D12DeviceTools_INTERFACE_DEFINED__
30169
30170/* interface ID3D12DeviceTools */
30171/* [unique][local][object][uuid] */
30172
30173
30174EXTERN_C const IID IID_ID3D12DeviceTools;
30175
30176#if defined(__cplusplus) && !defined(CINTERFACE)
30177
30178 MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
30179 ID3D12DeviceTools : public IUnknown
30180 {
30181 public:
30182 virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
30183 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
30184
30185 };
30186
30187
30188#else /* C style interface */
30189
30190 typedef struct ID3D12DeviceToolsVtbl
30191 {
30192 BEGIN_INTERFACE
30193
30194 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30195 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30196 ID3D12DeviceTools * This,
30197 REFIID riid,
30198 _COM_Outptr_ void **ppvObject);
30199
30200 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30201 ULONG ( STDMETHODCALLTYPE *AddRef )(
30202 ID3D12DeviceTools * This);
30203
30204 DECLSPEC_XFGVIRT(IUnknown, Release)
30205 ULONG ( STDMETHODCALLTYPE *Release )(
30206 ID3D12DeviceTools * This);
30207
30208 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30209 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30210 ID3D12DeviceTools * This,
30211 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30212
30213 END_INTERFACE
30214 } ID3D12DeviceToolsVtbl;
30215
30216 interface ID3D12DeviceTools
30217 {
30218 CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
30219 };
30220
30221
30222
30223#ifdef COBJMACROS
30224
30225
30226#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
30227 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30228
30229#define ID3D12DeviceTools_AddRef(This) \
30230 ( (This)->lpVtbl -> AddRef(This) )
30231
30232#define ID3D12DeviceTools_Release(This) \
30233 ( (This)->lpVtbl -> Release(This) )
30234
30235
30236#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30237 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30238
30239#endif /* COBJMACROS */
30240
30241
30242#endif /* C style interface */
30243
30244
30245
30246
30247#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
30248
30249
30250/* interface __MIDL_itf_d3d12_0000_0070 */
30251/* [local] */
30252
30253typedef
30254enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
30255 {
30256 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
30257 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
30258 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
30259 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
30260 } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
30261
30262
30263
30264extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
30265extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
30266
30267#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
30268#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
30269
30270/* interface ID3D12DeviceTools1 */
30271/* [unique][local][object][uuid] */
30272
30273
30274EXTERN_C const IID IID_ID3D12DeviceTools1;
30275
30276#if defined(__cplusplus) && !defined(CINTERFACE)
30277
30278 MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
30279 ID3D12DeviceTools1 : public ID3D12DeviceTools
30280 {
30281 public:
30282 virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
30283 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
30284
30285 virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
30286
30287 };
30288
30289
30290#else /* C style interface */
30291
30292 typedef struct ID3D12DeviceTools1Vtbl
30293 {
30294 BEGIN_INTERFACE
30295
30296 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30297 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30298 ID3D12DeviceTools1 * This,
30299 REFIID riid,
30300 _COM_Outptr_ void **ppvObject);
30301
30302 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30303 ULONG ( STDMETHODCALLTYPE *AddRef )(
30304 ID3D12DeviceTools1 * This);
30305
30306 DECLSPEC_XFGVIRT(IUnknown, Release)
30307 ULONG ( STDMETHODCALLTYPE *Release )(
30308 ID3D12DeviceTools1 * This);
30309
30310 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30311 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30312 ID3D12DeviceTools1 * This,
30313 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30314
30315 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
30316 HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
30317 ID3D12DeviceTools1 * This,
30318 _COM_Outptr_ ID3DBlob **ppBlob);
30319
30320 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
30321 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
30322 ID3D12DeviceTools1 * This);
30323
30324 END_INTERFACE
30325 } ID3D12DeviceTools1Vtbl;
30326
30327 interface ID3D12DeviceTools1
30328 {
30329 CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
30330 };
30331
30332
30333
30334#ifdef COBJMACROS
30335
30336
30337#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
30338 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30339
30340#define ID3D12DeviceTools1_AddRef(This) \
30341 ( (This)->lpVtbl -> AddRef(This) )
30342
30343#define ID3D12DeviceTools1_Release(This) \
30344 ( (This)->lpVtbl -> Release(This) )
30345
30346
30347#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30348 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30349
30350
30351#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
30352 ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
30353
30354#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
30355 ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
30356
30357#endif /* COBJMACROS */
30358
30359
30360#endif /* C style interface */
30361
30362
30363
30364
30365#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
30366
30367
30368/* interface __MIDL_itf_d3d12_0000_0071 */
30369/* [local] */
30370
30371typedef struct D3D12_SUBRESOURCE_DATA
30372 {
30373 const void *pData;
30374 LONG_PTR RowPitch;
30375 LONG_PTR SlicePitch;
30376 } D3D12_SUBRESOURCE_DATA;
30377
30378typedef struct D3D12_MEMCPY_DEST
30379 {
30380 void *pData;
30381 SIZE_T RowPitch;
30382 SIZE_T SlicePitch;
30383 } D3D12_MEMCPY_DEST;
30384
30385#if !defined( D3D12_IGNORE_SDK_LAYERS )
30386#include "d3d12sdklayers.h"
30387#endif
30388
30389///////////////////////////////////////////////////////////////////////////
30390// D3D12CreateDevice
30391// ------------------
30392//
30393// pAdapter
30394// If NULL, D3D12CreateDevice will choose the primary adapter.
30395// If non-NULL, D3D12CreateDevice will use the provided adapter.
30396// MinimumFeatureLevel
30397// The minimum feature level required for successful device creation.
30398// riid
30399// The interface IID of the device to be returned. Expected: ID3D12Device.
30400// ppDevice
30401// Pointer to returned interface. May be NULL.
30402//
30403// Return Values
30404// Any of those documented for
30405// CreateDXGIFactory1
30406// IDXGIFactory::EnumAdapters
30407// D3D12CreateDevice
30408//
30409///////////////////////////////////////////////////////////////////////////
30410typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
30411 D3D_FEATURE_LEVEL,
30412 _In_ REFIID, _COM_Outptr_opt_ void** );
30413
30414HRESULT WINAPI D3D12CreateDevice(
30415 _In_opt_ IUnknown* pAdapter,
30416 D3D_FEATURE_LEVEL MinimumFeatureLevel,
30417 _In_ REFIID riid, // Expected: ID3D12Device
30418 _COM_Outptr_opt_ void** ppDevice );
30419
30420
30421typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
30422
30423HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30424
30425// --------------------------------------------------------------------------------------------------------------------------------
30426// D3D12EnableExperimentalFeatures
30427//
30428// Pass in a list of feature GUIDs to be enabled together.
30429//
30430// If a particular feature requires some configuration information on enablement, it will have
30431// a configuration struct that can be passed alongside the GUID.
30432//
30433// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
30434// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
30435// for manipulating the feature. This allows for control that might not cleanly be expressed by just
30436// the configuration struct that D3D12EnableExperimentalFeatures provides.
30437//
30438// If this method is called and a change to existing feature enablement is made,
30439// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
30440// singleton device for a process. Removing the devices when configuration changes prevents
30441// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
30442//
30443// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
30444// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
30445// in are known to be incompatible with each other, or other errors.
30446// Returns S_OK otherwise.
30447//
30448// --------------------------------------------------------------------------------------------------------------------------------
30449HRESULT WINAPI D3D12EnableExperimentalFeatures(
30450 UINT NumFeatures,
30451 _In_count_(NumFeatures) const IID* pIIDs,
30452 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
30453 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
30454
30455// --------------------------------------------------------------------------------------------------------------------------------
30456// Experimental Feature: D3D12ExperimentalShaderModels
30457//
30458// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
30459// meaning shader models that haven't been finalized for use in retail.
30460//
30461// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
30462//
30463// --------------------------------------------------------------------------------------------------------------------------------
30464static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
30465 0x76f5573e,
30466 0xf13a,
30467 0x40f5,
30468 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
30469};
30470// --------------------------------------------------------------------------------------------------------------------------------
30471// Experimental Feature: D3D12TiledResourceTier4
30472//
30473// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
30474// meaning texture tile data-inheritance is allowed.
30475//
30476// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
30477//
30478// --------------------------------------------------------------------------------------------------------------------------------
30479static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
30480 0xc9c4725f,
30481 0xa81a,
30482 0x4f56,
30483 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
30484};
30485// --------------------------------------------------------------------------------------------------------------------------------
30486// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
30487//
30488// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
30489// driver support is still required for this feature.
30490//
30491// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
30492//
30493// --------------------------------------------------------------------------------------------------------------------------------
30494static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
30495 0x45dc51f3,
30496 0x767f,
30497 0x4588,
30498 { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
30499};
30500// --------------------------------------------------------------------------------------------------------------------------------
30501// D3D12GetInterface
30502//
30503// Retrieve Global D3D12 Interface.
30504//
30505
30506DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
30507DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
30508DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
30509DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
30510DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
30511DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
30512DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
30513
30514typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
30515
30516HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30517
30518
30519
30520extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
30521extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
30522
30523#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30524#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30525
30526/* interface ID3D12SDKConfiguration */
30527/* [unique][local][object][uuid] */
30528
30529
30530EXTERN_C const IID IID_ID3D12SDKConfiguration;
30531
30532#if defined(__cplusplus) && !defined(CINTERFACE)
30533
30534 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
30535 ID3D12SDKConfiguration : public IUnknown
30536 {
30537 public:
30538 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
30539 UINT SDKVersion,
30540 _In_z_ LPCSTR SDKPath) = 0;
30541
30542 };
30543
30544
30545#else /* C style interface */
30546
30547 typedef struct ID3D12SDKConfigurationVtbl
30548 {
30549 BEGIN_INTERFACE
30550
30551 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30552 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30553 ID3D12SDKConfiguration * This,
30554 REFIID riid,
30555 _COM_Outptr_ void **ppvObject);
30556
30557 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30558 ULONG ( STDMETHODCALLTYPE *AddRef )(
30559 ID3D12SDKConfiguration * This);
30560
30561 DECLSPEC_XFGVIRT(IUnknown, Release)
30562 ULONG ( STDMETHODCALLTYPE *Release )(
30563 ID3D12SDKConfiguration * This);
30564
30565 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30566 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30567 ID3D12SDKConfiguration * This,
30568 UINT SDKVersion,
30569 _In_z_ LPCSTR SDKPath);
30570
30571 END_INTERFACE
30572 } ID3D12SDKConfigurationVtbl;
30573
30574 interface ID3D12SDKConfiguration
30575 {
30576 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
30577 };
30578
30579
30580
30581#ifdef COBJMACROS
30582
30583
30584#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
30585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30586
30587#define ID3D12SDKConfiguration_AddRef(This) \
30588 ( (This)->lpVtbl -> AddRef(This) )
30589
30590#define ID3D12SDKConfiguration_Release(This) \
30591 ( (This)->lpVtbl -> Release(This) )
30592
30593
30594#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
30595 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30596
30597#endif /* COBJMACROS */
30598
30599
30600#endif /* C style interface */
30601
30602
30603
30604
30605#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
30606
30607
30608#ifndef __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30609#define __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30610
30611/* interface ID3D12SDKConfiguration1 */
30612/* [unique][local][object][uuid] */
30613
30614
30615EXTERN_C const IID IID_ID3D12SDKConfiguration1;
30616
30617#if defined(__cplusplus) && !defined(CINTERFACE)
30618
30619 MIDL_INTERFACE("8aaf9303-ad25-48b9-9a57-d9c37e009d9f")
30620 ID3D12SDKConfiguration1 : public ID3D12SDKConfiguration
30621 {
30622 public:
30623 virtual HRESULT STDMETHODCALLTYPE CreateDeviceFactory(
30624 UINT SDKVersion,
30625 _In_ LPCSTR SDKPath,
30626 REFIID riid,
30627 _COM_Outptr_ void **ppvFactory) = 0;
30628
30629 virtual void STDMETHODCALLTYPE FreeUnusedSDKs( void) = 0;
30630
30631 };
30632
30633
30634#else /* C style interface */
30635
30636 typedef struct ID3D12SDKConfiguration1Vtbl
30637 {
30638 BEGIN_INTERFACE
30639
30640 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30641 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30642 ID3D12SDKConfiguration1 * This,
30643 REFIID riid,
30644 _COM_Outptr_ void **ppvObject);
30645
30646 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30647 ULONG ( STDMETHODCALLTYPE *AddRef )(
30648 ID3D12SDKConfiguration1 * This);
30649
30650 DECLSPEC_XFGVIRT(IUnknown, Release)
30651 ULONG ( STDMETHODCALLTYPE *Release )(
30652 ID3D12SDKConfiguration1 * This);
30653
30654 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30655 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30656 ID3D12SDKConfiguration1 * This,
30657 UINT SDKVersion,
30658 _In_z_ LPCSTR SDKPath);
30659
30660 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, CreateDeviceFactory)
30661 HRESULT ( STDMETHODCALLTYPE *CreateDeviceFactory )(
30662 ID3D12SDKConfiguration1 * This,
30663 UINT SDKVersion,
30664 _In_ LPCSTR SDKPath,
30665 REFIID riid,
30666 _COM_Outptr_ void **ppvFactory);
30667
30668 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, FreeUnusedSDKs)
30669 void ( STDMETHODCALLTYPE *FreeUnusedSDKs )(
30670 ID3D12SDKConfiguration1 * This);
30671
30672 END_INTERFACE
30673 } ID3D12SDKConfiguration1Vtbl;
30674
30675 interface ID3D12SDKConfiguration1
30676 {
30677 CONST_VTBL struct ID3D12SDKConfiguration1Vtbl *lpVtbl;
30678 };
30679
30680
30681
30682#ifdef COBJMACROS
30683
30684
30685#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject) \
30686 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30687
30688#define ID3D12SDKConfiguration1_AddRef(This) \
30689 ( (This)->lpVtbl -> AddRef(This) )
30690
30691#define ID3D12SDKConfiguration1_Release(This) \
30692 ( (This)->lpVtbl -> Release(This) )
30693
30694
30695#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath) \
30696 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30697
30698
30699#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) \
30700 ( (This)->lpVtbl -> CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) )
30701
30702#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This) \
30703 ( (This)->lpVtbl -> FreeUnusedSDKs(This) )
30704
30705#endif /* COBJMACROS */
30706
30707
30708#endif /* C style interface */
30709
30710
30711
30712
30713#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
30714
30715
30716/* interface __MIDL_itf_d3d12_0000_0073 */
30717/* [local] */
30718
30719typedef
30720enum D3D12_DEVICE_FACTORY_FLAGS
30721 {
30722 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
30723 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
30724 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
30725 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
30726 } D3D12_DEVICE_FACTORY_FLAGS;
30727
30728DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
30729
30730
30731extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
30732extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
30733
30734#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
30735#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
30736
30737/* interface ID3D12DeviceFactory */
30738/* [unique][local][object][uuid] */
30739
30740
30741EXTERN_C const IID IID_ID3D12DeviceFactory;
30742
30743#if defined(__cplusplus) && !defined(CINTERFACE)
30744
30745 MIDL_INTERFACE("61f307d3-d34e-4e7c-8374-3ba4de23cccb")
30746 ID3D12DeviceFactory : public IUnknown
30747 {
30748 public:
30749 virtual HRESULT STDMETHODCALLTYPE InitializeFromGlobalState( void) = 0;
30750
30751 virtual HRESULT STDMETHODCALLTYPE ApplyToGlobalState( void) = 0;
30752
30753 virtual HRESULT STDMETHODCALLTYPE SetFlags(
30754 D3D12_DEVICE_FACTORY_FLAGS flags) = 0;
30755
30756 virtual D3D12_DEVICE_FACTORY_FLAGS STDMETHODCALLTYPE GetFlags( void) = 0;
30757
30758 virtual HRESULT STDMETHODCALLTYPE GetConfigurationInterface(
30759 REFCLSID clsid,
30760 REFIID iid,
30761 _COM_Outptr_ void **ppv) = 0;
30762
30763 virtual HRESULT STDMETHODCALLTYPE EnableExperimentalFeatures(
30764 UINT NumFeatures,
30765 _In_reads_(NumFeatures) const IID *pIIDs,
30766 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30767 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes) = 0;
30768
30769 virtual HRESULT STDMETHODCALLTYPE CreateDevice(
30770 _In_opt_ IUnknown *adapter,
30771 D3D_FEATURE_LEVEL FeatureLevel,
30772 REFIID riid,
30773 _COM_Outptr_opt_ void **ppvDevice) = 0;
30774
30775 };
30776
30777
30778#else /* C style interface */
30779
30780 typedef struct ID3D12DeviceFactoryVtbl
30781 {
30782 BEGIN_INTERFACE
30783
30784 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30785 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30786 ID3D12DeviceFactory * This,
30787 REFIID riid,
30788 _COM_Outptr_ void **ppvObject);
30789
30790 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30791 ULONG ( STDMETHODCALLTYPE *AddRef )(
30792 ID3D12DeviceFactory * This);
30793
30794 DECLSPEC_XFGVIRT(IUnknown, Release)
30795 ULONG ( STDMETHODCALLTYPE *Release )(
30796 ID3D12DeviceFactory * This);
30797
30798 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, InitializeFromGlobalState)
30799 HRESULT ( STDMETHODCALLTYPE *InitializeFromGlobalState )(
30800 ID3D12DeviceFactory * This);
30801
30802 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, ApplyToGlobalState)
30803 HRESULT ( STDMETHODCALLTYPE *ApplyToGlobalState )(
30804 ID3D12DeviceFactory * This);
30805
30806 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, SetFlags)
30807 HRESULT ( STDMETHODCALLTYPE *SetFlags )(
30808 ID3D12DeviceFactory * This,
30809 D3D12_DEVICE_FACTORY_FLAGS flags);
30810
30811 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetFlags)
30812 D3D12_DEVICE_FACTORY_FLAGS ( STDMETHODCALLTYPE *GetFlags )(
30813 ID3D12DeviceFactory * This);
30814
30815 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetConfigurationInterface)
30816 HRESULT ( STDMETHODCALLTYPE *GetConfigurationInterface )(
30817 ID3D12DeviceFactory * This,
30818 REFCLSID clsid,
30819 REFIID iid,
30820 _COM_Outptr_ void **ppv);
30821
30822 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, EnableExperimentalFeatures)
30823 HRESULT ( STDMETHODCALLTYPE *EnableExperimentalFeatures )(
30824 ID3D12DeviceFactory * This,
30825 UINT NumFeatures,
30826 _In_reads_(NumFeatures) const IID *pIIDs,
30827 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30828 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes);
30829
30830 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, CreateDevice)
30831 HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
30832 ID3D12DeviceFactory * This,
30833 _In_opt_ IUnknown *adapter,
30834 D3D_FEATURE_LEVEL FeatureLevel,
30835 REFIID riid,
30836 _COM_Outptr_opt_ void **ppvDevice);
30837
30838 END_INTERFACE
30839 } ID3D12DeviceFactoryVtbl;
30840
30841 interface ID3D12DeviceFactory
30842 {
30843 CONST_VTBL struct ID3D12DeviceFactoryVtbl *lpVtbl;
30844 };
30845
30846
30847
30848#ifdef COBJMACROS
30849
30850
30851#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject) \
30852 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30853
30854#define ID3D12DeviceFactory_AddRef(This) \
30855 ( (This)->lpVtbl -> AddRef(This) )
30856
30857#define ID3D12DeviceFactory_Release(This) \
30858 ( (This)->lpVtbl -> Release(This) )
30859
30860
30861#define ID3D12DeviceFactory_InitializeFromGlobalState(This) \
30862 ( (This)->lpVtbl -> InitializeFromGlobalState(This) )
30863
30864#define ID3D12DeviceFactory_ApplyToGlobalState(This) \
30865 ( (This)->lpVtbl -> ApplyToGlobalState(This) )
30866
30867#define ID3D12DeviceFactory_SetFlags(This,flags) \
30868 ( (This)->lpVtbl -> SetFlags(This,flags) )
30869
30870#define ID3D12DeviceFactory_GetFlags(This) \
30871 ( (This)->lpVtbl -> GetFlags(This) )
30872
30873#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv) \
30874 ( (This)->lpVtbl -> GetConfigurationInterface(This,clsid,iid,ppv) )
30875
30876#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) \
30877 ( (This)->lpVtbl -> EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) )
30878
30879#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) \
30880 ( (This)->lpVtbl -> CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) )
30881
30882#endif /* COBJMACROS */
30883
30884
30885#endif /* C style interface */
30886
30887
30888
30889
30890#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
30891
30892
30893/* interface __MIDL_itf_d3d12_0000_0074 */
30894/* [local] */
30895
30896typedef
30897enum D3D12_DEVICE_FLAGS
30898 {
30899 D3D12_DEVICE_FLAG_NONE = 0,
30900 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
30901 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
30902 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
30903 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
30904 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
30905 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
30906 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
30907 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
30908 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
30909 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
30910 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
30911 } D3D12_DEVICE_FLAGS;
30912
30913DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
30914typedef struct D3D12_DEVICE_CONFIGURATION_DESC
30915 {
30916 D3D12_DEVICE_FLAGS Flags;
30917 UINT GpuBasedValidationFlags;
30918 UINT SDKVersion;
30919 UINT NumEnabledExperimentalFeatures;
30920 } D3D12_DEVICE_CONFIGURATION_DESC;
30921
30922
30923
30924extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
30925extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
30926
30927#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30928#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30929
30930/* interface ID3D12DeviceConfiguration */
30931/* [unique][local][object][uuid] */
30932
30933
30934EXTERN_C const IID IID_ID3D12DeviceConfiguration;
30935
30936#if defined(__cplusplus) && !defined(CINTERFACE)
30937
30938 MIDL_INTERFACE("78dbf87b-f766-422b-a61c-c8c446bdb9ad")
30939 ID3D12DeviceConfiguration : public IUnknown
30940 {
30941 public:
30942#if defined(_MSC_VER) || !defined(_WIN32)
30943 virtual D3D12_DEVICE_CONFIGURATION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
30944#else
30945 virtual D3D12_DEVICE_CONFIGURATION_DESC *STDMETHODCALLTYPE GetDesc(
30946 D3D12_DEVICE_CONFIGURATION_DESC * RetVal) = 0;
30947#endif
30948
30949 virtual HRESULT STDMETHODCALLTYPE GetEnabledExperimentalFeatures(
30950 _Out_writes_(NumGuids) GUID *pGuids,
30951 UINT NumGuids) = 0;
30952
30953 virtual HRESULT STDMETHODCALLTYPE SerializeVersionedRootSignature(
30954 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
30955 _COM_Outptr_ ID3DBlob **ppResult,
30956 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError) = 0;
30957
30958 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializer(
30959 _In_reads_bytes_(Size) const void *pBlob,
30960 SIZE_T Size,
30961 REFIID riid,
30962 _COM_Outptr_ void **ppvDeserializer) = 0;
30963
30964 };
30965
30966
30967#else /* C style interface */
30968
30969 typedef struct ID3D12DeviceConfigurationVtbl
30970 {
30971 BEGIN_INTERFACE
30972
30973 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30974 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30975 ID3D12DeviceConfiguration * This,
30976 REFIID riid,
30977 _COM_Outptr_ void **ppvObject);
30978
30979 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30980 ULONG ( STDMETHODCALLTYPE *AddRef )(
30981 ID3D12DeviceConfiguration * This);
30982
30983 DECLSPEC_XFGVIRT(IUnknown, Release)
30984 ULONG ( STDMETHODCALLTYPE *Release )(
30985 ID3D12DeviceConfiguration * This);
30986
30987 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
30988#if !defined(_WIN32)
30989 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
30990 ID3D12DeviceConfiguration * This);
30991
30992#else
30993 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
30994 ID3D12DeviceConfiguration * This,
30995 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
30996
30997#endif
30998
30999 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31000 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31001 ID3D12DeviceConfiguration * This,
31002 _Out_writes_(NumGuids) GUID *pGuids,
31003 UINT NumGuids);
31004
31005 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31006 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31007 ID3D12DeviceConfiguration * This,
31008 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31009 _COM_Outptr_ ID3DBlob **ppResult,
31010 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31011
31012 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31013 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31014 ID3D12DeviceConfiguration * This,
31015 _In_reads_bytes_(Size) const void *pBlob,
31016 SIZE_T Size,
31017 REFIID riid,
31018 _COM_Outptr_ void **ppvDeserializer);
31019
31020 END_INTERFACE
31021 } ID3D12DeviceConfigurationVtbl;
31022
31023 interface ID3D12DeviceConfiguration
31024 {
31025 CONST_VTBL struct ID3D12DeviceConfigurationVtbl *lpVtbl;
31026 };
31027
31028
31029
31030#ifdef COBJMACROS
31031
31032
31033#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject) \
31034 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31035
31036#define ID3D12DeviceConfiguration_AddRef(This) \
31037 ( (This)->lpVtbl -> AddRef(This) )
31038
31039#define ID3D12DeviceConfiguration_Release(This) \
31040 ( (This)->lpVtbl -> Release(This) )
31041
31042#if !defined(_WIN32)
31043
31044#define ID3D12DeviceConfiguration_GetDesc(This) \
31045 ( (This)->lpVtbl -> GetDesc(This) )
31046#else
31047#define ID3D12DeviceConfiguration_GetDesc(This,RetVal) \
31048 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31049#endif
31050
31051#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31052 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31053
31054#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31055 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31056
31057#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31058 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31059
31060#endif /* COBJMACROS */
31061
31062
31063#endif /* C style interface */
31064
31065
31066
31067
31068#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
31069
31070
31071#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31072#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31073
31074/* interface ID3D12DeviceConfiguration1 */
31075/* [unique][local][object][uuid] */
31076
31077
31078EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
31079
31080#if defined(__cplusplus) && !defined(CINTERFACE)
31081
31082 MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
31083 ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
31084 {
31085 public:
31086 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
31087 _In_reads_bytes_(Size) const void *pLibraryBlob,
31088 SIZE_T Size,
31089 LPCWSTR RootSignatureSubobjectName,
31090 REFIID riid,
31091 _COM_Outptr_ void **ppvDeserializer) = 0;
31092
31093 };
31094
31095
31096#else /* C style interface */
31097
31098 typedef struct ID3D12DeviceConfiguration1Vtbl
31099 {
31100 BEGIN_INTERFACE
31101
31102 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31103 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31104 ID3D12DeviceConfiguration1 * This,
31105 REFIID riid,
31106 _COM_Outptr_ void **ppvObject);
31107
31108 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31109 ULONG ( STDMETHODCALLTYPE *AddRef )(
31110 ID3D12DeviceConfiguration1 * This);
31111
31112 DECLSPEC_XFGVIRT(IUnknown, Release)
31113 ULONG ( STDMETHODCALLTYPE *Release )(
31114 ID3D12DeviceConfiguration1 * This);
31115
31116 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
31117#if !defined(_WIN32)
31118 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
31119 ID3D12DeviceConfiguration1 * This);
31120
31121#else
31122 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
31123 ID3D12DeviceConfiguration1 * This,
31124 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
31125
31126#endif
31127
31128 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31129 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31130 ID3D12DeviceConfiguration1 * This,
31131 _Out_writes_(NumGuids) GUID *pGuids,
31132 UINT NumGuids);
31133
31134 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31135 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31136 ID3D12DeviceConfiguration1 * This,
31137 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31138 _COM_Outptr_ ID3DBlob **ppResult,
31139 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31140
31141 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31142 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31143 ID3D12DeviceConfiguration1 * This,
31144 _In_reads_bytes_(Size) const void *pBlob,
31145 SIZE_T Size,
31146 REFIID riid,
31147 _COM_Outptr_ void **ppvDeserializer);
31148
31149 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
31150 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
31151 ID3D12DeviceConfiguration1 * This,
31152 _In_reads_bytes_(Size) const void *pLibraryBlob,
31153 SIZE_T Size,
31154 LPCWSTR RootSignatureSubobjectName,
31155 REFIID riid,
31156 _COM_Outptr_ void **ppvDeserializer);
31157
31158 END_INTERFACE
31159 } ID3D12DeviceConfiguration1Vtbl;
31160
31161 interface ID3D12DeviceConfiguration1
31162 {
31163 CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
31164 };
31165
31166
31167
31168#ifdef COBJMACROS
31169
31170
31171#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
31172 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31173
31174#define ID3D12DeviceConfiguration1_AddRef(This) \
31175 ( (This)->lpVtbl -> AddRef(This) )
31176
31177#define ID3D12DeviceConfiguration1_Release(This) \
31178 ( (This)->lpVtbl -> Release(This) )
31179
31180#if !defined(_WIN32)
31181
31182#define ID3D12DeviceConfiguration1_GetDesc(This) \
31183 ( (This)->lpVtbl -> GetDesc(This) )
31184#else
31185#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
31186 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31187#endif
31188
31189#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31190 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31191
31192#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31193 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31194
31195#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31196 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31197
31198
31199#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
31200 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
31201
31202#endif /* COBJMACROS */
31203
31204
31205#endif /* C style interface */
31206
31207
31208
31209
31210#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
31211
31212
31213/* interface __MIDL_itf_d3d12_0000_0076 */
31214/* [local] */
31215
31216typedef
31217enum D3D12_STATE_OBJECT_DATABASE_FLAGS
31218 {
31219 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
31220 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
31221 } D3D12_STATE_OBJECT_DATABASE_FLAGS;
31222
31223DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
31224
31225
31226extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
31227extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
31228
31229#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31230#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31231
31232/* interface ID3D12StateObjectDatabaseFactory */
31233/* [unique][local][object][uuid] */
31234
31235
31236EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
31237
31238#if defined(__cplusplus) && !defined(CINTERFACE)
31239
31240 MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
31241 ID3D12StateObjectDatabaseFactory : public IUnknown
31242 {
31243 public:
31244 virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
31245 LPCWSTR pDatabaseFile,
31246 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31247 REFIID riid,
31248 _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
31249
31250 };
31251
31252
31253#else /* C style interface */
31254
31255 typedef struct ID3D12StateObjectDatabaseFactoryVtbl
31256 {
31257 BEGIN_INTERFACE
31258
31259 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31260 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31261 ID3D12StateObjectDatabaseFactory * This,
31262 REFIID riid,
31263 _COM_Outptr_ void **ppvObject);
31264
31265 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31266 ULONG ( STDMETHODCALLTYPE *AddRef )(
31267 ID3D12StateObjectDatabaseFactory * This);
31268
31269 DECLSPEC_XFGVIRT(IUnknown, Release)
31270 ULONG ( STDMETHODCALLTYPE *Release )(
31271 ID3D12StateObjectDatabaseFactory * This);
31272
31273 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
31274 HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
31275 ID3D12StateObjectDatabaseFactory * This,
31276 LPCWSTR pDatabaseFile,
31277 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31278 REFIID riid,
31279 _COM_Outptr_ void **ppvStateObjectDatabase);
31280
31281 END_INTERFACE
31282 } ID3D12StateObjectDatabaseFactoryVtbl;
31283
31284 interface ID3D12StateObjectDatabaseFactory
31285 {
31286 CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
31287 };
31288
31289
31290
31291#ifdef COBJMACROS
31292
31293
31294#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
31295 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31296
31297#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
31298 ( (This)->lpVtbl -> AddRef(This) )
31299
31300#define ID3D12StateObjectDatabaseFactory_Release(This) \
31301 ( (This)->lpVtbl -> Release(This) )
31302
31303
31304#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
31305 ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
31306
31307#endif /* COBJMACROS */
31308
31309
31310#endif /* C style interface */
31311
31312
31313
31314
31315#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
31316
31317
31318/* interface __MIDL_itf_d3d12_0000_0077 */
31319/* [local] */
31320
31321typedef
31322enum D3D12_AXIS_SHADING_RATE
31323 {
31324 D3D12_AXIS_SHADING_RATE_1X = 0,
31325 D3D12_AXIS_SHADING_RATE_2X = 0x1,
31326 D3D12_AXIS_SHADING_RATE_4X = 0x2
31327 } D3D12_AXIS_SHADING_RATE;
31328
31329#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
31330#define D3D12_SHADING_RATE_VALID_MASK 3
31331#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
31332#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
31333#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
31334typedef
31335enum D3D12_SHADING_RATE
31336 {
31337 D3D12_SHADING_RATE_1X1 = 0,
31338 D3D12_SHADING_RATE_1X2 = 0x1,
31339 D3D12_SHADING_RATE_2X1 = 0x4,
31340 D3D12_SHADING_RATE_2X2 = 0x5,
31341 D3D12_SHADING_RATE_2X4 = 0x6,
31342 D3D12_SHADING_RATE_4X2 = 0x9,
31343 D3D12_SHADING_RATE_4X4 = 0xa
31344 } D3D12_SHADING_RATE;
31345
31346typedef
31347enum D3D12_SHADING_RATE_COMBINER
31348 {
31349 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
31350 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
31351 D3D12_SHADING_RATE_COMBINER_MIN = 2,
31352 D3D12_SHADING_RATE_COMBINER_MAX = 3,
31353 D3D12_SHADING_RATE_COMBINER_SUM = 4
31354 } D3D12_SHADING_RATE_COMBINER;
31355
31356
31357
31358extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
31359extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
31360
31361#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31362#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31363
31364/* interface ID3D12GraphicsCommandList5 */
31365/* [unique][local][object][uuid] */
31366
31367
31368EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
31369
31370#if defined(__cplusplus) && !defined(CINTERFACE)
31371
31372 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
31373 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
31374 {
31375 public:
31376 virtual void STDMETHODCALLTYPE RSSetShadingRate(
31377 _In_ D3D12_SHADING_RATE baseShadingRate,
31378 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
31379
31380 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
31381 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
31382
31383 };
31384
31385
31386#else /* C style interface */
31387
31388 typedef struct ID3D12GraphicsCommandList5Vtbl
31389 {
31390 BEGIN_INTERFACE
31391
31392 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31393 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31394 ID3D12GraphicsCommandList5 * This,
31395 REFIID riid,
31396 _COM_Outptr_ void **ppvObject);
31397
31398 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31399 ULONG ( STDMETHODCALLTYPE *AddRef )(
31400 ID3D12GraphicsCommandList5 * This);
31401
31402 DECLSPEC_XFGVIRT(IUnknown, Release)
31403 ULONG ( STDMETHODCALLTYPE *Release )(
31404 ID3D12GraphicsCommandList5 * This);
31405
31406 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
31407 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
31408 ID3D12GraphicsCommandList5 * This,
31409 _In_ REFGUID guid,
31410 _Inout_ UINT *pDataSize,
31411 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
31412
31413 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
31414 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
31415 ID3D12GraphicsCommandList5 * This,
31416 _In_ REFGUID guid,
31417 _In_ UINT DataSize,
31418 _In_reads_bytes_opt_( DataSize ) const void *pData);
31419
31420 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
31421 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
31422 ID3D12GraphicsCommandList5 * This,
31423 _In_ REFGUID guid,
31424 _In_opt_ const IUnknown *pData);
31425
31426 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
31427 HRESULT ( STDMETHODCALLTYPE *SetName )(
31428 ID3D12GraphicsCommandList5 * This,
31429 _In_z_ LPCWSTR Name);
31430
31431 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
31432 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
31433 ID3D12GraphicsCommandList5 * This,
31434 REFIID riid,
31435 _COM_Outptr_opt_ void **ppvDevice);
31436
31437 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
31438 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
31439 ID3D12GraphicsCommandList5 * This);
31440
31441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
31442 HRESULT ( STDMETHODCALLTYPE *Close )(
31443 ID3D12GraphicsCommandList5 * This);
31444
31445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
31446 HRESULT ( STDMETHODCALLTYPE *Reset )(
31447 ID3D12GraphicsCommandList5 * This,
31448 _In_ ID3D12CommandAllocator *pAllocator,
31449 _In_opt_ ID3D12PipelineState *pInitialState);
31450
31451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
31452 void ( STDMETHODCALLTYPE *ClearState )(
31453 ID3D12GraphicsCommandList5 * This,
31454 _In_opt_ ID3D12PipelineState *pPipelineState);
31455
31456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
31457 void ( STDMETHODCALLTYPE *DrawInstanced )(
31458 ID3D12GraphicsCommandList5 * This,
31459 _In_ UINT VertexCountPerInstance,
31460 _In_ UINT InstanceCount,
31461 _In_ UINT StartVertexLocation,
31462 _In_ UINT StartInstanceLocation);
31463
31464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
31465 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
31466 ID3D12GraphicsCommandList5 * This,
31467 _In_ UINT IndexCountPerInstance,
31468 _In_ UINT InstanceCount,
31469 _In_ UINT StartIndexLocation,
31470 _In_ INT BaseVertexLocation,
31471 _In_ UINT StartInstanceLocation);
31472
31473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
31474 void ( STDMETHODCALLTYPE *Dispatch )(
31475 ID3D12GraphicsCommandList5 * This,
31476 _In_ UINT ThreadGroupCountX,
31477 _In_ UINT ThreadGroupCountY,
31478 _In_ UINT ThreadGroupCountZ);
31479
31480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
31481 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
31482 ID3D12GraphicsCommandList5 * This,
31483 _In_ ID3D12Resource *pDstBuffer,
31484 UINT64 DstOffset,
31485 _In_ ID3D12Resource *pSrcBuffer,
31486 UINT64 SrcOffset,
31487 UINT64 NumBytes);
31488
31489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
31490 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
31491 ID3D12GraphicsCommandList5 * This,
31492 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
31493 UINT DstX,
31494 UINT DstY,
31495 UINT DstZ,
31496 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
31497 _In_opt_ const D3D12_BOX *pSrcBox);
31498
31499 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
31500 void ( STDMETHODCALLTYPE *CopyResource )(
31501 ID3D12GraphicsCommandList5 * This,
31502 _In_ ID3D12Resource *pDstResource,
31503 _In_ ID3D12Resource *pSrcResource);
31504
31505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
31506 void ( STDMETHODCALLTYPE *CopyTiles )(
31507 ID3D12GraphicsCommandList5 * This,
31508 _In_ ID3D12Resource *pTiledResource,
31509 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
31510 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
31511 _In_ ID3D12Resource *pBuffer,
31512 UINT64 BufferStartOffsetInBytes,
31513 D3D12_TILE_COPY_FLAGS Flags);
31514
31515 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
31516 void ( STDMETHODCALLTYPE *ResolveSubresource )(
31517 ID3D12GraphicsCommandList5 * This,
31518 _In_ ID3D12Resource *pDstResource,
31519 _In_ UINT DstSubresource,
31520 _In_ ID3D12Resource *pSrcResource,
31521 _In_ UINT SrcSubresource,
31522 _In_ DXGI_FORMAT Format);
31523
31524 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
31525 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
31526 ID3D12GraphicsCommandList5 * This,
31527 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
31528
31529 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
31530 void ( STDMETHODCALLTYPE *RSSetViewports )(
31531 ID3D12GraphicsCommandList5 * This,
31532 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
31533 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
31534
31535 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
31536 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
31537 ID3D12GraphicsCommandList5 * This,
31538 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
31539 _In_reads_( NumRects) const D3D12_RECT *pRects);
31540
31541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
31542 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
31543 ID3D12GraphicsCommandList5 * This,
31544 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
31545
31546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
31547 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
31548 ID3D12GraphicsCommandList5 * This,
31549 _In_ UINT StencilRef);
31550
31551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
31552 void ( STDMETHODCALLTYPE *SetPipelineState )(
31553 ID3D12GraphicsCommandList5 * This,
31554 _In_ ID3D12PipelineState *pPipelineState);
31555
31556 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
31557 void ( STDMETHODCALLTYPE *ResourceBarrier )(
31558 ID3D12GraphicsCommandList5 * This,
31559 _In_ UINT NumBarriers,
31560 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
31561
31562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
31563 void ( STDMETHODCALLTYPE *ExecuteBundle )(
31564 ID3D12GraphicsCommandList5 * This,
31565 _In_ ID3D12GraphicsCommandList *pCommandList);
31566
31567 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
31568 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
31569 ID3D12GraphicsCommandList5 * This,
31570 _In_ UINT NumDescriptorHeaps,
31571 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
31572
31573 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
31574 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
31575 ID3D12GraphicsCommandList5 * This,
31576 _In_opt_ ID3D12RootSignature *pRootSignature);
31577
31578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
31579 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
31580 ID3D12GraphicsCommandList5 * This,
31581 _In_opt_ ID3D12RootSignature *pRootSignature);
31582
31583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
31584 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
31585 ID3D12GraphicsCommandList5 * This,
31586 _In_ UINT RootParameterIndex,
31587 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31588
31589 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
31590 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
31591 ID3D12GraphicsCommandList5 * This,
31592 _In_ UINT RootParameterIndex,
31593 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31594
31595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
31596 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
31597 ID3D12GraphicsCommandList5 * This,
31598 _In_ UINT RootParameterIndex,
31599 _In_ UINT SrcData,
31600 _In_ UINT DestOffsetIn32BitValues);
31601
31602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
31603 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
31604 ID3D12GraphicsCommandList5 * This,
31605 _In_ UINT RootParameterIndex,
31606 _In_ UINT SrcData,
31607 _In_ UINT DestOffsetIn32BitValues);
31608
31609 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
31610 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
31611 ID3D12GraphicsCommandList5 * This,
31612 _In_ UINT RootParameterIndex,
31613 _In_ UINT Num32BitValuesToSet,
31614 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31615 _In_ UINT DestOffsetIn32BitValues);
31616
31617 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
31618 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
31619 ID3D12GraphicsCommandList5 * This,
31620 _In_ UINT RootParameterIndex,
31621 _In_ UINT Num32BitValuesToSet,
31622 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31623 _In_ UINT DestOffsetIn32BitValues);
31624
31625 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
31626 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
31627 ID3D12GraphicsCommandList5 * This,
31628 _In_ UINT RootParameterIndex,
31629 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31630
31631 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
31632 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
31633 ID3D12GraphicsCommandList5 * This,
31634 _In_ UINT RootParameterIndex,
31635 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31636
31637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
31638 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
31639 ID3D12GraphicsCommandList5 * This,
31640 _In_ UINT RootParameterIndex,
31641 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31642
31643 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
31644 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
31645 ID3D12GraphicsCommandList5 * This,
31646 _In_ UINT RootParameterIndex,
31647 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31648
31649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
31650 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
31651 ID3D12GraphicsCommandList5 * This,
31652 _In_ UINT RootParameterIndex,
31653 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31654
31655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
31656 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
31657 ID3D12GraphicsCommandList5 * This,
31658 _In_ UINT RootParameterIndex,
31659 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31660
31661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
31662 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
31663 ID3D12GraphicsCommandList5 * This,
31664 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
31665
31666 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
31667 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
31668 ID3D12GraphicsCommandList5 * This,
31669 _In_ UINT StartSlot,
31670 _In_ UINT NumViews,
31671 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
31672
31673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
31674 void ( STDMETHODCALLTYPE *SOSetTargets )(
31675 ID3D12GraphicsCommandList5 * This,
31676 _In_ UINT StartSlot,
31677 _In_ UINT NumViews,
31678 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
31679
31680 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
31681 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
31682 ID3D12GraphicsCommandList5 * This,
31683 _In_ UINT NumRenderTargetDescriptors,
31684 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
31685 _In_ BOOL RTsSingleHandleToDescriptorRange,
31686 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
31687
31688 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
31689 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
31690 ID3D12GraphicsCommandList5 * This,
31691 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
31692 _In_ D3D12_CLEAR_FLAGS ClearFlags,
31693 _In_ FLOAT Depth,
31694 _In_ UINT8 Stencil,
31695 _In_ UINT NumRects,
31696 _In_reads_(NumRects) const D3D12_RECT *pRects);
31697
31698 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
31699 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
31700 ID3D12GraphicsCommandList5 * This,
31701 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
31702 _In_ const FLOAT ColorRGBA[ 4 ],
31703 _In_ UINT NumRects,
31704 _In_reads_(NumRects) const D3D12_RECT *pRects);
31705
31706 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
31707 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
31708 ID3D12GraphicsCommandList5 * This,
31709 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31710 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31711 _In_ ID3D12Resource *pResource,
31712 _In_ const UINT Values[ 4 ],
31713 _In_ UINT NumRects,
31714 _In_reads_(NumRects) const D3D12_RECT *pRects);
31715
31716 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
31717 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
31718 ID3D12GraphicsCommandList5 * This,
31719 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31720 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31721 _In_ ID3D12Resource *pResource,
31722 _In_ const FLOAT Values[ 4 ],
31723 _In_ UINT NumRects,
31724 _In_reads_(NumRects) const D3D12_RECT *pRects);
31725
31726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
31727 void ( STDMETHODCALLTYPE *DiscardResource )(
31728 ID3D12GraphicsCommandList5 * This,
31729 _In_ ID3D12Resource *pResource,
31730 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
31731
31732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
31733 void ( STDMETHODCALLTYPE *BeginQuery )(
31734 ID3D12GraphicsCommandList5 * This,
31735 _In_ ID3D12QueryHeap *pQueryHeap,
31736 _In_ D3D12_QUERY_TYPE Type,
31737 _In_ UINT Index);
31738
31739 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
31740 void ( STDMETHODCALLTYPE *EndQuery )(
31741 ID3D12GraphicsCommandList5 * This,
31742 _In_ ID3D12QueryHeap *pQueryHeap,
31743 _In_ D3D12_QUERY_TYPE Type,
31744 _In_ UINT Index);
31745
31746 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
31747 void ( STDMETHODCALLTYPE *ResolveQueryData )(
31748 ID3D12GraphicsCommandList5 * This,
31749 _In_ ID3D12QueryHeap *pQueryHeap,
31750 _In_ D3D12_QUERY_TYPE Type,
31751 _In_ UINT StartIndex,
31752 _In_ UINT NumQueries,
31753 _In_ ID3D12Resource *pDestinationBuffer,
31754 _In_ UINT64 AlignedDestinationBufferOffset);
31755
31756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
31757 void ( STDMETHODCALLTYPE *SetPredication )(
31758 ID3D12GraphicsCommandList5 * This,
31759 _In_opt_ ID3D12Resource *pBuffer,
31760 _In_ UINT64 AlignedBufferOffset,
31761 _In_ D3D12_PREDICATION_OP Operation);
31762
31763 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
31764 void ( STDMETHODCALLTYPE *SetMarker )(
31765 ID3D12GraphicsCommandList5 * This,
31766 UINT Metadata,
31767 _In_reads_bytes_opt_(Size) const void *pData,
31768 UINT Size);
31769
31770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
31771 void ( STDMETHODCALLTYPE *BeginEvent )(
31772 ID3D12GraphicsCommandList5 * This,
31773 UINT Metadata,
31774 _In_reads_bytes_opt_(Size) const void *pData,
31775 UINT Size);
31776
31777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
31778 void ( STDMETHODCALLTYPE *EndEvent )(
31779 ID3D12GraphicsCommandList5 * This);
31780
31781 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
31782 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
31783 ID3D12GraphicsCommandList5 * This,
31784 _In_ ID3D12CommandSignature *pCommandSignature,
31785 _In_ UINT MaxCommandCount,
31786 _In_ ID3D12Resource *pArgumentBuffer,
31787 _In_ UINT64 ArgumentBufferOffset,
31788 _In_opt_ ID3D12Resource *pCountBuffer,
31789 _In_ UINT64 CountBufferOffset);
31790
31791 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
31792 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
31793 ID3D12GraphicsCommandList5 * This,
31794 _In_ ID3D12Resource *pDstBuffer,
31795 UINT64 DstOffset,
31796 _In_ ID3D12Resource *pSrcBuffer,
31797 UINT64 SrcOffset,
31798 UINT Dependencies,
31799 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31800 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31801
31802 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
31803 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
31804 ID3D12GraphicsCommandList5 * This,
31805 _In_ ID3D12Resource *pDstBuffer,
31806 UINT64 DstOffset,
31807 _In_ ID3D12Resource *pSrcBuffer,
31808 UINT64 SrcOffset,
31809 UINT Dependencies,
31810 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31811 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31812
31813 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
31814 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
31815 ID3D12GraphicsCommandList5 * This,
31816 _In_ FLOAT Min,
31817 _In_ FLOAT Max);
31818
31819 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
31820 void ( STDMETHODCALLTYPE *SetSamplePositions )(
31821 ID3D12GraphicsCommandList5 * This,
31822 _In_ UINT NumSamplesPerPixel,
31823 _In_ UINT NumPixels,
31824 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
31825
31826 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
31827 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
31828 ID3D12GraphicsCommandList5 * This,
31829 _In_ ID3D12Resource *pDstResource,
31830 _In_ UINT DstSubresource,
31831 _In_ UINT DstX,
31832 _In_ UINT DstY,
31833 _In_ ID3D12Resource *pSrcResource,
31834 _In_ UINT SrcSubresource,
31835 _In_opt_ D3D12_RECT *pSrcRect,
31836 _In_ DXGI_FORMAT Format,
31837 _In_ D3D12_RESOLVE_MODE ResolveMode);
31838
31839 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
31840 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
31841 ID3D12GraphicsCommandList5 * This,
31842 _In_ UINT Mask);
31843
31844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
31845 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
31846 ID3D12GraphicsCommandList5 * This,
31847 UINT Count,
31848 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
31849 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
31850
31851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
31852 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
31853 ID3D12GraphicsCommandList5 * This,
31854 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
31855
31856 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
31857 void ( STDMETHODCALLTYPE *BeginRenderPass )(
31858 ID3D12GraphicsCommandList5 * This,
31859 _In_ UINT NumRenderTargets,
31860 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
31861 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
31862 D3D12_RENDER_PASS_FLAGS Flags);
31863
31864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
31865 void ( STDMETHODCALLTYPE *EndRenderPass )(
31866 ID3D12GraphicsCommandList5 * This);
31867
31868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
31869 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
31870 ID3D12GraphicsCommandList5 * This,
31871 _In_ ID3D12MetaCommand *pMetaCommand,
31872 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
31873 _In_ SIZE_T InitializationParametersDataSizeInBytes);
31874
31875 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
31876 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
31877 ID3D12GraphicsCommandList5 * This,
31878 _In_ ID3D12MetaCommand *pMetaCommand,
31879 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
31880 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
31881
31882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
31883 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
31884 ID3D12GraphicsCommandList5 * This,
31885 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
31886 _In_ UINT NumPostbuildInfoDescs,
31887 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
31888
31889 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
31890 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
31891 ID3D12GraphicsCommandList5 * This,
31892 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
31893 _In_ UINT NumSourceAccelerationStructures,
31894 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
31895
31896 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
31897 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
31898 ID3D12GraphicsCommandList5 * This,
31899 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
31900 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
31901 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
31902
31903 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
31904 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
31905 ID3D12GraphicsCommandList5 * This,
31906 _In_ ID3D12StateObject *pStateObject);
31907
31908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
31909 void ( STDMETHODCALLTYPE *DispatchRays )(
31910 ID3D12GraphicsCommandList5 * This,
31911 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
31912
31913 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
31914 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
31915 ID3D12GraphicsCommandList5 * This,
31916 _In_ D3D12_SHADING_RATE baseShadingRate,
31917 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
31918
31919 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
31920 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
31921 ID3D12GraphicsCommandList5 * This,
31922 _In_opt_ ID3D12Resource *shadingRateImage);
31923
31924 END_INTERFACE
31925 } ID3D12GraphicsCommandList5Vtbl;
31926
31927 interface ID3D12GraphicsCommandList5
31928 {
31929 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
31930 };
31931
31932
31933
31934#ifdef COBJMACROS
31935
31936
31937#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
31938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31939
31940#define ID3D12GraphicsCommandList5_AddRef(This) \
31941 ( (This)->lpVtbl -> AddRef(This) )
31942
31943#define ID3D12GraphicsCommandList5_Release(This) \
31944 ( (This)->lpVtbl -> Release(This) )
31945
31946
31947#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
31948 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
31949
31950#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
31951 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
31952
31953#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
31954 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
31955
31956#define ID3D12GraphicsCommandList5_SetName(This,Name) \
31957 ( (This)->lpVtbl -> SetName(This,Name) )
31958
31959
31960#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
31961 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
31962
31963
31964#define ID3D12GraphicsCommandList5_GetType(This) \
31965 ( (This)->lpVtbl -> GetType(This) )
31966
31967
31968#define ID3D12GraphicsCommandList5_Close(This) \
31969 ( (This)->lpVtbl -> Close(This) )
31970
31971#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
31972 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
31973
31974#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
31975 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
31976
31977#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
31978 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
31979
31980#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
31981 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
31982
31983#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
31984 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
31985
31986#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
31987 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
31988
31989#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
31990 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
31991
31992#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
31993 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
31994
31995#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
31996 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
31997
31998#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
31999 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32000
32001#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
32002 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32003
32004#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
32005 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32006
32007#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
32008 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32009
32010#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
32011 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32012
32013#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
32014 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32015
32016#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
32017 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32018
32019#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
32020 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32021
32022#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
32023 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32024
32025#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32026 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32027
32028#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
32029 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32030
32031#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
32032 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32033
32034#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32035 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32036
32037#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32038 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32039
32040#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32041 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32042
32043#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32044 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32045
32046#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32047 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32048
32049#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32050 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32051
32052#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32053 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32054
32055#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32056 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32057
32058#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32059 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32060
32061#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32062 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32063
32064#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32065 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32066
32067#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32068 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32069
32070#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
32071 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32072
32073#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32074 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32075
32076#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
32077 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32078
32079#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32080 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32081
32082#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32083 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32084
32085#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32086 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32087
32088#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32089 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32090
32091#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32092 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32093
32094#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
32095 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32096
32097#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
32098 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32099
32100#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
32101 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32102
32103#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32104 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32105
32106#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32107 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32108
32109#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
32110 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32111
32112#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
32113 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32114
32115#define ID3D12GraphicsCommandList5_EndEvent(This) \
32116 ( (This)->lpVtbl -> EndEvent(This) )
32117
32118#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32119 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32120
32121
32122#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32123 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32124
32125#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32126 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32127
32128#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
32129 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32130
32131#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32132 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32133
32134#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32135 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32136
32137#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
32138 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32139
32140
32141#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
32142 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32143
32144
32145#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
32146 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32147
32148
32149#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32150 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
32151
32152#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
32153 ( (This)->lpVtbl -> EndRenderPass(This) )
32154
32155#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
32156 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
32157
32158#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
32159 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
32160
32161#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
32162 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
32163
32164#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
32165 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
32166
32167#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
32168 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
32169
32170#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
32171 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
32172
32173#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
32174 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
32175
32176
32177#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
32178 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
32179
32180#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
32181 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
32182
32183#endif /* COBJMACROS */
32184
32185
32186#endif /* C style interface */
32187
32188
32189
32190
32191#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
32192
32193
32194/* interface __MIDL_itf_d3d12_0000_0078 */
32195/* [local] */
32196
32197typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
32198 {
32199 UINT ThreadGroupCountX;
32200 UINT ThreadGroupCountY;
32201 UINT ThreadGroupCountZ;
32202 } D3D12_DISPATCH_MESH_ARGUMENTS;
32203
32204
32205
32206extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
32207extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
32208
32209#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32210#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32211
32212/* interface ID3D12GraphicsCommandList6 */
32213/* [unique][local][object][uuid] */
32214
32215
32216EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
32217
32218#if defined(__cplusplus) && !defined(CINTERFACE)
32219
32220 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
32221 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
32222 {
32223 public:
32224 virtual void STDMETHODCALLTYPE DispatchMesh(
32225 _In_ UINT ThreadGroupCountX,
32226 _In_ UINT ThreadGroupCountY,
32227 _In_ UINT ThreadGroupCountZ) = 0;
32228
32229 };
32230
32231
32232#else /* C style interface */
32233
32234 typedef struct ID3D12GraphicsCommandList6Vtbl
32235 {
32236 BEGIN_INTERFACE
32237
32238 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
32239 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
32240 ID3D12GraphicsCommandList6 * This,
32241 REFIID riid,
32242 _COM_Outptr_ void **ppvObject);
32243
32244 DECLSPEC_XFGVIRT(IUnknown, AddRef)
32245 ULONG ( STDMETHODCALLTYPE *AddRef )(
32246 ID3D12GraphicsCommandList6 * This);
32247
32248 DECLSPEC_XFGVIRT(IUnknown, Release)
32249 ULONG ( STDMETHODCALLTYPE *Release )(
32250 ID3D12GraphicsCommandList6 * This);
32251
32252 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
32253 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
32254 ID3D12GraphicsCommandList6 * This,
32255 _In_ REFGUID guid,
32256 _Inout_ UINT *pDataSize,
32257 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
32258
32259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
32260 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
32261 ID3D12GraphicsCommandList6 * This,
32262 _In_ REFGUID guid,
32263 _In_ UINT DataSize,
32264 _In_reads_bytes_opt_( DataSize ) const void *pData);
32265
32266 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
32267 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
32268 ID3D12GraphicsCommandList6 * This,
32269 _In_ REFGUID guid,
32270 _In_opt_ const IUnknown *pData);
32271
32272 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
32273 HRESULT ( STDMETHODCALLTYPE *SetName )(
32274 ID3D12GraphicsCommandList6 * This,
32275 _In_z_ LPCWSTR Name);
32276
32277 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
32278 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
32279 ID3D12GraphicsCommandList6 * This,
32280 REFIID riid,
32281 _COM_Outptr_opt_ void **ppvDevice);
32282
32283 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
32284 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
32285 ID3D12GraphicsCommandList6 * This);
32286
32287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
32288 HRESULT ( STDMETHODCALLTYPE *Close )(
32289 ID3D12GraphicsCommandList6 * This);
32290
32291 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
32292 HRESULT ( STDMETHODCALLTYPE *Reset )(
32293 ID3D12GraphicsCommandList6 * This,
32294 _In_ ID3D12CommandAllocator *pAllocator,
32295 _In_opt_ ID3D12PipelineState *pInitialState);
32296
32297 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
32298 void ( STDMETHODCALLTYPE *ClearState )(
32299 ID3D12GraphicsCommandList6 * This,
32300 _In_opt_ ID3D12PipelineState *pPipelineState);
32301
32302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
32303 void ( STDMETHODCALLTYPE *DrawInstanced )(
32304 ID3D12GraphicsCommandList6 * This,
32305 _In_ UINT VertexCountPerInstance,
32306 _In_ UINT InstanceCount,
32307 _In_ UINT StartVertexLocation,
32308 _In_ UINT StartInstanceLocation);
32309
32310 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
32311 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
32312 ID3D12GraphicsCommandList6 * This,
32313 _In_ UINT IndexCountPerInstance,
32314 _In_ UINT InstanceCount,
32315 _In_ UINT StartIndexLocation,
32316 _In_ INT BaseVertexLocation,
32317 _In_ UINT StartInstanceLocation);
32318
32319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
32320 void ( STDMETHODCALLTYPE *Dispatch )(
32321 ID3D12GraphicsCommandList6 * This,
32322 _In_ UINT ThreadGroupCountX,
32323 _In_ UINT ThreadGroupCountY,
32324 _In_ UINT ThreadGroupCountZ);
32325
32326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
32327 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
32328 ID3D12GraphicsCommandList6 * This,
32329 _In_ ID3D12Resource *pDstBuffer,
32330 UINT64 DstOffset,
32331 _In_ ID3D12Resource *pSrcBuffer,
32332 UINT64 SrcOffset,
32333 UINT64 NumBytes);
32334
32335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
32336 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
32337 ID3D12GraphicsCommandList6 * This,
32338 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
32339 UINT DstX,
32340 UINT DstY,
32341 UINT DstZ,
32342 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
32343 _In_opt_ const D3D12_BOX *pSrcBox);
32344
32345 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
32346 void ( STDMETHODCALLTYPE *CopyResource )(
32347 ID3D12GraphicsCommandList6 * This,
32348 _In_ ID3D12Resource *pDstResource,
32349 _In_ ID3D12Resource *pSrcResource);
32350
32351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
32352 void ( STDMETHODCALLTYPE *CopyTiles )(
32353 ID3D12GraphicsCommandList6 * This,
32354 _In_ ID3D12Resource *pTiledResource,
32355 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
32356 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
32357 _In_ ID3D12Resource *pBuffer,
32358 UINT64 BufferStartOffsetInBytes,
32359 D3D12_TILE_COPY_FLAGS Flags);
32360
32361 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
32362 void ( STDMETHODCALLTYPE *ResolveSubresource )(
32363 ID3D12GraphicsCommandList6 * This,
32364 _In_ ID3D12Resource *pDstResource,
32365 _In_ UINT DstSubresource,
32366 _In_ ID3D12Resource *pSrcResource,
32367 _In_ UINT SrcSubresource,
32368 _In_ DXGI_FORMAT Format);
32369
32370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
32371 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
32372 ID3D12GraphicsCommandList6 * This,
32373 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
32374
32375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
32376 void ( STDMETHODCALLTYPE *RSSetViewports )(
32377 ID3D12GraphicsCommandList6 * This,
32378 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
32379 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
32380
32381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
32382 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
32383 ID3D12GraphicsCommandList6 * This,
32384 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
32385 _In_reads_( NumRects) const D3D12_RECT *pRects);
32386
32387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
32388 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
32389 ID3D12GraphicsCommandList6 * This,
32390 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
32391
32392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
32393 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
32394 ID3D12GraphicsCommandList6 * This,
32395 _In_ UINT StencilRef);
32396
32397 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
32398 void ( STDMETHODCALLTYPE *SetPipelineState )(
32399 ID3D12GraphicsCommandList6 * This,
32400 _In_ ID3D12PipelineState *pPipelineState);
32401
32402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
32403 void ( STDMETHODCALLTYPE *ResourceBarrier )(
32404 ID3D12GraphicsCommandList6 * This,
32405 _In_ UINT NumBarriers,
32406 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
32407
32408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
32409 void ( STDMETHODCALLTYPE *ExecuteBundle )(
32410 ID3D12GraphicsCommandList6 * This,
32411 _In_ ID3D12GraphicsCommandList *pCommandList);
32412
32413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
32414 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
32415 ID3D12GraphicsCommandList6 * This,
32416 _In_ UINT NumDescriptorHeaps,
32417 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
32418
32419 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
32420 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
32421 ID3D12GraphicsCommandList6 * This,
32422 _In_opt_ ID3D12RootSignature *pRootSignature);
32423
32424 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
32425 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
32426 ID3D12GraphicsCommandList6 * This,
32427 _In_opt_ ID3D12RootSignature *pRootSignature);
32428
32429 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
32430 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
32431 ID3D12GraphicsCommandList6 * This,
32432 _In_ UINT RootParameterIndex,
32433 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32434
32435 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
32436 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
32437 ID3D12GraphicsCommandList6 * This,
32438 _In_ UINT RootParameterIndex,
32439 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32440
32441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
32442 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
32443 ID3D12GraphicsCommandList6 * This,
32444 _In_ UINT RootParameterIndex,
32445 _In_ UINT SrcData,
32446 _In_ UINT DestOffsetIn32BitValues);
32447
32448 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
32449 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
32450 ID3D12GraphicsCommandList6 * This,
32451 _In_ UINT RootParameterIndex,
32452 _In_ UINT SrcData,
32453 _In_ UINT DestOffsetIn32BitValues);
32454
32455 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
32456 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
32457 ID3D12GraphicsCommandList6 * This,
32458 _In_ UINT RootParameterIndex,
32459 _In_ UINT Num32BitValuesToSet,
32460 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32461 _In_ UINT DestOffsetIn32BitValues);
32462
32463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
32464 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
32465 ID3D12GraphicsCommandList6 * This,
32466 _In_ UINT RootParameterIndex,
32467 _In_ UINT Num32BitValuesToSet,
32468 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32469 _In_ UINT DestOffsetIn32BitValues);
32470
32471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
32472 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
32473 ID3D12GraphicsCommandList6 * This,
32474 _In_ UINT RootParameterIndex,
32475 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32476
32477 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
32478 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
32479 ID3D12GraphicsCommandList6 * This,
32480 _In_ UINT RootParameterIndex,
32481 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32482
32483 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
32484 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
32485 ID3D12GraphicsCommandList6 * This,
32486 _In_ UINT RootParameterIndex,
32487 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32488
32489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
32490 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
32491 ID3D12GraphicsCommandList6 * This,
32492 _In_ UINT RootParameterIndex,
32493 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32494
32495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
32496 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
32497 ID3D12GraphicsCommandList6 * This,
32498 _In_ UINT RootParameterIndex,
32499 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32500
32501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
32502 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
32503 ID3D12GraphicsCommandList6 * This,
32504 _In_ UINT RootParameterIndex,
32505 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32506
32507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
32508 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
32509 ID3D12GraphicsCommandList6 * This,
32510 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
32511
32512 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
32513 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
32514 ID3D12GraphicsCommandList6 * This,
32515 _In_ UINT StartSlot,
32516 _In_ UINT NumViews,
32517 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
32518
32519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
32520 void ( STDMETHODCALLTYPE *SOSetTargets )(
32521 ID3D12GraphicsCommandList6 * This,
32522 _In_ UINT StartSlot,
32523 _In_ UINT NumViews,
32524 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
32525
32526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
32527 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
32528 ID3D12GraphicsCommandList6 * This,
32529 _In_ UINT NumRenderTargetDescriptors,
32530 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
32531 _In_ BOOL RTsSingleHandleToDescriptorRange,
32532 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
32533
32534 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
32535 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
32536 ID3D12GraphicsCommandList6 * This,
32537 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
32538 _In_ D3D12_CLEAR_FLAGS ClearFlags,
32539 _In_ FLOAT Depth,
32540 _In_ UINT8 Stencil,
32541 _In_ UINT NumRects,
32542 _In_reads_(NumRects) const D3D12_RECT *pRects);
32543
32544 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
32545 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
32546 ID3D12GraphicsCommandList6 * This,
32547 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
32548 _In_ const FLOAT ColorRGBA[ 4 ],
32549 _In_ UINT NumRects,
32550 _In_reads_(NumRects) const D3D12_RECT *pRects);
32551
32552 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
32553 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
32554 ID3D12GraphicsCommandList6 * This,
32555 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32557 _In_ ID3D12Resource *pResource,
32558 _In_ const UINT Values[ 4 ],
32559 _In_ UINT NumRects,
32560 _In_reads_(NumRects) const D3D12_RECT *pRects);
32561
32562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
32563 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
32564 ID3D12GraphicsCommandList6 * This,
32565 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32566 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32567 _In_ ID3D12Resource *pResource,
32568 _In_ const FLOAT Values[ 4 ],
32569 _In_ UINT NumRects,
32570 _In_reads_(NumRects) const D3D12_RECT *pRects);
32571
32572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
32573 void ( STDMETHODCALLTYPE *DiscardResource )(
32574 ID3D12GraphicsCommandList6 * This,
32575 _In_ ID3D12Resource *pResource,
32576 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
32577
32578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
32579 void ( STDMETHODCALLTYPE *BeginQuery )(
32580 ID3D12GraphicsCommandList6 * This,
32581 _In_ ID3D12QueryHeap *pQueryHeap,
32582 _In_ D3D12_QUERY_TYPE Type,
32583 _In_ UINT Index);
32584
32585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
32586 void ( STDMETHODCALLTYPE *EndQuery )(
32587 ID3D12GraphicsCommandList6 * This,
32588 _In_ ID3D12QueryHeap *pQueryHeap,
32589 _In_ D3D12_QUERY_TYPE Type,
32590 _In_ UINT Index);
32591
32592 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
32593 void ( STDMETHODCALLTYPE *ResolveQueryData )(
32594 ID3D12GraphicsCommandList6 * This,
32595 _In_ ID3D12QueryHeap *pQueryHeap,
32596 _In_ D3D12_QUERY_TYPE Type,
32597 _In_ UINT StartIndex,
32598 _In_ UINT NumQueries,
32599 _In_ ID3D12Resource *pDestinationBuffer,
32600 _In_ UINT64 AlignedDestinationBufferOffset);
32601
32602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
32603 void ( STDMETHODCALLTYPE *SetPredication )(
32604 ID3D12GraphicsCommandList6 * This,
32605 _In_opt_ ID3D12Resource *pBuffer,
32606 _In_ UINT64 AlignedBufferOffset,
32607 _In_ D3D12_PREDICATION_OP Operation);
32608
32609 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
32610 void ( STDMETHODCALLTYPE *SetMarker )(
32611 ID3D12GraphicsCommandList6 * This,
32612 UINT Metadata,
32613 _In_reads_bytes_opt_(Size) const void *pData,
32614 UINT Size);
32615
32616 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
32617 void ( STDMETHODCALLTYPE *BeginEvent )(
32618 ID3D12GraphicsCommandList6 * This,
32619 UINT Metadata,
32620 _In_reads_bytes_opt_(Size) const void *pData,
32621 UINT Size);
32622
32623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
32624 void ( STDMETHODCALLTYPE *EndEvent )(
32625 ID3D12GraphicsCommandList6 * This);
32626
32627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
32628 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
32629 ID3D12GraphicsCommandList6 * This,
32630 _In_ ID3D12CommandSignature *pCommandSignature,
32631 _In_ UINT MaxCommandCount,
32632 _In_ ID3D12Resource *pArgumentBuffer,
32633 _In_ UINT64 ArgumentBufferOffset,
32634 _In_opt_ ID3D12Resource *pCountBuffer,
32635 _In_ UINT64 CountBufferOffset);
32636
32637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
32638 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
32639 ID3D12GraphicsCommandList6 * This,
32640 _In_ ID3D12Resource *pDstBuffer,
32641 UINT64 DstOffset,
32642 _In_ ID3D12Resource *pSrcBuffer,
32643 UINT64 SrcOffset,
32644 UINT Dependencies,
32645 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32646 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32647
32648 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
32649 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
32650 ID3D12GraphicsCommandList6 * This,
32651 _In_ ID3D12Resource *pDstBuffer,
32652 UINT64 DstOffset,
32653 _In_ ID3D12Resource *pSrcBuffer,
32654 UINT64 SrcOffset,
32655 UINT Dependencies,
32656 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32657 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32658
32659 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
32660 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
32661 ID3D12GraphicsCommandList6 * This,
32662 _In_ FLOAT Min,
32663 _In_ FLOAT Max);
32664
32665 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
32666 void ( STDMETHODCALLTYPE *SetSamplePositions )(
32667 ID3D12GraphicsCommandList6 * This,
32668 _In_ UINT NumSamplesPerPixel,
32669 _In_ UINT NumPixels,
32670 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
32671
32672 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
32673 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
32674 ID3D12GraphicsCommandList6 * This,
32675 _In_ ID3D12Resource *pDstResource,
32676 _In_ UINT DstSubresource,
32677 _In_ UINT DstX,
32678 _In_ UINT DstY,
32679 _In_ ID3D12Resource *pSrcResource,
32680 _In_ UINT SrcSubresource,
32681 _In_opt_ D3D12_RECT *pSrcRect,
32682 _In_ DXGI_FORMAT Format,
32683 _In_ D3D12_RESOLVE_MODE ResolveMode);
32684
32685 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
32686 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
32687 ID3D12GraphicsCommandList6 * This,
32688 _In_ UINT Mask);
32689
32690 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
32691 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
32692 ID3D12GraphicsCommandList6 * This,
32693 UINT Count,
32694 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
32695 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
32696
32697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
32698 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
32699 ID3D12GraphicsCommandList6 * This,
32700 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
32701
32702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
32703 void ( STDMETHODCALLTYPE *BeginRenderPass )(
32704 ID3D12GraphicsCommandList6 * This,
32705 _In_ UINT NumRenderTargets,
32706 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
32707 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
32708 D3D12_RENDER_PASS_FLAGS Flags);
32709
32710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
32711 void ( STDMETHODCALLTYPE *EndRenderPass )(
32712 ID3D12GraphicsCommandList6 * This);
32713
32714 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
32715 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
32716 ID3D12GraphicsCommandList6 * This,
32717 _In_ ID3D12MetaCommand *pMetaCommand,
32718 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
32719 _In_ SIZE_T InitializationParametersDataSizeInBytes);
32720
32721 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
32722 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
32723 ID3D12GraphicsCommandList6 * This,
32724 _In_ ID3D12MetaCommand *pMetaCommand,
32725 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
32726 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
32727
32728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
32729 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
32730 ID3D12GraphicsCommandList6 * This,
32731 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
32732 _In_ UINT NumPostbuildInfoDescs,
32733 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
32734
32735 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
32736 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
32737 ID3D12GraphicsCommandList6 * This,
32738 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
32739 _In_ UINT NumSourceAccelerationStructures,
32740 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
32741
32742 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
32743 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
32744 ID3D12GraphicsCommandList6 * This,
32745 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
32746 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
32747 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
32748
32749 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
32750 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
32751 ID3D12GraphicsCommandList6 * This,
32752 _In_ ID3D12StateObject *pStateObject);
32753
32754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
32755 void ( STDMETHODCALLTYPE *DispatchRays )(
32756 ID3D12GraphicsCommandList6 * This,
32757 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
32758
32759 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
32760 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
32761 ID3D12GraphicsCommandList6 * This,
32762 _In_ D3D12_SHADING_RATE baseShadingRate,
32763 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
32764
32765 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
32766 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
32767 ID3D12GraphicsCommandList6 * This,
32768 _In_opt_ ID3D12Resource *shadingRateImage);
32769
32770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
32771 void ( STDMETHODCALLTYPE *DispatchMesh )(
32772 ID3D12GraphicsCommandList6 * This,
32773 _In_ UINT ThreadGroupCountX,
32774 _In_ UINT ThreadGroupCountY,
32775 _In_ UINT ThreadGroupCountZ);
32776
32777 END_INTERFACE
32778 } ID3D12GraphicsCommandList6Vtbl;
32779
32780 interface ID3D12GraphicsCommandList6
32781 {
32782 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
32783 };
32784
32785
32786
32787#ifdef COBJMACROS
32788
32789
32790#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
32791 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
32792
32793#define ID3D12GraphicsCommandList6_AddRef(This) \
32794 ( (This)->lpVtbl -> AddRef(This) )
32795
32796#define ID3D12GraphicsCommandList6_Release(This) \
32797 ( (This)->lpVtbl -> Release(This) )
32798
32799
32800#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
32801 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
32802
32803#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
32804 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
32805
32806#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
32807 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
32808
32809#define ID3D12GraphicsCommandList6_SetName(This,Name) \
32810 ( (This)->lpVtbl -> SetName(This,Name) )
32811
32812
32813#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
32814 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
32815
32816
32817#define ID3D12GraphicsCommandList6_GetType(This) \
32818 ( (This)->lpVtbl -> GetType(This) )
32819
32820
32821#define ID3D12GraphicsCommandList6_Close(This) \
32822 ( (This)->lpVtbl -> Close(This) )
32823
32824#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
32825 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
32826
32827#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
32828 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
32829
32830#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
32831 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
32832
32833#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
32834 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
32835
32836#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
32837 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
32838
32839#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
32840 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
32841
32842#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
32843 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
32844
32845#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
32846 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
32847
32848#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
32849 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
32850
32851#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
32852 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32853
32854#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
32855 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32856
32857#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
32858 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32859
32860#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
32861 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32862
32863#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
32864 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32865
32866#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
32867 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32868
32869#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
32870 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32871
32872#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
32873 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32874
32875#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
32876 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32877
32878#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32879 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32880
32881#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
32882 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32883
32884#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
32885 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32886
32887#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32888 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32889
32890#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32891 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32892
32893#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32894 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32895
32896#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32897 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32898
32899#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32900 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32901
32902#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32903 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32904
32905#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32906 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32907
32908#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32909 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32910
32911#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32912 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32913
32914#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32915 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32916
32917#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32918 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32919
32920#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32921 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32922
32923#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
32924 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32925
32926#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32927 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32928
32929#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
32930 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32931
32932#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32933 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32934
32935#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32936 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32937
32938#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32939 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32940
32941#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32942 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32943
32944#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32945 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32946
32947#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
32948 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32949
32950#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
32951 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32952
32953#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
32954 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32955
32956#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32957 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32958
32959#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32960 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32961
32962#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
32963 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32964
32965#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
32966 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32967
32968#define ID3D12GraphicsCommandList6_EndEvent(This) \
32969 ( (This)->lpVtbl -> EndEvent(This) )
32970
32971#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32972 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32973
32974
32975#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32976 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32977
32978#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32979 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32980
32981#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
32982 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32983
32984#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32985 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32986
32987#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32988 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32989
32990#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
32991 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32992
32993
32994#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
32995 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32996
32997
32998#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
32999 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33000
33001
33002#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33003 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33004
33005#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
33006 ( (This)->lpVtbl -> EndRenderPass(This) )
33007
33008#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33009 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33010
33011#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33012 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33013
33014#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33015 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33016
33017#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33018 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33019
33020#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33021 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33022
33023#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
33024 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33025
33026#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
33027 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33028
33029
33030#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
33031 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33032
33033#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
33034 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33035
33036
33037#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33038 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33039
33040#endif /* COBJMACROS */
33041
33042
33043#endif /* C style interface */
33044
33045
33046
33047
33048#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
33049
33050
33051#ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33052#define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33053
33054/* interface ID3D12GraphicsCommandList7 */
33055/* [unique][local][object][uuid] */
33056
33057
33058EXTERN_C const IID IID_ID3D12GraphicsCommandList7;
33059
33060#if defined(__cplusplus) && !defined(CINTERFACE)
33061
33062 MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
33063 ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
33064 {
33065 public:
33066 virtual void STDMETHODCALLTYPE Barrier(
33067 UINT32 NumBarrierGroups,
33068 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
33069
33070 };
33071
33072
33073#else /* C style interface */
33074
33075 typedef struct ID3D12GraphicsCommandList7Vtbl
33076 {
33077 BEGIN_INTERFACE
33078
33079 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33080 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33081 ID3D12GraphicsCommandList7 * This,
33082 REFIID riid,
33083 _COM_Outptr_ void **ppvObject);
33084
33085 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33086 ULONG ( STDMETHODCALLTYPE *AddRef )(
33087 ID3D12GraphicsCommandList7 * This);
33088
33089 DECLSPEC_XFGVIRT(IUnknown, Release)
33090 ULONG ( STDMETHODCALLTYPE *Release )(
33091 ID3D12GraphicsCommandList7 * This);
33092
33093 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33094 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33095 ID3D12GraphicsCommandList7 * This,
33096 _In_ REFGUID guid,
33097 _Inout_ UINT *pDataSize,
33098 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33099
33100 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33101 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33102 ID3D12GraphicsCommandList7 * This,
33103 _In_ REFGUID guid,
33104 _In_ UINT DataSize,
33105 _In_reads_bytes_opt_( DataSize ) const void *pData);
33106
33107 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33108 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33109 ID3D12GraphicsCommandList7 * This,
33110 _In_ REFGUID guid,
33111 _In_opt_ const IUnknown *pData);
33112
33113 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33114 HRESULT ( STDMETHODCALLTYPE *SetName )(
33115 ID3D12GraphicsCommandList7 * This,
33116 _In_z_ LPCWSTR Name);
33117
33118 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33119 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33120 ID3D12GraphicsCommandList7 * This,
33121 REFIID riid,
33122 _COM_Outptr_opt_ void **ppvDevice);
33123
33124 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33125 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33126 ID3D12GraphicsCommandList7 * This);
33127
33128 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33129 HRESULT ( STDMETHODCALLTYPE *Close )(
33130 ID3D12GraphicsCommandList7 * This);
33131
33132 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33133 HRESULT ( STDMETHODCALLTYPE *Reset )(
33134 ID3D12GraphicsCommandList7 * This,
33135 _In_ ID3D12CommandAllocator *pAllocator,
33136 _In_opt_ ID3D12PipelineState *pInitialState);
33137
33138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33139 void ( STDMETHODCALLTYPE *ClearState )(
33140 ID3D12GraphicsCommandList7 * This,
33141 _In_opt_ ID3D12PipelineState *pPipelineState);
33142
33143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33144 void ( STDMETHODCALLTYPE *DrawInstanced )(
33145 ID3D12GraphicsCommandList7 * This,
33146 _In_ UINT VertexCountPerInstance,
33147 _In_ UINT InstanceCount,
33148 _In_ UINT StartVertexLocation,
33149 _In_ UINT StartInstanceLocation);
33150
33151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33152 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
33153 ID3D12GraphicsCommandList7 * This,
33154 _In_ UINT IndexCountPerInstance,
33155 _In_ UINT InstanceCount,
33156 _In_ UINT StartIndexLocation,
33157 _In_ INT BaseVertexLocation,
33158 _In_ UINT StartInstanceLocation);
33159
33160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
33161 void ( STDMETHODCALLTYPE *Dispatch )(
33162 ID3D12GraphicsCommandList7 * This,
33163 _In_ UINT ThreadGroupCountX,
33164 _In_ UINT ThreadGroupCountY,
33165 _In_ UINT ThreadGroupCountZ);
33166
33167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
33168 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
33169 ID3D12GraphicsCommandList7 * This,
33170 _In_ ID3D12Resource *pDstBuffer,
33171 UINT64 DstOffset,
33172 _In_ ID3D12Resource *pSrcBuffer,
33173 UINT64 SrcOffset,
33174 UINT64 NumBytes);
33175
33176 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
33177 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
33178 ID3D12GraphicsCommandList7 * This,
33179 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
33180 UINT DstX,
33181 UINT DstY,
33182 UINT DstZ,
33183 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
33184 _In_opt_ const D3D12_BOX *pSrcBox);
33185
33186 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
33187 void ( STDMETHODCALLTYPE *CopyResource )(
33188 ID3D12GraphicsCommandList7 * This,
33189 _In_ ID3D12Resource *pDstResource,
33190 _In_ ID3D12Resource *pSrcResource);
33191
33192 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
33193 void ( STDMETHODCALLTYPE *CopyTiles )(
33194 ID3D12GraphicsCommandList7 * This,
33195 _In_ ID3D12Resource *pTiledResource,
33196 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
33197 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
33198 _In_ ID3D12Resource *pBuffer,
33199 UINT64 BufferStartOffsetInBytes,
33200 D3D12_TILE_COPY_FLAGS Flags);
33201
33202 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
33203 void ( STDMETHODCALLTYPE *ResolveSubresource )(
33204 ID3D12GraphicsCommandList7 * This,
33205 _In_ ID3D12Resource *pDstResource,
33206 _In_ UINT DstSubresource,
33207 _In_ ID3D12Resource *pSrcResource,
33208 _In_ UINT SrcSubresource,
33209 _In_ DXGI_FORMAT Format);
33210
33211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
33212 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
33213 ID3D12GraphicsCommandList7 * This,
33214 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
33215
33216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
33217 void ( STDMETHODCALLTYPE *RSSetViewports )(
33218 ID3D12GraphicsCommandList7 * This,
33219 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
33220 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
33221
33222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
33223 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
33224 ID3D12GraphicsCommandList7 * This,
33225 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
33226 _In_reads_( NumRects) const D3D12_RECT *pRects);
33227
33228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
33229 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
33230 ID3D12GraphicsCommandList7 * This,
33231 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
33232
33233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
33234 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
33235 ID3D12GraphicsCommandList7 * This,
33236 _In_ UINT StencilRef);
33237
33238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
33239 void ( STDMETHODCALLTYPE *SetPipelineState )(
33240 ID3D12GraphicsCommandList7 * This,
33241 _In_ ID3D12PipelineState *pPipelineState);
33242
33243 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
33244 void ( STDMETHODCALLTYPE *ResourceBarrier )(
33245 ID3D12GraphicsCommandList7 * This,
33246 _In_ UINT NumBarriers,
33247 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
33248
33249 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
33250 void ( STDMETHODCALLTYPE *ExecuteBundle )(
33251 ID3D12GraphicsCommandList7 * This,
33252 _In_ ID3D12GraphicsCommandList *pCommandList);
33253
33254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
33255 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
33256 ID3D12GraphicsCommandList7 * This,
33257 _In_ UINT NumDescriptorHeaps,
33258 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
33259
33260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
33261 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
33262 ID3D12GraphicsCommandList7 * This,
33263 _In_opt_ ID3D12RootSignature *pRootSignature);
33264
33265 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
33266 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
33267 ID3D12GraphicsCommandList7 * This,
33268 _In_opt_ ID3D12RootSignature *pRootSignature);
33269
33270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
33271 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
33272 ID3D12GraphicsCommandList7 * This,
33273 _In_ UINT RootParameterIndex,
33274 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33275
33276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
33277 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
33278 ID3D12GraphicsCommandList7 * This,
33279 _In_ UINT RootParameterIndex,
33280 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33281
33282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
33283 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
33284 ID3D12GraphicsCommandList7 * This,
33285 _In_ UINT RootParameterIndex,
33286 _In_ UINT SrcData,
33287 _In_ UINT DestOffsetIn32BitValues);
33288
33289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
33290 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
33291 ID3D12GraphicsCommandList7 * This,
33292 _In_ UINT RootParameterIndex,
33293 _In_ UINT SrcData,
33294 _In_ UINT DestOffsetIn32BitValues);
33295
33296 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
33297 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
33298 ID3D12GraphicsCommandList7 * This,
33299 _In_ UINT RootParameterIndex,
33300 _In_ UINT Num32BitValuesToSet,
33301 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33302 _In_ UINT DestOffsetIn32BitValues);
33303
33304 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
33305 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
33306 ID3D12GraphicsCommandList7 * This,
33307 _In_ UINT RootParameterIndex,
33308 _In_ UINT Num32BitValuesToSet,
33309 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33310 _In_ UINT DestOffsetIn32BitValues);
33311
33312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
33313 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
33314 ID3D12GraphicsCommandList7 * This,
33315 _In_ UINT RootParameterIndex,
33316 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33317
33318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
33319 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
33320 ID3D12GraphicsCommandList7 * This,
33321 _In_ UINT RootParameterIndex,
33322 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33323
33324 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
33325 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
33326 ID3D12GraphicsCommandList7 * This,
33327 _In_ UINT RootParameterIndex,
33328 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33329
33330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
33331 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
33332 ID3D12GraphicsCommandList7 * This,
33333 _In_ UINT RootParameterIndex,
33334 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33335
33336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
33337 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
33338 ID3D12GraphicsCommandList7 * This,
33339 _In_ UINT RootParameterIndex,
33340 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33341
33342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
33343 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
33344 ID3D12GraphicsCommandList7 * This,
33345 _In_ UINT RootParameterIndex,
33346 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33347
33348 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
33349 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
33350 ID3D12GraphicsCommandList7 * This,
33351 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
33352
33353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
33354 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
33355 ID3D12GraphicsCommandList7 * This,
33356 _In_ UINT StartSlot,
33357 _In_ UINT NumViews,
33358 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
33359
33360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
33361 void ( STDMETHODCALLTYPE *SOSetTargets )(
33362 ID3D12GraphicsCommandList7 * This,
33363 _In_ UINT StartSlot,
33364 _In_ UINT NumViews,
33365 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
33366
33367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
33368 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
33369 ID3D12GraphicsCommandList7 * This,
33370 _In_ UINT NumRenderTargetDescriptors,
33371 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
33372 _In_ BOOL RTsSingleHandleToDescriptorRange,
33373 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
33374
33375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
33376 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
33377 ID3D12GraphicsCommandList7 * This,
33378 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
33379 _In_ D3D12_CLEAR_FLAGS ClearFlags,
33380 _In_ FLOAT Depth,
33381 _In_ UINT8 Stencil,
33382 _In_ UINT NumRects,
33383 _In_reads_(NumRects) const D3D12_RECT *pRects);
33384
33385 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
33386 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
33387 ID3D12GraphicsCommandList7 * This,
33388 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
33389 _In_ const FLOAT ColorRGBA[ 4 ],
33390 _In_ UINT NumRects,
33391 _In_reads_(NumRects) const D3D12_RECT *pRects);
33392
33393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
33394 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
33395 ID3D12GraphicsCommandList7 * This,
33396 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33397 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33398 _In_ ID3D12Resource *pResource,
33399 _In_ const UINT Values[ 4 ],
33400 _In_ UINT NumRects,
33401 _In_reads_(NumRects) const D3D12_RECT *pRects);
33402
33403 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
33404 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
33405 ID3D12GraphicsCommandList7 * This,
33406 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33407 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33408 _In_ ID3D12Resource *pResource,
33409 _In_ const FLOAT Values[ 4 ],
33410 _In_ UINT NumRects,
33411 _In_reads_(NumRects) const D3D12_RECT *pRects);
33412
33413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
33414 void ( STDMETHODCALLTYPE *DiscardResource )(
33415 ID3D12GraphicsCommandList7 * This,
33416 _In_ ID3D12Resource *pResource,
33417 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
33418
33419 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
33420 void ( STDMETHODCALLTYPE *BeginQuery )(
33421 ID3D12GraphicsCommandList7 * This,
33422 _In_ ID3D12QueryHeap *pQueryHeap,
33423 _In_ D3D12_QUERY_TYPE Type,
33424 _In_ UINT Index);
33425
33426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
33427 void ( STDMETHODCALLTYPE *EndQuery )(
33428 ID3D12GraphicsCommandList7 * This,
33429 _In_ ID3D12QueryHeap *pQueryHeap,
33430 _In_ D3D12_QUERY_TYPE Type,
33431 _In_ UINT Index);
33432
33433 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
33434 void ( STDMETHODCALLTYPE *ResolveQueryData )(
33435 ID3D12GraphicsCommandList7 * This,
33436 _In_ ID3D12QueryHeap *pQueryHeap,
33437 _In_ D3D12_QUERY_TYPE Type,
33438 _In_ UINT StartIndex,
33439 _In_ UINT NumQueries,
33440 _In_ ID3D12Resource *pDestinationBuffer,
33441 _In_ UINT64 AlignedDestinationBufferOffset);
33442
33443 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
33444 void ( STDMETHODCALLTYPE *SetPredication )(
33445 ID3D12GraphicsCommandList7 * This,
33446 _In_opt_ ID3D12Resource *pBuffer,
33447 _In_ UINT64 AlignedBufferOffset,
33448 _In_ D3D12_PREDICATION_OP Operation);
33449
33450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
33451 void ( STDMETHODCALLTYPE *SetMarker )(
33452 ID3D12GraphicsCommandList7 * This,
33453 UINT Metadata,
33454 _In_reads_bytes_opt_(Size) const void *pData,
33455 UINT Size);
33456
33457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
33458 void ( STDMETHODCALLTYPE *BeginEvent )(
33459 ID3D12GraphicsCommandList7 * This,
33460 UINT Metadata,
33461 _In_reads_bytes_opt_(Size) const void *pData,
33462 UINT Size);
33463
33464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
33465 void ( STDMETHODCALLTYPE *EndEvent )(
33466 ID3D12GraphicsCommandList7 * This);
33467
33468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
33469 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
33470 ID3D12GraphicsCommandList7 * This,
33471 _In_ ID3D12CommandSignature *pCommandSignature,
33472 _In_ UINT MaxCommandCount,
33473 _In_ ID3D12Resource *pArgumentBuffer,
33474 _In_ UINT64 ArgumentBufferOffset,
33475 _In_opt_ ID3D12Resource *pCountBuffer,
33476 _In_ UINT64 CountBufferOffset);
33477
33478 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
33479 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
33480 ID3D12GraphicsCommandList7 * This,
33481 _In_ ID3D12Resource *pDstBuffer,
33482 UINT64 DstOffset,
33483 _In_ ID3D12Resource *pSrcBuffer,
33484 UINT64 SrcOffset,
33485 UINT Dependencies,
33486 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33487 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33488
33489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
33490 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
33491 ID3D12GraphicsCommandList7 * This,
33492 _In_ ID3D12Resource *pDstBuffer,
33493 UINT64 DstOffset,
33494 _In_ ID3D12Resource *pSrcBuffer,
33495 UINT64 SrcOffset,
33496 UINT Dependencies,
33497 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33498 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33499
33500 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
33501 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
33502 ID3D12GraphicsCommandList7 * This,
33503 _In_ FLOAT Min,
33504 _In_ FLOAT Max);
33505
33506 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
33507 void ( STDMETHODCALLTYPE *SetSamplePositions )(
33508 ID3D12GraphicsCommandList7 * This,
33509 _In_ UINT NumSamplesPerPixel,
33510 _In_ UINT NumPixels,
33511 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
33512
33513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
33514 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
33515 ID3D12GraphicsCommandList7 * This,
33516 _In_ ID3D12Resource *pDstResource,
33517 _In_ UINT DstSubresource,
33518 _In_ UINT DstX,
33519 _In_ UINT DstY,
33520 _In_ ID3D12Resource *pSrcResource,
33521 _In_ UINT SrcSubresource,
33522 _In_opt_ D3D12_RECT *pSrcRect,
33523 _In_ DXGI_FORMAT Format,
33524 _In_ D3D12_RESOLVE_MODE ResolveMode);
33525
33526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
33527 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
33528 ID3D12GraphicsCommandList7 * This,
33529 _In_ UINT Mask);
33530
33531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
33532 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
33533 ID3D12GraphicsCommandList7 * This,
33534 UINT Count,
33535 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
33536 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
33537
33538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
33539 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
33540 ID3D12GraphicsCommandList7 * This,
33541 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
33542
33543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
33544 void ( STDMETHODCALLTYPE *BeginRenderPass )(
33545 ID3D12GraphicsCommandList7 * This,
33546 _In_ UINT NumRenderTargets,
33547 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
33548 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
33549 D3D12_RENDER_PASS_FLAGS Flags);
33550
33551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
33552 void ( STDMETHODCALLTYPE *EndRenderPass )(
33553 ID3D12GraphicsCommandList7 * This);
33554
33555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
33556 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
33557 ID3D12GraphicsCommandList7 * This,
33558 _In_ ID3D12MetaCommand *pMetaCommand,
33559 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
33560 _In_ SIZE_T InitializationParametersDataSizeInBytes);
33561
33562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
33563 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
33564 ID3D12GraphicsCommandList7 * This,
33565 _In_ ID3D12MetaCommand *pMetaCommand,
33566 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
33567 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
33568
33569 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
33570 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
33571 ID3D12GraphicsCommandList7 * This,
33572 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
33573 _In_ UINT NumPostbuildInfoDescs,
33574 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
33575
33576 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
33577 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
33578 ID3D12GraphicsCommandList7 * This,
33579 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
33580 _In_ UINT NumSourceAccelerationStructures,
33581 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
33582
33583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
33584 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
33585 ID3D12GraphicsCommandList7 * This,
33586 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
33587 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
33588 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
33589
33590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
33591 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
33592 ID3D12GraphicsCommandList7 * This,
33593 _In_ ID3D12StateObject *pStateObject);
33594
33595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
33596 void ( STDMETHODCALLTYPE *DispatchRays )(
33597 ID3D12GraphicsCommandList7 * This,
33598 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
33599
33600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
33601 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
33602 ID3D12GraphicsCommandList7 * This,
33603 _In_ D3D12_SHADING_RATE baseShadingRate,
33604 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
33605
33606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
33607 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
33608 ID3D12GraphicsCommandList7 * This,
33609 _In_opt_ ID3D12Resource *shadingRateImage);
33610
33611 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
33612 void ( STDMETHODCALLTYPE *DispatchMesh )(
33613 ID3D12GraphicsCommandList7 * This,
33614 _In_ UINT ThreadGroupCountX,
33615 _In_ UINT ThreadGroupCountY,
33616 _In_ UINT ThreadGroupCountZ);
33617
33618 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
33619 void ( STDMETHODCALLTYPE *Barrier )(
33620 ID3D12GraphicsCommandList7 * This,
33621 UINT32 NumBarrierGroups,
33622 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
33623
33624 END_INTERFACE
33625 } ID3D12GraphicsCommandList7Vtbl;
33626
33627 interface ID3D12GraphicsCommandList7
33628 {
33629 CONST_VTBL struct ID3D12GraphicsCommandList7Vtbl *lpVtbl;
33630 };
33631
33632
33633
33634#ifdef COBJMACROS
33635
33636
33637#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) \
33638 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
33639
33640#define ID3D12GraphicsCommandList7_AddRef(This) \
33641 ( (This)->lpVtbl -> AddRef(This) )
33642
33643#define ID3D12GraphicsCommandList7_Release(This) \
33644 ( (This)->lpVtbl -> Release(This) )
33645
33646
33647#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData) \
33648 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
33649
33650#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData) \
33651 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
33652
33653#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData) \
33654 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
33655
33656#define ID3D12GraphicsCommandList7_SetName(This,Name) \
33657 ( (This)->lpVtbl -> SetName(This,Name) )
33658
33659
33660#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice) \
33661 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
33662
33663
33664#define ID3D12GraphicsCommandList7_GetType(This) \
33665 ( (This)->lpVtbl -> GetType(This) )
33666
33667
33668#define ID3D12GraphicsCommandList7_Close(This) \
33669 ( (This)->lpVtbl -> Close(This) )
33670
33671#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState) \
33672 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
33673
33674#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState) \
33675 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
33676
33677#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
33678 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
33679
33680#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
33681 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
33682
33683#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33684 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33685
33686#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
33687 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
33688
33689#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
33690 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
33691
33692#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource) \
33693 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
33694
33695#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
33696 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
33697
33698#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
33699 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
33700
33701#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology) \
33702 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
33703
33704#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports) \
33705 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
33706
33707#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects) \
33708 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
33709
33710#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor) \
33711 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
33712
33713#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef) \
33714 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
33715
33716#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState) \
33717 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
33718
33719#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers) \
33720 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
33721
33722#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList) \
33723 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
33724
33725#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
33726 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
33727
33728#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature) \
33729 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
33730
33731#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature) \
33732 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
33733
33734#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33735 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33736
33737#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33738 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33739
33740#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33741 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33742
33743#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33744 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33745
33746#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33747 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33748
33749#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33750 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33751
33752#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33753 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33754
33755#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33756 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33757
33758#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33759 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33760
33761#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33762 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33763
33764#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33765 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33766
33767#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33768 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33769
33770#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView) \
33771 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
33772
33773#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
33774 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
33775
33776#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews) \
33777 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
33778
33779#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
33780 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
33781
33782#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
33783 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
33784
33785#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
33786 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
33787
33788#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33789 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33790
33791#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33792 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33793
33794#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion) \
33795 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
33796
33797#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index) \
33798 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
33799
33800#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index) \
33801 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
33802
33803#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
33804 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
33805
33806#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
33807 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
33808
33809#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size) \
33810 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
33811
33812#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size) \
33813 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
33814
33815#define ID3D12GraphicsCommandList7_EndEvent(This) \
33816 ( (This)->lpVtbl -> EndEvent(This) )
33817
33818#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
33819 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
33820
33821
33822#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33823 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33824
33825#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33826 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33827
33828#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max) \
33829 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
33830
33831#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
33832 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
33833
33834#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
33835 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
33836
33837#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask) \
33838 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
33839
33840
33841#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes) \
33842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
33843
33844
33845#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession) \
33846 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33847
33848
33849#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33850 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33851
33852#define ID3D12GraphicsCommandList7_EndRenderPass(This) \
33853 ( (This)->lpVtbl -> EndRenderPass(This) )
33854
33855#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33856 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33857
33858#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33859 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33860
33861#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33862 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33863
33864#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33865 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33866
33867#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33868 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33869
33870#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject) \
33871 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33872
33873#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc) \
33874 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33875
33876
33877#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners) \
33878 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33879
33880#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage) \
33881 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33882
33883
33884#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33885 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33886
33887
33888#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups) \
33889 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
33890
33891#endif /* COBJMACROS */
33892
33893
33894#endif /* C style interface */
33895
33896
33897
33898
33899#endif /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
33900
33901
33902#ifndef __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33903#define __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33904
33905/* interface ID3D12GraphicsCommandList8 */
33906/* [unique][local][object][uuid] */
33907
33908
33909EXTERN_C const IID IID_ID3D12GraphicsCommandList8;
33910
33911#if defined(__cplusplus) && !defined(CINTERFACE)
33912
33913 MIDL_INTERFACE("ee936ef9-599d-4d28-938e-23c4ad05ce51")
33914 ID3D12GraphicsCommandList8 : public ID3D12GraphicsCommandList7
33915 {
33916 public:
33917 virtual void STDMETHODCALLTYPE OMSetFrontAndBackStencilRef(
33918 _In_ UINT FrontStencilRef,
33919 _In_ UINT BackStencilRef) = 0;
33920
33921 };
33922
33923
33924#else /* C style interface */
33925
33926 typedef struct ID3D12GraphicsCommandList8Vtbl
33927 {
33928 BEGIN_INTERFACE
33929
33930 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33931 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33932 ID3D12GraphicsCommandList8 * This,
33933 REFIID riid,
33934 _COM_Outptr_ void **ppvObject);
33935
33936 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33937 ULONG ( STDMETHODCALLTYPE *AddRef )(
33938 ID3D12GraphicsCommandList8 * This);
33939
33940 DECLSPEC_XFGVIRT(IUnknown, Release)
33941 ULONG ( STDMETHODCALLTYPE *Release )(
33942 ID3D12GraphicsCommandList8 * This);
33943
33944 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33945 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33946 ID3D12GraphicsCommandList8 * This,
33947 _In_ REFGUID guid,
33948 _Inout_ UINT *pDataSize,
33949 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33950
33951 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33952 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33953 ID3D12GraphicsCommandList8 * This,
33954 _In_ REFGUID guid,
33955 _In_ UINT DataSize,
33956 _In_reads_bytes_opt_( DataSize ) const void *pData);
33957
33958 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33959 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33960 ID3D12GraphicsCommandList8 * This,
33961 _In_ REFGUID guid,
33962 _In_opt_ const IUnknown *pData);
33963
33964 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33965 HRESULT ( STDMETHODCALLTYPE *SetName )(
33966 ID3D12GraphicsCommandList8 * This,
33967 _In_z_ LPCWSTR Name);
33968
33969 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33970 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33971 ID3D12GraphicsCommandList8 * This,
33972 REFIID riid,
33973 _COM_Outptr_opt_ void **ppvDevice);
33974
33975 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33976 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33977 ID3D12GraphicsCommandList8 * This);
33978
33979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33980 HRESULT ( STDMETHODCALLTYPE *Close )(
33981 ID3D12GraphicsCommandList8 * This);
33982
33983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33984 HRESULT ( STDMETHODCALLTYPE *Reset )(
33985 ID3D12GraphicsCommandList8 * This,
33986 _In_ ID3D12CommandAllocator *pAllocator,
33987 _In_opt_ ID3D12PipelineState *pInitialState);
33988
33989 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33990 void ( STDMETHODCALLTYPE *ClearState )(
33991 ID3D12GraphicsCommandList8 * This,
33992 _In_opt_ ID3D12PipelineState *pPipelineState);
33993
33994 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33995 void ( STDMETHODCALLTYPE *DrawInstanced )(
33996 ID3D12GraphicsCommandList8 * This,
33997 _In_ UINT VertexCountPerInstance,
33998 _In_ UINT InstanceCount,
33999 _In_ UINT StartVertexLocation,
34000 _In_ UINT StartInstanceLocation);
34001
34002 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34003 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34004 ID3D12GraphicsCommandList8 * This,
34005 _In_ UINT IndexCountPerInstance,
34006 _In_ UINT InstanceCount,
34007 _In_ UINT StartIndexLocation,
34008 _In_ INT BaseVertexLocation,
34009 _In_ UINT StartInstanceLocation);
34010
34011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34012 void ( STDMETHODCALLTYPE *Dispatch )(
34013 ID3D12GraphicsCommandList8 * This,
34014 _In_ UINT ThreadGroupCountX,
34015 _In_ UINT ThreadGroupCountY,
34016 _In_ UINT ThreadGroupCountZ);
34017
34018 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34019 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34020 ID3D12GraphicsCommandList8 * This,
34021 _In_ ID3D12Resource *pDstBuffer,
34022 UINT64 DstOffset,
34023 _In_ ID3D12Resource *pSrcBuffer,
34024 UINT64 SrcOffset,
34025 UINT64 NumBytes);
34026
34027 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34028 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34029 ID3D12GraphicsCommandList8 * This,
34030 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34031 UINT DstX,
34032 UINT DstY,
34033 UINT DstZ,
34034 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34035 _In_opt_ const D3D12_BOX *pSrcBox);
34036
34037 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34038 void ( STDMETHODCALLTYPE *CopyResource )(
34039 ID3D12GraphicsCommandList8 * This,
34040 _In_ ID3D12Resource *pDstResource,
34041 _In_ ID3D12Resource *pSrcResource);
34042
34043 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34044 void ( STDMETHODCALLTYPE *CopyTiles )(
34045 ID3D12GraphicsCommandList8 * This,
34046 _In_ ID3D12Resource *pTiledResource,
34047 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34048 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34049 _In_ ID3D12Resource *pBuffer,
34050 UINT64 BufferStartOffsetInBytes,
34051 D3D12_TILE_COPY_FLAGS Flags);
34052
34053 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34054 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34055 ID3D12GraphicsCommandList8 * This,
34056 _In_ ID3D12Resource *pDstResource,
34057 _In_ UINT DstSubresource,
34058 _In_ ID3D12Resource *pSrcResource,
34059 _In_ UINT SrcSubresource,
34060 _In_ DXGI_FORMAT Format);
34061
34062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34063 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34064 ID3D12GraphicsCommandList8 * This,
34065 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34066
34067 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34068 void ( STDMETHODCALLTYPE *RSSetViewports )(
34069 ID3D12GraphicsCommandList8 * This,
34070 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34071 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34072
34073 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34074 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34075 ID3D12GraphicsCommandList8 * This,
34076 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34077 _In_reads_( NumRects) const D3D12_RECT *pRects);
34078
34079 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34080 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34081 ID3D12GraphicsCommandList8 * This,
34082 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34083
34084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34085 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34086 ID3D12GraphicsCommandList8 * This,
34087 _In_ UINT StencilRef);
34088
34089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34090 void ( STDMETHODCALLTYPE *SetPipelineState )(
34091 ID3D12GraphicsCommandList8 * This,
34092 _In_ ID3D12PipelineState *pPipelineState);
34093
34094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34095 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34096 ID3D12GraphicsCommandList8 * This,
34097 _In_ UINT NumBarriers,
34098 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34099
34100 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34101 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34102 ID3D12GraphicsCommandList8 * This,
34103 _In_ ID3D12GraphicsCommandList *pCommandList);
34104
34105 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34106 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34107 ID3D12GraphicsCommandList8 * This,
34108 _In_ UINT NumDescriptorHeaps,
34109 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34110
34111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34112 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34113 ID3D12GraphicsCommandList8 * This,
34114 _In_opt_ ID3D12RootSignature *pRootSignature);
34115
34116 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34117 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34118 ID3D12GraphicsCommandList8 * This,
34119 _In_opt_ ID3D12RootSignature *pRootSignature);
34120
34121 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34122 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34123 ID3D12GraphicsCommandList8 * This,
34124 _In_ UINT RootParameterIndex,
34125 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34126
34127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34128 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34129 ID3D12GraphicsCommandList8 * This,
34130 _In_ UINT RootParameterIndex,
34131 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34132
34133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34134 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34135 ID3D12GraphicsCommandList8 * This,
34136 _In_ UINT RootParameterIndex,
34137 _In_ UINT SrcData,
34138 _In_ UINT DestOffsetIn32BitValues);
34139
34140 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
34141 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
34142 ID3D12GraphicsCommandList8 * This,
34143 _In_ UINT RootParameterIndex,
34144 _In_ UINT SrcData,
34145 _In_ UINT DestOffsetIn32BitValues);
34146
34147 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
34148 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
34149 ID3D12GraphicsCommandList8 * This,
34150 _In_ UINT RootParameterIndex,
34151 _In_ UINT Num32BitValuesToSet,
34152 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34153 _In_ UINT DestOffsetIn32BitValues);
34154
34155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
34156 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
34157 ID3D12GraphicsCommandList8 * This,
34158 _In_ UINT RootParameterIndex,
34159 _In_ UINT Num32BitValuesToSet,
34160 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34161 _In_ UINT DestOffsetIn32BitValues);
34162
34163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
34164 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
34165 ID3D12GraphicsCommandList8 * This,
34166 _In_ UINT RootParameterIndex,
34167 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34168
34169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
34170 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
34171 ID3D12GraphicsCommandList8 * This,
34172 _In_ UINT RootParameterIndex,
34173 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34174
34175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
34176 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
34177 ID3D12GraphicsCommandList8 * This,
34178 _In_ UINT RootParameterIndex,
34179 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34180
34181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
34182 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
34183 ID3D12GraphicsCommandList8 * This,
34184 _In_ UINT RootParameterIndex,
34185 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34186
34187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
34188 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
34189 ID3D12GraphicsCommandList8 * This,
34190 _In_ UINT RootParameterIndex,
34191 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34192
34193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
34194 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
34195 ID3D12GraphicsCommandList8 * This,
34196 _In_ UINT RootParameterIndex,
34197 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34198
34199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
34200 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
34201 ID3D12GraphicsCommandList8 * This,
34202 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
34203
34204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
34205 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
34206 ID3D12GraphicsCommandList8 * This,
34207 _In_ UINT StartSlot,
34208 _In_ UINT NumViews,
34209 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
34210
34211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
34212 void ( STDMETHODCALLTYPE *SOSetTargets )(
34213 ID3D12GraphicsCommandList8 * This,
34214 _In_ UINT StartSlot,
34215 _In_ UINT NumViews,
34216 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
34217
34218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
34219 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
34220 ID3D12GraphicsCommandList8 * This,
34221 _In_ UINT NumRenderTargetDescriptors,
34222 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
34223 _In_ BOOL RTsSingleHandleToDescriptorRange,
34224 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
34225
34226 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
34227 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
34228 ID3D12GraphicsCommandList8 * This,
34229 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
34230 _In_ D3D12_CLEAR_FLAGS ClearFlags,
34231 _In_ FLOAT Depth,
34232 _In_ UINT8 Stencil,
34233 _In_ UINT NumRects,
34234 _In_reads_(NumRects) const D3D12_RECT *pRects);
34235
34236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
34237 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
34238 ID3D12GraphicsCommandList8 * This,
34239 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
34240 _In_ const FLOAT ColorRGBA[ 4 ],
34241 _In_ UINT NumRects,
34242 _In_reads_(NumRects) const D3D12_RECT *pRects);
34243
34244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
34245 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
34246 ID3D12GraphicsCommandList8 * This,
34247 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34248 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34249 _In_ ID3D12Resource *pResource,
34250 _In_ const UINT Values[ 4 ],
34251 _In_ UINT NumRects,
34252 _In_reads_(NumRects) const D3D12_RECT *pRects);
34253
34254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
34255 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
34256 ID3D12GraphicsCommandList8 * This,
34257 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34258 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34259 _In_ ID3D12Resource *pResource,
34260 _In_ const FLOAT Values[ 4 ],
34261 _In_ UINT NumRects,
34262 _In_reads_(NumRects) const D3D12_RECT *pRects);
34263
34264 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
34265 void ( STDMETHODCALLTYPE *DiscardResource )(
34266 ID3D12GraphicsCommandList8 * This,
34267 _In_ ID3D12Resource *pResource,
34268 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
34269
34270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
34271 void ( STDMETHODCALLTYPE *BeginQuery )(
34272 ID3D12GraphicsCommandList8 * This,
34273 _In_ ID3D12QueryHeap *pQueryHeap,
34274 _In_ D3D12_QUERY_TYPE Type,
34275 _In_ UINT Index);
34276
34277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
34278 void ( STDMETHODCALLTYPE *EndQuery )(
34279 ID3D12GraphicsCommandList8 * This,
34280 _In_ ID3D12QueryHeap *pQueryHeap,
34281 _In_ D3D12_QUERY_TYPE Type,
34282 _In_ UINT Index);
34283
34284 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
34285 void ( STDMETHODCALLTYPE *ResolveQueryData )(
34286 ID3D12GraphicsCommandList8 * This,
34287 _In_ ID3D12QueryHeap *pQueryHeap,
34288 _In_ D3D12_QUERY_TYPE Type,
34289 _In_ UINT StartIndex,
34290 _In_ UINT NumQueries,
34291 _In_ ID3D12Resource *pDestinationBuffer,
34292 _In_ UINT64 AlignedDestinationBufferOffset);
34293
34294 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
34295 void ( STDMETHODCALLTYPE *SetPredication )(
34296 ID3D12GraphicsCommandList8 * This,
34297 _In_opt_ ID3D12Resource *pBuffer,
34298 _In_ UINT64 AlignedBufferOffset,
34299 _In_ D3D12_PREDICATION_OP Operation);
34300
34301 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
34302 void ( STDMETHODCALLTYPE *SetMarker )(
34303 ID3D12GraphicsCommandList8 * This,
34304 UINT Metadata,
34305 _In_reads_bytes_opt_(Size) const void *pData,
34306 UINT Size);
34307
34308 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
34309 void ( STDMETHODCALLTYPE *BeginEvent )(
34310 ID3D12GraphicsCommandList8 * This,
34311 UINT Metadata,
34312 _In_reads_bytes_opt_(Size) const void *pData,
34313 UINT Size);
34314
34315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
34316 void ( STDMETHODCALLTYPE *EndEvent )(
34317 ID3D12GraphicsCommandList8 * This);
34318
34319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
34320 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
34321 ID3D12GraphicsCommandList8 * This,
34322 _In_ ID3D12CommandSignature *pCommandSignature,
34323 _In_ UINT MaxCommandCount,
34324 _In_ ID3D12Resource *pArgumentBuffer,
34325 _In_ UINT64 ArgumentBufferOffset,
34326 _In_opt_ ID3D12Resource *pCountBuffer,
34327 _In_ UINT64 CountBufferOffset);
34328
34329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
34330 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
34331 ID3D12GraphicsCommandList8 * This,
34332 _In_ ID3D12Resource *pDstBuffer,
34333 UINT64 DstOffset,
34334 _In_ ID3D12Resource *pSrcBuffer,
34335 UINT64 SrcOffset,
34336 UINT Dependencies,
34337 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34338 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34339
34340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
34341 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
34342 ID3D12GraphicsCommandList8 * This,
34343 _In_ ID3D12Resource *pDstBuffer,
34344 UINT64 DstOffset,
34345 _In_ ID3D12Resource *pSrcBuffer,
34346 UINT64 SrcOffset,
34347 UINT Dependencies,
34348 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34349 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34350
34351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
34352 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
34353 ID3D12GraphicsCommandList8 * This,
34354 _In_ FLOAT Min,
34355 _In_ FLOAT Max);
34356
34357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
34358 void ( STDMETHODCALLTYPE *SetSamplePositions )(
34359 ID3D12GraphicsCommandList8 * This,
34360 _In_ UINT NumSamplesPerPixel,
34361 _In_ UINT NumPixels,
34362 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
34363
34364 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
34365 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
34366 ID3D12GraphicsCommandList8 * This,
34367 _In_ ID3D12Resource *pDstResource,
34368 _In_ UINT DstSubresource,
34369 _In_ UINT DstX,
34370 _In_ UINT DstY,
34371 _In_ ID3D12Resource *pSrcResource,
34372 _In_ UINT SrcSubresource,
34373 _In_opt_ D3D12_RECT *pSrcRect,
34374 _In_ DXGI_FORMAT Format,
34375 _In_ D3D12_RESOLVE_MODE ResolveMode);
34376
34377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
34378 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
34379 ID3D12GraphicsCommandList8 * This,
34380 _In_ UINT Mask);
34381
34382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
34383 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
34384 ID3D12GraphicsCommandList8 * This,
34385 UINT Count,
34386 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
34387 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
34388
34389 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
34390 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
34391 ID3D12GraphicsCommandList8 * This,
34392 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
34393
34394 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
34395 void ( STDMETHODCALLTYPE *BeginRenderPass )(
34396 ID3D12GraphicsCommandList8 * This,
34397 _In_ UINT NumRenderTargets,
34398 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
34399 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
34400 D3D12_RENDER_PASS_FLAGS Flags);
34401
34402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
34403 void ( STDMETHODCALLTYPE *EndRenderPass )(
34404 ID3D12GraphicsCommandList8 * This);
34405
34406 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
34407 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
34408 ID3D12GraphicsCommandList8 * This,
34409 _In_ ID3D12MetaCommand *pMetaCommand,
34410 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
34411 _In_ SIZE_T InitializationParametersDataSizeInBytes);
34412
34413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
34414 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
34415 ID3D12GraphicsCommandList8 * This,
34416 _In_ ID3D12MetaCommand *pMetaCommand,
34417 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
34418 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
34419
34420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
34421 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
34422 ID3D12GraphicsCommandList8 * This,
34423 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
34424 _In_ UINT NumPostbuildInfoDescs,
34425 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
34426
34427 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
34428 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
34429 ID3D12GraphicsCommandList8 * This,
34430 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
34431 _In_ UINT NumSourceAccelerationStructures,
34432 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
34433
34434 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
34435 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
34436 ID3D12GraphicsCommandList8 * This,
34437 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
34438 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
34439 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
34440
34441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
34442 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
34443 ID3D12GraphicsCommandList8 * This,
34444 _In_ ID3D12StateObject *pStateObject);
34445
34446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
34447 void ( STDMETHODCALLTYPE *DispatchRays )(
34448 ID3D12GraphicsCommandList8 * This,
34449 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
34450
34451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
34452 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
34453 ID3D12GraphicsCommandList8 * This,
34454 _In_ D3D12_SHADING_RATE baseShadingRate,
34455 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
34456
34457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
34458 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
34459 ID3D12GraphicsCommandList8 * This,
34460 _In_opt_ ID3D12Resource *shadingRateImage);
34461
34462 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
34463 void ( STDMETHODCALLTYPE *DispatchMesh )(
34464 ID3D12GraphicsCommandList8 * This,
34465 _In_ UINT ThreadGroupCountX,
34466 _In_ UINT ThreadGroupCountY,
34467 _In_ UINT ThreadGroupCountZ);
34468
34469 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
34470 void ( STDMETHODCALLTYPE *Barrier )(
34471 ID3D12GraphicsCommandList8 * This,
34472 UINT32 NumBarrierGroups,
34473 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
34474
34475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
34476 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
34477 ID3D12GraphicsCommandList8 * This,
34478 _In_ UINT FrontStencilRef,
34479 _In_ UINT BackStencilRef);
34480
34481 END_INTERFACE
34482 } ID3D12GraphicsCommandList8Vtbl;
34483
34484 interface ID3D12GraphicsCommandList8
34485 {
34486 CONST_VTBL struct ID3D12GraphicsCommandList8Vtbl *lpVtbl;
34487 };
34488
34489
34490
34491#ifdef COBJMACROS
34492
34493
34494#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject) \
34495 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
34496
34497#define ID3D12GraphicsCommandList8_AddRef(This) \
34498 ( (This)->lpVtbl -> AddRef(This) )
34499
34500#define ID3D12GraphicsCommandList8_Release(This) \
34501 ( (This)->lpVtbl -> Release(This) )
34502
34503
34504#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData) \
34505 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
34506
34507#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData) \
34508 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
34509
34510#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData) \
34511 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
34512
34513#define ID3D12GraphicsCommandList8_SetName(This,Name) \
34514 ( (This)->lpVtbl -> SetName(This,Name) )
34515
34516
34517#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice) \
34518 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
34519
34520
34521#define ID3D12GraphicsCommandList8_GetType(This) \
34522 ( (This)->lpVtbl -> GetType(This) )
34523
34524
34525#define ID3D12GraphicsCommandList8_Close(This) \
34526 ( (This)->lpVtbl -> Close(This) )
34527
34528#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState) \
34529 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
34530
34531#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState) \
34532 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
34533
34534#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
34535 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
34536
34537#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
34538 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
34539
34540#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34541 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34542
34543#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
34544 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
34545
34546#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
34547 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
34548
34549#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource) \
34550 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
34551
34552#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
34553 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
34554
34555#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
34556 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
34557
34558#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology) \
34559 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
34560
34561#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports) \
34562 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
34563
34564#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects) \
34565 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
34566
34567#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor) \
34568 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
34569
34570#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef) \
34571 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
34572
34573#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState) \
34574 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
34575
34576#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers) \
34577 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
34578
34579#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList) \
34580 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
34581
34582#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
34583 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
34584
34585#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature) \
34586 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
34587
34588#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature) \
34589 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
34590
34591#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34592 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34593
34594#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34595 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34596
34597#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34598 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34599
34600#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34601 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34602
34603#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34604 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34605
34606#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34607 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34608
34609#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34610 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34611
34612#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34613 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34614
34615#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34616 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34617
34618#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34619 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34620
34621#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34622 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34623
34624#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34625 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34626
34627#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView) \
34628 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
34629
34630#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
34631 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
34632
34633#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews) \
34634 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
34635
34636#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
34637 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
34638
34639#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
34640 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
34641
34642#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
34643 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
34644
34645#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34646 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34647
34648#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34649 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34650
34651#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion) \
34652 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
34653
34654#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index) \
34655 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
34656
34657#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index) \
34658 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
34659
34660#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
34661 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
34662
34663#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
34664 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
34665
34666#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size) \
34667 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
34668
34669#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size) \
34670 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
34671
34672#define ID3D12GraphicsCommandList8_EndEvent(This) \
34673 ( (This)->lpVtbl -> EndEvent(This) )
34674
34675#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
34676 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
34677
34678
34679#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34680 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34681
34682#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34683 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34684
34685#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max) \
34686 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
34687
34688#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
34689 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
34690
34691#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
34692 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
34693
34694#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask) \
34695 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
34696
34697
34698#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes) \
34699 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
34700
34701
34702#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession) \
34703 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
34704
34705
34706#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
34707 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
34708
34709#define ID3D12GraphicsCommandList8_EndRenderPass(This) \
34710 ( (This)->lpVtbl -> EndRenderPass(This) )
34711
34712#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
34713 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
34714
34715#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
34716 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
34717
34718#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
34719 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
34720
34721#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
34722 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
34723
34724#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
34725 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
34726
34727#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject) \
34728 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
34729
34730#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc) \
34731 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
34732
34733
34734#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners) \
34735 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
34736
34737#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage) \
34738 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
34739
34740
34741#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34742 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34743
34744
34745#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups) \
34746 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
34747
34748
34749#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
34750 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
34751
34752#endif /* COBJMACROS */
34753
34754
34755#endif /* C style interface */
34756
34757
34758
34759
34760#endif /* __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__ */
34761
34762
34763#ifndef __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34764#define __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34765
34766/* interface ID3D12GraphicsCommandList9 */
34767/* [unique][local][object][uuid] */
34768
34769
34770EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
34771
34772#if defined(__cplusplus) && !defined(CINTERFACE)
34773
34774 MIDL_INTERFACE("34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1")
34775 ID3D12GraphicsCommandList9 : public ID3D12GraphicsCommandList8
34776 {
34777 public:
34778 virtual void STDMETHODCALLTYPE RSSetDepthBias(
34779 _In_ FLOAT DepthBias,
34780 _In_ FLOAT DepthBiasClamp,
34781 _In_ FLOAT SlopeScaledDepthBias) = 0;
34782
34783 virtual void STDMETHODCALLTYPE IASetIndexBufferStripCutValue(
34784 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) = 0;
34785
34786 };
34787
34788
34789#else /* C style interface */
34790
34791 typedef struct ID3D12GraphicsCommandList9Vtbl
34792 {
34793 BEGIN_INTERFACE
34794
34795 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
34796 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
34797 ID3D12GraphicsCommandList9 * This,
34798 REFIID riid,
34799 _COM_Outptr_ void **ppvObject);
34800
34801 DECLSPEC_XFGVIRT(IUnknown, AddRef)
34802 ULONG ( STDMETHODCALLTYPE *AddRef )(
34803 ID3D12GraphicsCommandList9 * This);
34804
34805 DECLSPEC_XFGVIRT(IUnknown, Release)
34806 ULONG ( STDMETHODCALLTYPE *Release )(
34807 ID3D12GraphicsCommandList9 * This);
34808
34809 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
34810 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
34811 ID3D12GraphicsCommandList9 * This,
34812 _In_ REFGUID guid,
34813 _Inout_ UINT *pDataSize,
34814 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
34815
34816 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
34817 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
34818 ID3D12GraphicsCommandList9 * This,
34819 _In_ REFGUID guid,
34820 _In_ UINT DataSize,
34821 _In_reads_bytes_opt_( DataSize ) const void *pData);
34822
34823 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
34824 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
34825 ID3D12GraphicsCommandList9 * This,
34826 _In_ REFGUID guid,
34827 _In_opt_ const IUnknown *pData);
34828
34829 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
34830 HRESULT ( STDMETHODCALLTYPE *SetName )(
34831 ID3D12GraphicsCommandList9 * This,
34832 _In_z_ LPCWSTR Name);
34833
34834 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
34835 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
34836 ID3D12GraphicsCommandList9 * This,
34837 REFIID riid,
34838 _COM_Outptr_opt_ void **ppvDevice);
34839
34840 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
34841 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
34842 ID3D12GraphicsCommandList9 * This);
34843
34844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
34845 HRESULT ( STDMETHODCALLTYPE *Close )(
34846 ID3D12GraphicsCommandList9 * This);
34847
34848 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
34849 HRESULT ( STDMETHODCALLTYPE *Reset )(
34850 ID3D12GraphicsCommandList9 * This,
34851 _In_ ID3D12CommandAllocator *pAllocator,
34852 _In_opt_ ID3D12PipelineState *pInitialState);
34853
34854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
34855 void ( STDMETHODCALLTYPE *ClearState )(
34856 ID3D12GraphicsCommandList9 * This,
34857 _In_opt_ ID3D12PipelineState *pPipelineState);
34858
34859 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
34860 void ( STDMETHODCALLTYPE *DrawInstanced )(
34861 ID3D12GraphicsCommandList9 * This,
34862 _In_ UINT VertexCountPerInstance,
34863 _In_ UINT InstanceCount,
34864 _In_ UINT StartVertexLocation,
34865 _In_ UINT StartInstanceLocation);
34866
34867 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34868 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34869 ID3D12GraphicsCommandList9 * This,
34870 _In_ UINT IndexCountPerInstance,
34871 _In_ UINT InstanceCount,
34872 _In_ UINT StartIndexLocation,
34873 _In_ INT BaseVertexLocation,
34874 _In_ UINT StartInstanceLocation);
34875
34876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34877 void ( STDMETHODCALLTYPE *Dispatch )(
34878 ID3D12GraphicsCommandList9 * This,
34879 _In_ UINT ThreadGroupCountX,
34880 _In_ UINT ThreadGroupCountY,
34881 _In_ UINT ThreadGroupCountZ);
34882
34883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34884 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34885 ID3D12GraphicsCommandList9 * This,
34886 _In_ ID3D12Resource *pDstBuffer,
34887 UINT64 DstOffset,
34888 _In_ ID3D12Resource *pSrcBuffer,
34889 UINT64 SrcOffset,
34890 UINT64 NumBytes);
34891
34892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34893 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34894 ID3D12GraphicsCommandList9 * This,
34895 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34896 UINT DstX,
34897 UINT DstY,
34898 UINT DstZ,
34899 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34900 _In_opt_ const D3D12_BOX *pSrcBox);
34901
34902 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34903 void ( STDMETHODCALLTYPE *CopyResource )(
34904 ID3D12GraphicsCommandList9 * This,
34905 _In_ ID3D12Resource *pDstResource,
34906 _In_ ID3D12Resource *pSrcResource);
34907
34908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34909 void ( STDMETHODCALLTYPE *CopyTiles )(
34910 ID3D12GraphicsCommandList9 * This,
34911 _In_ ID3D12Resource *pTiledResource,
34912 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34913 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34914 _In_ ID3D12Resource *pBuffer,
34915 UINT64 BufferStartOffsetInBytes,
34916 D3D12_TILE_COPY_FLAGS Flags);
34917
34918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34919 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34920 ID3D12GraphicsCommandList9 * This,
34921 _In_ ID3D12Resource *pDstResource,
34922 _In_ UINT DstSubresource,
34923 _In_ ID3D12Resource *pSrcResource,
34924 _In_ UINT SrcSubresource,
34925 _In_ DXGI_FORMAT Format);
34926
34927 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34928 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34929 ID3D12GraphicsCommandList9 * This,
34930 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34931
34932 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34933 void ( STDMETHODCALLTYPE *RSSetViewports )(
34934 ID3D12GraphicsCommandList9 * This,
34935 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34936 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34937
34938 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34939 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34940 ID3D12GraphicsCommandList9 * This,
34941 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34942 _In_reads_( NumRects) const D3D12_RECT *pRects);
34943
34944 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34945 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34946 ID3D12GraphicsCommandList9 * This,
34947 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34948
34949 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34950 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34951 ID3D12GraphicsCommandList9 * This,
34952 _In_ UINT StencilRef);
34953
34954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34955 void ( STDMETHODCALLTYPE *SetPipelineState )(
34956 ID3D12GraphicsCommandList9 * This,
34957 _In_ ID3D12PipelineState *pPipelineState);
34958
34959 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34960 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34961 ID3D12GraphicsCommandList9 * This,
34962 _In_ UINT NumBarriers,
34963 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34964
34965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34966 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34967 ID3D12GraphicsCommandList9 * This,
34968 _In_ ID3D12GraphicsCommandList *pCommandList);
34969
34970 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34971 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34972 ID3D12GraphicsCommandList9 * This,
34973 _In_ UINT NumDescriptorHeaps,
34974 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34975
34976 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34977 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34978 ID3D12GraphicsCommandList9 * This,
34979 _In_opt_ ID3D12RootSignature *pRootSignature);
34980
34981 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34982 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34983 ID3D12GraphicsCommandList9 * This,
34984 _In_opt_ ID3D12RootSignature *pRootSignature);
34985
34986 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34987 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34988 ID3D12GraphicsCommandList9 * This,
34989 _In_ UINT RootParameterIndex,
34990 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34991
34992 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34993 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34994 ID3D12GraphicsCommandList9 * This,
34995 _In_ UINT RootParameterIndex,
34996 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34997
34998 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34999 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35000 ID3D12GraphicsCommandList9 * This,
35001 _In_ UINT RootParameterIndex,
35002 _In_ UINT SrcData,
35003 _In_ UINT DestOffsetIn32BitValues);
35004
35005 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35006 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35007 ID3D12GraphicsCommandList9 * This,
35008 _In_ UINT RootParameterIndex,
35009 _In_ UINT SrcData,
35010 _In_ UINT DestOffsetIn32BitValues);
35011
35012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35013 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35014 ID3D12GraphicsCommandList9 * This,
35015 _In_ UINT RootParameterIndex,
35016 _In_ UINT Num32BitValuesToSet,
35017 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35018 _In_ UINT DestOffsetIn32BitValues);
35019
35020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35021 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35022 ID3D12GraphicsCommandList9 * This,
35023 _In_ UINT RootParameterIndex,
35024 _In_ UINT Num32BitValuesToSet,
35025 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35026 _In_ UINT DestOffsetIn32BitValues);
35027
35028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35029 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35030 ID3D12GraphicsCommandList9 * This,
35031 _In_ UINT RootParameterIndex,
35032 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35033
35034 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35035 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35036 ID3D12GraphicsCommandList9 * This,
35037 _In_ UINT RootParameterIndex,
35038 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35039
35040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35041 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35042 ID3D12GraphicsCommandList9 * This,
35043 _In_ UINT RootParameterIndex,
35044 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35045
35046 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35047 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35048 ID3D12GraphicsCommandList9 * This,
35049 _In_ UINT RootParameterIndex,
35050 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35051
35052 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35053 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35054 ID3D12GraphicsCommandList9 * This,
35055 _In_ UINT RootParameterIndex,
35056 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35057
35058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35059 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35060 ID3D12GraphicsCommandList9 * This,
35061 _In_ UINT RootParameterIndex,
35062 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35063
35064 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35065 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35066 ID3D12GraphicsCommandList9 * This,
35067 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35068
35069 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35070 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35071 ID3D12GraphicsCommandList9 * This,
35072 _In_ UINT StartSlot,
35073 _In_ UINT NumViews,
35074 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35075
35076 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35077 void ( STDMETHODCALLTYPE *SOSetTargets )(
35078 ID3D12GraphicsCommandList9 * This,
35079 _In_ UINT StartSlot,
35080 _In_ UINT NumViews,
35081 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35082
35083 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35084 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35085 ID3D12GraphicsCommandList9 * This,
35086 _In_ UINT NumRenderTargetDescriptors,
35087 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35088 _In_ BOOL RTsSingleHandleToDescriptorRange,
35089 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35090
35091 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35092 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35093 ID3D12GraphicsCommandList9 * This,
35094 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35095 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35096 _In_ FLOAT Depth,
35097 _In_ UINT8 Stencil,
35098 _In_ UINT NumRects,
35099 _In_reads_(NumRects) const D3D12_RECT *pRects);
35100
35101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35102 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35103 ID3D12GraphicsCommandList9 * This,
35104 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35105 _In_ const FLOAT ColorRGBA[ 4 ],
35106 _In_ UINT NumRects,
35107 _In_reads_(NumRects) const D3D12_RECT *pRects);
35108
35109 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35110 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35111 ID3D12GraphicsCommandList9 * This,
35112 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35113 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35114 _In_ ID3D12Resource *pResource,
35115 _In_ const UINT Values[ 4 ],
35116 _In_ UINT NumRects,
35117 _In_reads_(NumRects) const D3D12_RECT *pRects);
35118
35119 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35120 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35121 ID3D12GraphicsCommandList9 * This,
35122 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35123 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35124 _In_ ID3D12Resource *pResource,
35125 _In_ const FLOAT Values[ 4 ],
35126 _In_ UINT NumRects,
35127 _In_reads_(NumRects) const D3D12_RECT *pRects);
35128
35129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
35130 void ( STDMETHODCALLTYPE *DiscardResource )(
35131 ID3D12GraphicsCommandList9 * This,
35132 _In_ ID3D12Resource *pResource,
35133 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
35134
35135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
35136 void ( STDMETHODCALLTYPE *BeginQuery )(
35137 ID3D12GraphicsCommandList9 * This,
35138 _In_ ID3D12QueryHeap *pQueryHeap,
35139 _In_ D3D12_QUERY_TYPE Type,
35140 _In_ UINT Index);
35141
35142 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
35143 void ( STDMETHODCALLTYPE *EndQuery )(
35144 ID3D12GraphicsCommandList9 * This,
35145 _In_ ID3D12QueryHeap *pQueryHeap,
35146 _In_ D3D12_QUERY_TYPE Type,
35147 _In_ UINT Index);
35148
35149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
35150 void ( STDMETHODCALLTYPE *ResolveQueryData )(
35151 ID3D12GraphicsCommandList9 * This,
35152 _In_ ID3D12QueryHeap *pQueryHeap,
35153 _In_ D3D12_QUERY_TYPE Type,
35154 _In_ UINT StartIndex,
35155 _In_ UINT NumQueries,
35156 _In_ ID3D12Resource *pDestinationBuffer,
35157 _In_ UINT64 AlignedDestinationBufferOffset);
35158
35159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
35160 void ( STDMETHODCALLTYPE *SetPredication )(
35161 ID3D12GraphicsCommandList9 * This,
35162 _In_opt_ ID3D12Resource *pBuffer,
35163 _In_ UINT64 AlignedBufferOffset,
35164 _In_ D3D12_PREDICATION_OP Operation);
35165
35166 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
35167 void ( STDMETHODCALLTYPE *SetMarker )(
35168 ID3D12GraphicsCommandList9 * This,
35169 UINT Metadata,
35170 _In_reads_bytes_opt_(Size) const void *pData,
35171 UINT Size);
35172
35173 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
35174 void ( STDMETHODCALLTYPE *BeginEvent )(
35175 ID3D12GraphicsCommandList9 * This,
35176 UINT Metadata,
35177 _In_reads_bytes_opt_(Size) const void *pData,
35178 UINT Size);
35179
35180 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
35181 void ( STDMETHODCALLTYPE *EndEvent )(
35182 ID3D12GraphicsCommandList9 * This);
35183
35184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
35185 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
35186 ID3D12GraphicsCommandList9 * This,
35187 _In_ ID3D12CommandSignature *pCommandSignature,
35188 _In_ UINT MaxCommandCount,
35189 _In_ ID3D12Resource *pArgumentBuffer,
35190 _In_ UINT64 ArgumentBufferOffset,
35191 _In_opt_ ID3D12Resource *pCountBuffer,
35192 _In_ UINT64 CountBufferOffset);
35193
35194 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
35195 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
35196 ID3D12GraphicsCommandList9 * This,
35197 _In_ ID3D12Resource *pDstBuffer,
35198 UINT64 DstOffset,
35199 _In_ ID3D12Resource *pSrcBuffer,
35200 UINT64 SrcOffset,
35201 UINT Dependencies,
35202 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35203 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35204
35205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
35206 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
35207 ID3D12GraphicsCommandList9 * This,
35208 _In_ ID3D12Resource *pDstBuffer,
35209 UINT64 DstOffset,
35210 _In_ ID3D12Resource *pSrcBuffer,
35211 UINT64 SrcOffset,
35212 UINT Dependencies,
35213 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35214 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35215
35216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
35217 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
35218 ID3D12GraphicsCommandList9 * This,
35219 _In_ FLOAT Min,
35220 _In_ FLOAT Max);
35221
35222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
35223 void ( STDMETHODCALLTYPE *SetSamplePositions )(
35224 ID3D12GraphicsCommandList9 * This,
35225 _In_ UINT NumSamplesPerPixel,
35226 _In_ UINT NumPixels,
35227 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
35228
35229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
35230 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
35231 ID3D12GraphicsCommandList9 * This,
35232 _In_ ID3D12Resource *pDstResource,
35233 _In_ UINT DstSubresource,
35234 _In_ UINT DstX,
35235 _In_ UINT DstY,
35236 _In_ ID3D12Resource *pSrcResource,
35237 _In_ UINT SrcSubresource,
35238 _In_opt_ D3D12_RECT *pSrcRect,
35239 _In_ DXGI_FORMAT Format,
35240 _In_ D3D12_RESOLVE_MODE ResolveMode);
35241
35242 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
35243 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
35244 ID3D12GraphicsCommandList9 * This,
35245 _In_ UINT Mask);
35246
35247 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
35248 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
35249 ID3D12GraphicsCommandList9 * This,
35250 UINT Count,
35251 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
35252 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
35253
35254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
35255 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
35256 ID3D12GraphicsCommandList9 * This,
35257 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
35258
35259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
35260 void ( STDMETHODCALLTYPE *BeginRenderPass )(
35261 ID3D12GraphicsCommandList9 * This,
35262 _In_ UINT NumRenderTargets,
35263 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
35264 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
35265 D3D12_RENDER_PASS_FLAGS Flags);
35266
35267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
35268 void ( STDMETHODCALLTYPE *EndRenderPass )(
35269 ID3D12GraphicsCommandList9 * This);
35270
35271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
35272 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
35273 ID3D12GraphicsCommandList9 * This,
35274 _In_ ID3D12MetaCommand *pMetaCommand,
35275 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
35276 _In_ SIZE_T InitializationParametersDataSizeInBytes);
35277
35278 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
35279 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
35280 ID3D12GraphicsCommandList9 * This,
35281 _In_ ID3D12MetaCommand *pMetaCommand,
35282 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
35283 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
35284
35285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
35286 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
35287 ID3D12GraphicsCommandList9 * This,
35288 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
35289 _In_ UINT NumPostbuildInfoDescs,
35290 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
35291
35292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
35293 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
35294 ID3D12GraphicsCommandList9 * This,
35295 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
35296 _In_ UINT NumSourceAccelerationStructures,
35297 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
35298
35299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
35300 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
35301 ID3D12GraphicsCommandList9 * This,
35302 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
35303 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
35304 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
35305
35306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
35307 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
35308 ID3D12GraphicsCommandList9 * This,
35309 _In_ ID3D12StateObject *pStateObject);
35310
35311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
35312 void ( STDMETHODCALLTYPE *DispatchRays )(
35313 ID3D12GraphicsCommandList9 * This,
35314 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
35315
35316 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
35317 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
35318 ID3D12GraphicsCommandList9 * This,
35319 _In_ D3D12_SHADING_RATE baseShadingRate,
35320 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
35321
35322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
35323 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
35324 ID3D12GraphicsCommandList9 * This,
35325 _In_opt_ ID3D12Resource *shadingRateImage);
35326
35327 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
35328 void ( STDMETHODCALLTYPE *DispatchMesh )(
35329 ID3D12GraphicsCommandList9 * This,
35330 _In_ UINT ThreadGroupCountX,
35331 _In_ UINT ThreadGroupCountY,
35332 _In_ UINT ThreadGroupCountZ);
35333
35334 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
35335 void ( STDMETHODCALLTYPE *Barrier )(
35336 ID3D12GraphicsCommandList9 * This,
35337 UINT32 NumBarrierGroups,
35338 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
35339
35340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
35341 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
35342 ID3D12GraphicsCommandList9 * This,
35343 _In_ UINT FrontStencilRef,
35344 _In_ UINT BackStencilRef);
35345
35346 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
35347 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
35348 ID3D12GraphicsCommandList9 * This,
35349 _In_ FLOAT DepthBias,
35350 _In_ FLOAT DepthBiasClamp,
35351 _In_ FLOAT SlopeScaledDepthBias);
35352
35353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
35354 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
35355 ID3D12GraphicsCommandList9 * This,
35356 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
35357
35358 END_INTERFACE
35359 } ID3D12GraphicsCommandList9Vtbl;
35360
35361 interface ID3D12GraphicsCommandList9
35362 {
35363 CONST_VTBL struct ID3D12GraphicsCommandList9Vtbl *lpVtbl;
35364 };
35365
35366
35367
35368#ifdef COBJMACROS
35369
35370
35371#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject) \
35372 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
35373
35374#define ID3D12GraphicsCommandList9_AddRef(This) \
35375 ( (This)->lpVtbl -> AddRef(This) )
35376
35377#define ID3D12GraphicsCommandList9_Release(This) \
35378 ( (This)->lpVtbl -> Release(This) )
35379
35380
35381#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData) \
35382 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
35383
35384#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData) \
35385 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
35386
35387#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData) \
35388 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
35389
35390#define ID3D12GraphicsCommandList9_SetName(This,Name) \
35391 ( (This)->lpVtbl -> SetName(This,Name) )
35392
35393
35394#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice) \
35395 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
35396
35397
35398#define ID3D12GraphicsCommandList9_GetType(This) \
35399 ( (This)->lpVtbl -> GetType(This) )
35400
35401
35402#define ID3D12GraphicsCommandList9_Close(This) \
35403 ( (This)->lpVtbl -> Close(This) )
35404
35405#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState) \
35406 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
35407
35408#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState) \
35409 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
35410
35411#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
35412 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
35413
35414#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
35415 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
35416
35417#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35418 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35419
35420#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
35421 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
35422
35423#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
35424 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
35425
35426#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource) \
35427 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
35428
35429#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
35430 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
35431
35432#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
35433 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
35434
35435#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology) \
35436 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
35437
35438#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports) \
35439 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
35440
35441#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects) \
35442 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
35443
35444#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor) \
35445 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
35446
35447#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef) \
35448 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
35449
35450#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState) \
35451 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
35452
35453#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers) \
35454 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
35455
35456#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList) \
35457 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
35458
35459#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
35460 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
35461
35462#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature) \
35463 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
35464
35465#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature) \
35466 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
35467
35468#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35469 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35470
35471#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35472 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35473
35474#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35475 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35476
35477#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35478 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35479
35480#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35481 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35482
35483#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35484 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35485
35486#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35487 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35488
35489#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35490 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35491
35492#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35493 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35494
35495#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35496 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35497
35498#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35499 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35500
35501#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35502 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35503
35504#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView) \
35505 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
35506
35507#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
35508 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
35509
35510#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews) \
35511 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
35512
35513#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
35514 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
35515
35516#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
35517 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
35518
35519#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
35520 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
35521
35522#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35523 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35524
35525#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35526 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35527
35528#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion) \
35529 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
35530
35531#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index) \
35532 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
35533
35534#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index) \
35535 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
35536
35537#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
35538 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
35539
35540#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
35541 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
35542
35543#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size) \
35544 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
35545
35546#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size) \
35547 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
35548
35549#define ID3D12GraphicsCommandList9_EndEvent(This) \
35550 ( (This)->lpVtbl -> EndEvent(This) )
35551
35552#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
35553 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
35554
35555
35556#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35557 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35558
35559#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35560 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35561
35562#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max) \
35563 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
35564
35565#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
35566 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
35567
35568#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
35569 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
35570
35571#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask) \
35572 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
35573
35574
35575#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes) \
35576 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
35577
35578
35579#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession) \
35580 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
35581
35582
35583#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
35584 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
35585
35586#define ID3D12GraphicsCommandList9_EndRenderPass(This) \
35587 ( (This)->lpVtbl -> EndRenderPass(This) )
35588
35589#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
35590 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
35591
35592#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
35593 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
35594
35595#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
35596 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
35597
35598#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
35599 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
35600
35601#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
35602 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
35603
35604#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject) \
35605 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
35606
35607#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc) \
35608 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
35609
35610
35611#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners) \
35612 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
35613
35614#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage) \
35615 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
35616
35617
35618#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35619 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35620
35621
35622#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups) \
35623 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
35624
35625
35626#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
35627 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
35628
35629
35630#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
35631 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
35632
35633#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
35634 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
35635
35636#endif /* COBJMACROS */
35637
35638
35639#endif /* C style interface */
35640
35641
35642
35643
35644#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
35645
35646
35647#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35648#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35649
35650/* interface ID3D12GraphicsCommandList10 */
35651/* [unique][local][object][uuid] */
35652
35653
35654EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
35655
35656#if defined(__cplusplus) && !defined(CINTERFACE)
35657
35658 MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
35659 ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
35660 {
35661 public:
35662 virtual void STDMETHODCALLTYPE SetProgram(
35663 _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
35664
35665 virtual void STDMETHODCALLTYPE DispatchGraph(
35666 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
35667
35668 };
35669
35670
35671#else /* C style interface */
35672
35673 typedef struct ID3D12GraphicsCommandList10Vtbl
35674 {
35675 BEGIN_INTERFACE
35676
35677 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
35678 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
35679 ID3D12GraphicsCommandList10 * This,
35680 REFIID riid,
35681 _COM_Outptr_ void **ppvObject);
35682
35683 DECLSPEC_XFGVIRT(IUnknown, AddRef)
35684 ULONG ( STDMETHODCALLTYPE *AddRef )(
35685 ID3D12GraphicsCommandList10 * This);
35686
35687 DECLSPEC_XFGVIRT(IUnknown, Release)
35688 ULONG ( STDMETHODCALLTYPE *Release )(
35689 ID3D12GraphicsCommandList10 * This);
35690
35691 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
35692 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
35693 ID3D12GraphicsCommandList10 * This,
35694 _In_ REFGUID guid,
35695 _Inout_ UINT *pDataSize,
35696 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
35697
35698 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
35699 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
35700 ID3D12GraphicsCommandList10 * This,
35701 _In_ REFGUID guid,
35702 _In_ UINT DataSize,
35703 _In_reads_bytes_opt_( DataSize ) const void *pData);
35704
35705 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
35706 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
35707 ID3D12GraphicsCommandList10 * This,
35708 _In_ REFGUID guid,
35709 _In_opt_ const IUnknown *pData);
35710
35711 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
35712 HRESULT ( STDMETHODCALLTYPE *SetName )(
35713 ID3D12GraphicsCommandList10 * This,
35714 _In_z_ LPCWSTR Name);
35715
35716 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
35717 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
35718 ID3D12GraphicsCommandList10 * This,
35719 REFIID riid,
35720 _COM_Outptr_opt_ void **ppvDevice);
35721
35722 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
35723 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
35724 ID3D12GraphicsCommandList10 * This);
35725
35726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
35727 HRESULT ( STDMETHODCALLTYPE *Close )(
35728 ID3D12GraphicsCommandList10 * This);
35729
35730 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
35731 HRESULT ( STDMETHODCALLTYPE *Reset )(
35732 ID3D12GraphicsCommandList10 * This,
35733 _In_ ID3D12CommandAllocator *pAllocator,
35734 _In_opt_ ID3D12PipelineState *pInitialState);
35735
35736 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
35737 void ( STDMETHODCALLTYPE *ClearState )(
35738 ID3D12GraphicsCommandList10 * This,
35739 _In_opt_ ID3D12PipelineState *pPipelineState);
35740
35741 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
35742 void ( STDMETHODCALLTYPE *DrawInstanced )(
35743 ID3D12GraphicsCommandList10 * This,
35744 _In_ UINT VertexCountPerInstance,
35745 _In_ UINT InstanceCount,
35746 _In_ UINT StartVertexLocation,
35747 _In_ UINT StartInstanceLocation);
35748
35749 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
35750 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
35751 ID3D12GraphicsCommandList10 * This,
35752 _In_ UINT IndexCountPerInstance,
35753 _In_ UINT InstanceCount,
35754 _In_ UINT StartIndexLocation,
35755 _In_ INT BaseVertexLocation,
35756 _In_ UINT StartInstanceLocation);
35757
35758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
35759 void ( STDMETHODCALLTYPE *Dispatch )(
35760 ID3D12GraphicsCommandList10 * This,
35761 _In_ UINT ThreadGroupCountX,
35762 _In_ UINT ThreadGroupCountY,
35763 _In_ UINT ThreadGroupCountZ);
35764
35765 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
35766 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
35767 ID3D12GraphicsCommandList10 * This,
35768 _In_ ID3D12Resource *pDstBuffer,
35769 UINT64 DstOffset,
35770 _In_ ID3D12Resource *pSrcBuffer,
35771 UINT64 SrcOffset,
35772 UINT64 NumBytes);
35773
35774 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
35775 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
35776 ID3D12GraphicsCommandList10 * This,
35777 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
35778 UINT DstX,
35779 UINT DstY,
35780 UINT DstZ,
35781 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
35782 _In_opt_ const D3D12_BOX *pSrcBox);
35783
35784 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
35785 void ( STDMETHODCALLTYPE *CopyResource )(
35786 ID3D12GraphicsCommandList10 * This,
35787 _In_ ID3D12Resource *pDstResource,
35788 _In_ ID3D12Resource *pSrcResource);
35789
35790 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
35791 void ( STDMETHODCALLTYPE *CopyTiles )(
35792 ID3D12GraphicsCommandList10 * This,
35793 _In_ ID3D12Resource *pTiledResource,
35794 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
35795 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
35796 _In_ ID3D12Resource *pBuffer,
35797 UINT64 BufferStartOffsetInBytes,
35798 D3D12_TILE_COPY_FLAGS Flags);
35799
35800 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
35801 void ( STDMETHODCALLTYPE *ResolveSubresource )(
35802 ID3D12GraphicsCommandList10 * This,
35803 _In_ ID3D12Resource *pDstResource,
35804 _In_ UINT DstSubresource,
35805 _In_ ID3D12Resource *pSrcResource,
35806 _In_ UINT SrcSubresource,
35807 _In_ DXGI_FORMAT Format);
35808
35809 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
35810 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
35811 ID3D12GraphicsCommandList10 * This,
35812 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
35813
35814 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
35815 void ( STDMETHODCALLTYPE *RSSetViewports )(
35816 ID3D12GraphicsCommandList10 * This,
35817 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
35818 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
35819
35820 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
35821 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
35822 ID3D12GraphicsCommandList10 * This,
35823 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
35824 _In_reads_( NumRects) const D3D12_RECT *pRects);
35825
35826 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
35827 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
35828 ID3D12GraphicsCommandList10 * This,
35829 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
35830
35831 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
35832 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
35833 ID3D12GraphicsCommandList10 * This,
35834 _In_ UINT StencilRef);
35835
35836 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
35837 void ( STDMETHODCALLTYPE *SetPipelineState )(
35838 ID3D12GraphicsCommandList10 * This,
35839 _In_ ID3D12PipelineState *pPipelineState);
35840
35841 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
35842 void ( STDMETHODCALLTYPE *ResourceBarrier )(
35843 ID3D12GraphicsCommandList10 * This,
35844 _In_ UINT NumBarriers,
35845 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
35846
35847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
35848 void ( STDMETHODCALLTYPE *ExecuteBundle )(
35849 ID3D12GraphicsCommandList10 * This,
35850 _In_ ID3D12GraphicsCommandList *pCommandList);
35851
35852 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
35853 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
35854 ID3D12GraphicsCommandList10 * This,
35855 _In_ UINT NumDescriptorHeaps,
35856 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
35857
35858 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
35859 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
35860 ID3D12GraphicsCommandList10 * This,
35861 _In_opt_ ID3D12RootSignature *pRootSignature);
35862
35863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
35864 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
35865 ID3D12GraphicsCommandList10 * This,
35866 _In_opt_ ID3D12RootSignature *pRootSignature);
35867
35868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
35869 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
35870 ID3D12GraphicsCommandList10 * This,
35871 _In_ UINT RootParameterIndex,
35872 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35873
35874 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
35875 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
35876 ID3D12GraphicsCommandList10 * This,
35877 _In_ UINT RootParameterIndex,
35878 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35879
35880 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
35881 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35882 ID3D12GraphicsCommandList10 * This,
35883 _In_ UINT RootParameterIndex,
35884 _In_ UINT SrcData,
35885 _In_ UINT DestOffsetIn32BitValues);
35886
35887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35888 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35889 ID3D12GraphicsCommandList10 * This,
35890 _In_ UINT RootParameterIndex,
35891 _In_ UINT SrcData,
35892 _In_ UINT DestOffsetIn32BitValues);
35893
35894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35895 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35896 ID3D12GraphicsCommandList10 * This,
35897 _In_ UINT RootParameterIndex,
35898 _In_ UINT Num32BitValuesToSet,
35899 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35900 _In_ UINT DestOffsetIn32BitValues);
35901
35902 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35903 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35904 ID3D12GraphicsCommandList10 * This,
35905 _In_ UINT RootParameterIndex,
35906 _In_ UINT Num32BitValuesToSet,
35907 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35908 _In_ UINT DestOffsetIn32BitValues);
35909
35910 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35911 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35912 ID3D12GraphicsCommandList10 * This,
35913 _In_ UINT RootParameterIndex,
35914 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35915
35916 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35917 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35918 ID3D12GraphicsCommandList10 * This,
35919 _In_ UINT RootParameterIndex,
35920 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35921
35922 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35923 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35924 ID3D12GraphicsCommandList10 * This,
35925 _In_ UINT RootParameterIndex,
35926 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35927
35928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35929 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35930 ID3D12GraphicsCommandList10 * This,
35931 _In_ UINT RootParameterIndex,
35932 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35933
35934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35935 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35936 ID3D12GraphicsCommandList10 * This,
35937 _In_ UINT RootParameterIndex,
35938 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35939
35940 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35941 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35942 ID3D12GraphicsCommandList10 * This,
35943 _In_ UINT RootParameterIndex,
35944 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35945
35946 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35947 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35948 ID3D12GraphicsCommandList10 * This,
35949 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35950
35951 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35952 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35953 ID3D12GraphicsCommandList10 * This,
35954 _In_ UINT StartSlot,
35955 _In_ UINT NumViews,
35956 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35957
35958 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35959 void ( STDMETHODCALLTYPE *SOSetTargets )(
35960 ID3D12GraphicsCommandList10 * This,
35961 _In_ UINT StartSlot,
35962 _In_ UINT NumViews,
35963 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35964
35965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35966 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35967 ID3D12GraphicsCommandList10 * This,
35968 _In_ UINT NumRenderTargetDescriptors,
35969 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35970 _In_ BOOL RTsSingleHandleToDescriptorRange,
35971 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35972
35973 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35974 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35975 ID3D12GraphicsCommandList10 * This,
35976 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35977 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35978 _In_ FLOAT Depth,
35979 _In_ UINT8 Stencil,
35980 _In_ UINT NumRects,
35981 _In_reads_(NumRects) const D3D12_RECT *pRects);
35982
35983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35984 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35985 ID3D12GraphicsCommandList10 * This,
35986 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35987 _In_ const FLOAT ColorRGBA[ 4 ],
35988 _In_ UINT NumRects,
35989 _In_reads_(NumRects) const D3D12_RECT *pRects);
35990
35991 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35992 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35993 ID3D12GraphicsCommandList10 * This,
35994 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35995 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35996 _In_ ID3D12Resource *pResource,
35997 _In_ const UINT Values[ 4 ],
35998 _In_ UINT NumRects,
35999 _In_reads_(NumRects) const D3D12_RECT *pRects);
36000
36001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
36002 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
36003 ID3D12GraphicsCommandList10 * This,
36004 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
36005 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
36006 _In_ ID3D12Resource *pResource,
36007 _In_ const FLOAT Values[ 4 ],
36008 _In_ UINT NumRects,
36009 _In_reads_(NumRects) const D3D12_RECT *pRects);
36010
36011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
36012 void ( STDMETHODCALLTYPE *DiscardResource )(
36013 ID3D12GraphicsCommandList10 * This,
36014 _In_ ID3D12Resource *pResource,
36015 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
36016
36017 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
36018 void ( STDMETHODCALLTYPE *BeginQuery )(
36019 ID3D12GraphicsCommandList10 * This,
36020 _In_ ID3D12QueryHeap *pQueryHeap,
36021 _In_ D3D12_QUERY_TYPE Type,
36022 _In_ UINT Index);
36023
36024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
36025 void ( STDMETHODCALLTYPE *EndQuery )(
36026 ID3D12GraphicsCommandList10 * This,
36027 _In_ ID3D12QueryHeap *pQueryHeap,
36028 _In_ D3D12_QUERY_TYPE Type,
36029 _In_ UINT Index);
36030
36031 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
36032 void ( STDMETHODCALLTYPE *ResolveQueryData )(
36033 ID3D12GraphicsCommandList10 * This,
36034 _In_ ID3D12QueryHeap *pQueryHeap,
36035 _In_ D3D12_QUERY_TYPE Type,
36036 _In_ UINT StartIndex,
36037 _In_ UINT NumQueries,
36038 _In_ ID3D12Resource *pDestinationBuffer,
36039 _In_ UINT64 AlignedDestinationBufferOffset);
36040
36041 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
36042 void ( STDMETHODCALLTYPE *SetPredication )(
36043 ID3D12GraphicsCommandList10 * This,
36044 _In_opt_ ID3D12Resource *pBuffer,
36045 _In_ UINT64 AlignedBufferOffset,
36046 _In_ D3D12_PREDICATION_OP Operation);
36047
36048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
36049 void ( STDMETHODCALLTYPE *SetMarker )(
36050 ID3D12GraphicsCommandList10 * This,
36051 UINT Metadata,
36052 _In_reads_bytes_opt_(Size) const void *pData,
36053 UINT Size);
36054
36055 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
36056 void ( STDMETHODCALLTYPE *BeginEvent )(
36057 ID3D12GraphicsCommandList10 * This,
36058 UINT Metadata,
36059 _In_reads_bytes_opt_(Size) const void *pData,
36060 UINT Size);
36061
36062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
36063 void ( STDMETHODCALLTYPE *EndEvent )(
36064 ID3D12GraphicsCommandList10 * This);
36065
36066 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
36067 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
36068 ID3D12GraphicsCommandList10 * This,
36069 _In_ ID3D12CommandSignature *pCommandSignature,
36070 _In_ UINT MaxCommandCount,
36071 _In_ ID3D12Resource *pArgumentBuffer,
36072 _In_ UINT64 ArgumentBufferOffset,
36073 _In_opt_ ID3D12Resource *pCountBuffer,
36074 _In_ UINT64 CountBufferOffset);
36075
36076 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
36077 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
36078 ID3D12GraphicsCommandList10 * This,
36079 _In_ ID3D12Resource *pDstBuffer,
36080 UINT64 DstOffset,
36081 _In_ ID3D12Resource *pSrcBuffer,
36082 UINT64 SrcOffset,
36083 UINT Dependencies,
36084 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36085 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36086
36087 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
36088 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
36089 ID3D12GraphicsCommandList10 * This,
36090 _In_ ID3D12Resource *pDstBuffer,
36091 UINT64 DstOffset,
36092 _In_ ID3D12Resource *pSrcBuffer,
36093 UINT64 SrcOffset,
36094 UINT Dependencies,
36095 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36096 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36097
36098 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
36099 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
36100 ID3D12GraphicsCommandList10 * This,
36101 _In_ FLOAT Min,
36102 _In_ FLOAT Max);
36103
36104 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
36105 void ( STDMETHODCALLTYPE *SetSamplePositions )(
36106 ID3D12GraphicsCommandList10 * This,
36107 _In_ UINT NumSamplesPerPixel,
36108 _In_ UINT NumPixels,
36109 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
36110
36111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
36112 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
36113 ID3D12GraphicsCommandList10 * This,
36114 _In_ ID3D12Resource *pDstResource,
36115 _In_ UINT DstSubresource,
36116 _In_ UINT DstX,
36117 _In_ UINT DstY,
36118 _In_ ID3D12Resource *pSrcResource,
36119 _In_ UINT SrcSubresource,
36120 _In_opt_ D3D12_RECT *pSrcRect,
36121 _In_ DXGI_FORMAT Format,
36122 _In_ D3D12_RESOLVE_MODE ResolveMode);
36123
36124 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
36125 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
36126 ID3D12GraphicsCommandList10 * This,
36127 _In_ UINT Mask);
36128
36129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
36130 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
36131 ID3D12GraphicsCommandList10 * This,
36132 UINT Count,
36133 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
36134 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
36135
36136 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
36137 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
36138 ID3D12GraphicsCommandList10 * This,
36139 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
36140
36141 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
36142 void ( STDMETHODCALLTYPE *BeginRenderPass )(
36143 ID3D12GraphicsCommandList10 * This,
36144 _In_ UINT NumRenderTargets,
36145 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
36146 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
36147 D3D12_RENDER_PASS_FLAGS Flags);
36148
36149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
36150 void ( STDMETHODCALLTYPE *EndRenderPass )(
36151 ID3D12GraphicsCommandList10 * This);
36152
36153 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
36154 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
36155 ID3D12GraphicsCommandList10 * This,
36156 _In_ ID3D12MetaCommand *pMetaCommand,
36157 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
36158 _In_ SIZE_T InitializationParametersDataSizeInBytes);
36159
36160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
36161 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
36162 ID3D12GraphicsCommandList10 * This,
36163 _In_ ID3D12MetaCommand *pMetaCommand,
36164 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
36165 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
36166
36167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
36168 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
36169 ID3D12GraphicsCommandList10 * This,
36170 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
36171 _In_ UINT NumPostbuildInfoDescs,
36172 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
36173
36174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
36175 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
36176 ID3D12GraphicsCommandList10 * This,
36177 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
36178 _In_ UINT NumSourceAccelerationStructures,
36179 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
36180
36181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
36182 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
36183 ID3D12GraphicsCommandList10 * This,
36184 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
36185 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
36186 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
36187
36188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
36189 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
36190 ID3D12GraphicsCommandList10 * This,
36191 _In_ ID3D12StateObject *pStateObject);
36192
36193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
36194 void ( STDMETHODCALLTYPE *DispatchRays )(
36195 ID3D12GraphicsCommandList10 * This,
36196 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
36197
36198 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
36199 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
36200 ID3D12GraphicsCommandList10 * This,
36201 _In_ D3D12_SHADING_RATE baseShadingRate,
36202 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
36203
36204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
36205 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
36206 ID3D12GraphicsCommandList10 * This,
36207 _In_opt_ ID3D12Resource *shadingRateImage);
36208
36209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
36210 void ( STDMETHODCALLTYPE *DispatchMesh )(
36211 ID3D12GraphicsCommandList10 * This,
36212 _In_ UINT ThreadGroupCountX,
36213 _In_ UINT ThreadGroupCountY,
36214 _In_ UINT ThreadGroupCountZ);
36215
36216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
36217 void ( STDMETHODCALLTYPE *Barrier )(
36218 ID3D12GraphicsCommandList10 * This,
36219 UINT32 NumBarrierGroups,
36220 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
36221
36222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
36223 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
36224 ID3D12GraphicsCommandList10 * This,
36225 _In_ UINT FrontStencilRef,
36226 _In_ UINT BackStencilRef);
36227
36228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
36229 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
36230 ID3D12GraphicsCommandList10 * This,
36231 _In_ FLOAT DepthBias,
36232 _In_ FLOAT DepthBiasClamp,
36233 _In_ FLOAT SlopeScaledDepthBias);
36234
36235 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
36236 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
36237 ID3D12GraphicsCommandList10 * This,
36238 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
36239
36240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
36241 void ( STDMETHODCALLTYPE *SetProgram )(
36242 ID3D12GraphicsCommandList10 * This,
36243 _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
36244
36245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
36246 void ( STDMETHODCALLTYPE *DispatchGraph )(
36247 ID3D12GraphicsCommandList10 * This,
36248 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
36249
36250 END_INTERFACE
36251 } ID3D12GraphicsCommandList10Vtbl;
36252
36253 interface ID3D12GraphicsCommandList10
36254 {
36255 CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
36256 };
36257
36258
36259
36260#ifdef COBJMACROS
36261
36262
36263#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
36264 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36265
36266#define ID3D12GraphicsCommandList10_AddRef(This) \
36267 ( (This)->lpVtbl -> AddRef(This) )
36268
36269#define ID3D12GraphicsCommandList10_Release(This) \
36270 ( (This)->lpVtbl -> Release(This) )
36271
36272
36273#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
36274 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
36275
36276#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
36277 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
36278
36279#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
36280 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
36281
36282#define ID3D12GraphicsCommandList10_SetName(This,Name) \
36283 ( (This)->lpVtbl -> SetName(This,Name) )
36284
36285
36286#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
36287 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
36288
36289
36290#define ID3D12GraphicsCommandList10_GetType(This) \
36291 ( (This)->lpVtbl -> GetType(This) )
36292
36293
36294#define ID3D12GraphicsCommandList10_Close(This) \
36295 ( (This)->lpVtbl -> Close(This) )
36296
36297#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
36298 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
36299
36300#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
36301 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
36302
36303#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
36304 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
36305
36306#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
36307 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
36308
36309#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36310 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36311
36312#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
36313 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
36314
36315#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
36316 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
36317
36318#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
36319 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
36320
36321#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
36322 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
36323
36324#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
36325 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
36326
36327#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
36328 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
36329
36330#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
36331 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
36332
36333#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
36334 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
36335
36336#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
36337 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
36338
36339#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
36340 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
36341
36342#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
36343 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
36344
36345#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
36346 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
36347
36348#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
36349 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
36350
36351#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
36352 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
36353
36354#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
36355 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
36356
36357#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
36358 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
36359
36360#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36361 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36362
36363#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36364 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36365
36366#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36367 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36368
36369#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36370 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36371
36372#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36373 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36374
36375#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36376 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36377
36378#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36379 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36380
36381#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36382 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36383
36384#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36385 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36386
36387#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36388 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36389
36390#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36391 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36392
36393#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36394 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36395
36396#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
36397 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
36398
36399#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
36400 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
36401
36402#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
36403 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
36404
36405#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
36406 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
36407
36408#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
36409 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
36410
36411#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
36412 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
36413
36414#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36415 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36416
36417#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36418 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36419
36420#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
36421 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
36422
36423#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
36424 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
36425
36426#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
36427 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
36428
36429#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
36430 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
36431
36432#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
36433 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
36434
36435#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
36436 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
36437
36438#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
36439 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
36440
36441#define ID3D12GraphicsCommandList10_EndEvent(This) \
36442 ( (This)->lpVtbl -> EndEvent(This) )
36443
36444#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
36445 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
36446
36447
36448#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36449 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36450
36451#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36452 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36453
36454#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
36455 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
36456
36457#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
36458 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
36459
36460#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
36461 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
36462
36463#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
36464 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
36465
36466
36467#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
36468 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
36469
36470
36471#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
36472 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
36473
36474
36475#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
36476 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
36477
36478#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
36479 ( (This)->lpVtbl -> EndRenderPass(This) )
36480
36481#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
36482 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
36483
36484#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
36485 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
36486
36487#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
36488 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
36489
36490#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
36491 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
36492
36493#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
36494 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
36495
36496#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
36497 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
36498
36499#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
36500 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
36501
36502
36503#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
36504 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
36505
36506#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
36507 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
36508
36509
36510#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36511 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36512
36513
36514#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
36515 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
36516
36517
36518#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
36519 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
36520
36521
36522#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
36523 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
36524
36525#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
36526 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
36527
36528
36529#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
36530 ( (This)->lpVtbl -> SetProgram(This,pDesc) )
36531
36532#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
36533 ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
36534
36535#endif /* COBJMACROS */
36536
36537
36538#endif /* C style interface */
36539
36540
36541
36542
36543#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
36544
36545
36546#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36547#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36548
36549/* interface ID3D12DSRDeviceFactory */
36550/* [unique][local][object][uuid] */
36551
36552
36553EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
36554
36555#if defined(__cplusplus) && !defined(CINTERFACE)
36556
36557 MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
36558 ID3D12DSRDeviceFactory : public IUnknown
36559 {
36560 public:
36561 virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
36562 ID3D12Device *pD3D12Device,
36563 UINT NodeMask,
36564 REFIID riid,
36565 _COM_Outptr_ void **ppvDSRDevice) = 0;
36566
36567 };
36568
36569
36570#else /* C style interface */
36571
36572 typedef struct ID3D12DSRDeviceFactoryVtbl
36573 {
36574 BEGIN_INTERFACE
36575
36576 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36577 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36578 ID3D12DSRDeviceFactory * This,
36579 REFIID riid,
36580 _COM_Outptr_ void **ppvObject);
36581
36582 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36583 ULONG ( STDMETHODCALLTYPE *AddRef )(
36584 ID3D12DSRDeviceFactory * This);
36585
36586 DECLSPEC_XFGVIRT(IUnknown, Release)
36587 ULONG ( STDMETHODCALLTYPE *Release )(
36588 ID3D12DSRDeviceFactory * This);
36589
36590 DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
36591 HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
36592 ID3D12DSRDeviceFactory * This,
36593 ID3D12Device *pD3D12Device,
36594 UINT NodeMask,
36595 REFIID riid,
36596 _COM_Outptr_ void **ppvDSRDevice);
36597
36598 END_INTERFACE
36599 } ID3D12DSRDeviceFactoryVtbl;
36600
36601 interface ID3D12DSRDeviceFactory
36602 {
36603 CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
36604 };
36605
36606
36607
36608#ifdef COBJMACROS
36609
36610
36611#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
36612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36613
36614#define ID3D12DSRDeviceFactory_AddRef(This) \
36615 ( (This)->lpVtbl -> AddRef(This) )
36616
36617#define ID3D12DSRDeviceFactory_Release(This) \
36618 ( (This)->lpVtbl -> Release(This) )
36619
36620
36621#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
36622 ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
36623
36624#endif /* COBJMACROS */
36625
36626
36627#endif /* C style interface */
36628
36629
36630
36631
36632#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
36633
36634
36635#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36636#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36637
36638/* interface ID3D12GBVDiagnostics */
36639/* [unique][local][object][uuid] */
36640
36641
36642EXTERN_C const IID IID_ID3D12GBVDiagnostics;
36643
36644#if defined(__cplusplus) && !defined(CINTERFACE)
36645
36646 MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
36647 ID3D12GBVDiagnostics : public IUnknown
36648 {
36649 public:
36650 virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
36651 _In_ ID3D12Resource *pResource,
36652 _Out_writes_bytes_(DataSize) int *pData,
36653 UINT DataSize) = 0;
36654
36655 virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
36656 _In_ ID3D12Resource *pResource,
36657 UINT Subresource,
36658 _Out_ int *pData) = 0;
36659
36660 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
36661 _In_ ID3D12Resource *pResource,
36662 _Out_ int *pData) = 0;
36663
36664 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
36665 _In_ ID3D12Resource *pResource,
36666 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36667 _In_opt_ UINT32 *pResourceHash,
36668 _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
36669
36670 virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
36671
36672 virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
36673
36674 };
36675
36676
36677#else /* C style interface */
36678
36679 typedef struct ID3D12GBVDiagnosticsVtbl
36680 {
36681 BEGIN_INTERFACE
36682
36683 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36684 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36685 ID3D12GBVDiagnostics * This,
36686 REFIID riid,
36687 _COM_Outptr_ void **ppvObject);
36688
36689 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36690 ULONG ( STDMETHODCALLTYPE *AddRef )(
36691 ID3D12GBVDiagnostics * This);
36692
36693 DECLSPEC_XFGVIRT(IUnknown, Release)
36694 ULONG ( STDMETHODCALLTYPE *Release )(
36695 ID3D12GBVDiagnostics * This);
36696
36697 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
36698 HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
36699 ID3D12GBVDiagnostics * This,
36700 _In_ ID3D12Resource *pResource,
36701 _Out_writes_bytes_(DataSize) int *pData,
36702 UINT DataSize);
36703
36704 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
36705 HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
36706 ID3D12GBVDiagnostics * This,
36707 _In_ ID3D12Resource *pResource,
36708 UINT Subresource,
36709 _Out_ int *pData);
36710
36711 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
36712 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
36713 ID3D12GBVDiagnostics * This,
36714 _In_ ID3D12Resource *pResource,
36715 _Out_ int *pData);
36716
36717 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
36718 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
36719 ID3D12GBVDiagnostics * This,
36720 _In_ ID3D12Resource *pResource,
36721 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36722 _In_opt_ UINT32 *pResourceHash,
36723 _In_opt_ UINT32 *pSubresourceStatesByteOffset);
36724
36725 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
36726 void ( STDMETHODCALLTYPE *GBVReserved0 )(
36727 ID3D12GBVDiagnostics * This);
36728
36729 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
36730 void ( STDMETHODCALLTYPE *GBVReserved1 )(
36731 ID3D12GBVDiagnostics * This);
36732
36733 END_INTERFACE
36734 } ID3D12GBVDiagnosticsVtbl;
36735
36736 interface ID3D12GBVDiagnostics
36737 {
36738 CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
36739 };
36740
36741
36742
36743#ifdef COBJMACROS
36744
36745
36746#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
36747 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36748
36749#define ID3D12GBVDiagnostics_AddRef(This) \
36750 ( (This)->lpVtbl -> AddRef(This) )
36751
36752#define ID3D12GBVDiagnostics_Release(This) \
36753 ( (This)->lpVtbl -> Release(This) )
36754
36755
36756#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
36757 ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
36758
36759#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
36760 ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
36761
36762#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
36763 ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
36764
36765#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
36766 ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
36767
36768#define ID3D12GBVDiagnostics_GBVReserved0(This) \
36769 ( (This)->lpVtbl -> GBVReserved0(This) )
36770
36771#define ID3D12GBVDiagnostics_GBVReserved1(This) \
36772 ( (This)->lpVtbl -> GBVReserved1(This) )
36773
36774#endif /* COBJMACROS */
36775
36776
36777#endif /* C style interface */
36778
36779
36780
36781
36782#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
36783
36784
36785/* interface __MIDL_itf_d3d12_0000_0085 */
36786/* [local] */
36787
36788#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
36789#pragma endregion
36790DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
36791DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
36792DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
36793DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
36794DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
36795DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
36796DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
36797DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
36798DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
36799DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
36800DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
36801DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
36802DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
36803DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
36804DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
36805DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
36806DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
36807DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
36808DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
36809DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
36810DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
36811DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
36812DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
36813DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
36814DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
36815DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
36816DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
36817DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
36818DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
36819DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
36820DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
36821DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
36822DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
36823DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
36824DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
36825DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
36826DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
36827DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
36828DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
36829DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
36830DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
36831DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
36832DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);
36833DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
36834DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
36835DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
36836DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
36837DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
36838DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
36839DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
36840DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
36841DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
36842DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
36843DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
36844DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
36845DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
36846DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
36847DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
36848DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);
36849DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
36850DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
36851DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
36852DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
36853DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
36854DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
36855DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
36856DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
36857DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
36858DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
36859DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
36860DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
36861DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
36862DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
36863DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
36864DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
36865DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
36866DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
36867DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
36868DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
36869DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
36870DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
36871DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
36872DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
36873DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
36874DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
36875
36876
36877extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
36878extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
36879
36880/* Additional Prototypes for ALL interfaces */
36881
36882/* end of Additional Prototypes */
36883
36884#ifdef __cplusplus
36885}
36886#endif
36887
36888#endif
36889
36890
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl
new file mode 100644
index 0000000..a3f0125
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl
@@ -0,0 +1,7016 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "dxgiformat.idl";
12
13import "d3dcommon.idl";
14
15cpp_quote("#include <winapifamily.h>")
16
17#pragma region App Family
18cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
19
20// NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
21cpp_quote("#ifndef _D3D12_CONSTANTS")
22cpp_quote("#define _D3D12_CONSTANTS")
23const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
24const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
25const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
26const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
27const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
28const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
29const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
30const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
31const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
32const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
33const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
34const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
35const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
36const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
37const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
38const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
39const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
40const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
41const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
42const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
43const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
44const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
45const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
46const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
47const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
48const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
49const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
50const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
51const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
52const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
53const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
54const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
55const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
56const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
57const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
58const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
59const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
60const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
61const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
62const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
63const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
64const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
65const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
66const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
67const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
68const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
69const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
70const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
71const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
72const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
73const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
74const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
75const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
76const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
77const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
78const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
79const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
80const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
81const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
82const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
83const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
84const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
85const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
86const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
87const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
88const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
89const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
90const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
91const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
92const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
93const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
94const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
95const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
96const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
97const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
98const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
99const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
100const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
101const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
102const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
103const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
104const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
105const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
106const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
107const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
108const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
109const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
110const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
111const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
112const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
113const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
114const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
115const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
116const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
117const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
118const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
119const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
120const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
121const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
122const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
123const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
124const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
125cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )")
126cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )")
127cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )")
128cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )")
129cpp_quote("#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )")
130const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
131cpp_quote("#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )")
132const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
133cpp_quote("#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )")
134const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
135const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
136const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
137const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
138const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
139const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
140const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
141const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
142cpp_quote("#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )")
143const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
144const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
145const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
146const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
147const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
148cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )")
149cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )")
150const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
151const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
152const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
153const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
154const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
155const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
156const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
157const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
158const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
159const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
160const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
161const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
162const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
163const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
164const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
165const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
166const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
167const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
168const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
169const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
170const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
171const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
172const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
173const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
174const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
175const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
176const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
177const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
178const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
179const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
180cpp_quote("#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )")
181cpp_quote("#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )")
182cpp_quote("#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )")
183cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )")
184cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )")
185cpp_quote("#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )")
186cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )")
187cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )")
188cpp_quote("#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )")
189cpp_quote("#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )")
190cpp_quote("#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )")
191cpp_quote("#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )")
192cpp_quote("#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )")
193const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
194const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
195const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
196const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
197const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
198const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
199const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
200const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
201const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
202const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
203const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
204const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
206const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
207const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
208const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
209const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
210const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
211const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
212const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
213const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
214const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
215const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
216const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
217const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
218const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
219const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
220const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
221const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
222const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
223const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
224const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
225const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
226const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
227const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
228const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
229const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
230const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
231const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
232const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
233const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
235const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
236const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
237const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
238cpp_quote("#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )")
239cpp_quote("#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )")
240const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
241const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
242const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
243const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
244const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
245const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
246const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
247const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
248const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
249const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
250const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
251const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
252const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
253const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
254const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
255const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
256const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
257const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
258const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
259const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
260const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
261const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
262const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
263const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
264const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
265const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
266const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
267const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
268cpp_quote("#define D3D12_LINEAR_GAMMA ( 1.0f )")
269const UINT D3D12_MAJOR_VERSION = 12;
270cpp_quote("#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )")
271cpp_quote("#define D3D12_MAX_DEPTH ( 1.0f )")
272const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
273const UINT D3D12_MAX_MAXANISOTROPY = 16;
274const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
275cpp_quote("#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )")
276const UINT D3D12_MAX_ROOT_COST = 64;
277const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
278const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
279const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
280const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
281const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
282const UINT D3D12_MINOR_VERSION = 0;
283cpp_quote("#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )")
284cpp_quote("#define D3D12_MIN_DEPTH ( 0.0f )")
285const UINT D3D12_MIN_MAXANISOTROPY = 0;
286cpp_quote("#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )")
287cpp_quote("#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )")
288const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
289const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
290const UINT D3D12_MS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID = 4194303;
291cpp_quote("#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )")
292const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
294const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
295const UINT D3D12_PACKED_TILE = 0xffffffff;
296const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
297const UINT D3D12_PREVIEW_SDK_VERSION = 717;
298const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
299const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
300const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
301const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
302const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
303const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
304const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
305const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
306const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
307const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
308const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
309const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
310const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
311cpp_quote("#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )")
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
313const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
314const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
316const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
317const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
318const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
319const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
320const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
321cpp_quote("#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )")
322const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
323const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
324const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
325const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
326const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
327const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
328const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
329const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
330const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
331const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
332const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
333const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT = 128;
334const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL = 12;
335const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
336const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
337const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
338const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
339const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
340const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
341const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
342const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
343const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
344const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
345const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
346const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
347const UINT D3D12_REQ_MAXANISOTROPY = 16;
348const UINT D3D12_REQ_MIP_LEVELS = 15;
349const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
350const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
351const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
352const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
353cpp_quote("#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )")
354const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
355const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
356const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
357const UINT D3D12_REQ_SUBRESOURCES = 30720;
358const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
359const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
360const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
361const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
362const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
363const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
364const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
365const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
366const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
367const UINT D3D12_SDK_VERSION = 618;
368const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
369const UINT D3D12_SHADER_MAJOR_VERSION = 5;
370const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
371const UINT D3D12_SHADER_MAX_INTERFACES = 253;
372const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
373const UINT D3D12_SHADER_MAX_TYPES = 65535;
374const UINT D3D12_SHADER_MINOR_VERSION = 1;
375const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
376const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
377const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
378const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
379const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
380const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
381const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
382const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
383const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
384const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
385const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
386const UINT D3D12_SO_STREAM_COUNT = 4;
387const UINT D3D12_SPEC_DATE_DAY = 14;
388const UINT D3D12_SPEC_DATE_MONTH = 11;
389const UINT D3D12_SPEC_DATE_YEAR = 2014;
390cpp_quote("#define D3D12_SPEC_VERSION ( 1.16 )")
391cpp_quote("#define D3D12_SRGB_GAMMA ( 2.2f )")
392cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )")
393cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )")
394cpp_quote("#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )")
395cpp_quote("#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )")
396cpp_quote("#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )")
397cpp_quote("#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )")
398const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
399const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
400const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
401const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
402const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
403const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
404const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
405const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
406const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
407const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
408const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
409const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
410const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
411const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
412const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
413const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
414const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
415const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
416const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
417const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
418const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
419const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
420const UINT D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT = 4096;
421const UINT D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT = 8;
422const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
423const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
424const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
425const UINT D3D12_UAV_SLOT_COUNT = 64;
426const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
427const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
428const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
429const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
430const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
431const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
432const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
433const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
434const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
435const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
436const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
437const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
438const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
439const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
440const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
441const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
442const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
443const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
444const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
445const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
446const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
447const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
448const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
449const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
450const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
451const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
452const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
453const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
454const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
455const UINT D3D12_WORK_GRAPHS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID = 16777215;
456const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
457cpp_quote("#endif")
458
459
460// Forward declarations
461interface ID3D12CommandQueue;
462
463
464typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
465
466typedef enum D3D12_COMMAND_LIST_TYPE
467{
468 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
469 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
470 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
471 D3D12_COMMAND_LIST_TYPE_COPY = 3,
472 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
473 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
474 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
475
476 D3D12_COMMAND_LIST_TYPE_NONE = -1,
477
478} D3D12_COMMAND_LIST_TYPE;
479
480typedef enum D3D12_COMMAND_QUEUE_FLAGS
481{
482 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
483 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
484 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2,
485} D3D12_COMMAND_QUEUE_FLAGS;
486cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
487
488typedef enum D3D12_COMMAND_QUEUE_PRIORITY
489{
490 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
491 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
492 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
493} D3D12_COMMAND_QUEUE_PRIORITY;
494
495typedef struct D3D12_COMMAND_QUEUE_DESC
496{
497 D3D12_COMMAND_LIST_TYPE Type;
498 INT Priority;
499 D3D12_COMMAND_QUEUE_FLAGS Flags;
500 UINT NodeMask;
501} D3D12_COMMAND_QUEUE_DESC;
502
503typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
504{
505 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
506 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
507 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
508 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
509 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
510} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
511
512typedef enum D3D12_INPUT_CLASSIFICATION
513{
514 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
515 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
516} D3D12_INPUT_CLASSIFICATION;
517
518typedef struct D3D12_INPUT_ELEMENT_DESC
519{
520 LPCSTR SemanticName;
521 UINT SemanticIndex;
522 DXGI_FORMAT Format;
523 UINT InputSlot;
524 UINT AlignedByteOffset;
525 D3D12_INPUT_CLASSIFICATION InputSlotClass;
526 UINT InstanceDataStepRate;
527} D3D12_INPUT_ELEMENT_DESC;
528
529// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
530typedef enum D3D12_FILL_MODE
531{
532 // 1 was POINT in D3D, unused in D3D12
533 D3D12_FILL_MODE_WIREFRAME = 2,
534 D3D12_FILL_MODE_SOLID = 3
535} D3D12_FILL_MODE;
536
537typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
538
539typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
540
541// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
542typedef enum D3D12_CULL_MODE
543{
544 D3D12_CULL_MODE_NONE = 1,
545 D3D12_CULL_MODE_FRONT = 2,
546 D3D12_CULL_MODE_BACK = 3
547} D3D12_CULL_MODE;
548
549typedef struct D3D12_SO_DECLARATION_ENTRY
550{
551 UINT Stream;
552 LPCSTR SemanticName;
553 UINT SemanticIndex;
554 BYTE StartComponent;
555 BYTE ComponentCount;
556 BYTE OutputSlot;
557} D3D12_SO_DECLARATION_ENTRY;
558
559typedef struct D3D12_VIEWPORT
560{
561 FLOAT TopLeftX;
562 FLOAT TopLeftY;
563 FLOAT Width;
564 FLOAT Height;
565 FLOAT MinDepth;
566 FLOAT MaxDepth;
567} D3D12_VIEWPORT;
568
569
570typedef RECT D3D12_RECT;
571
572
573typedef struct D3D12_BOX
574{
575 UINT left;
576 UINT top;
577 UINT front;
578 UINT right;
579 UINT bottom;
580 UINT back;
581} D3D12_BOX;
582
583//--------------------------------------------------------------------------------------------------------
584// The system LUID struct isn't defined in wtypes, so we repeat it here just
585// for the MIDL compiler.
586cpp_quote("#ifdef __midl")
587cpp_quote("#ifndef LUID_DEFINED")
588cpp_quote("#define LUID_DEFINED 1")
589typedef struct __LUID {
590 DWORD LowPart;
591 LONG HighPart;
592} LUID, * PLUID;
593cpp_quote("#endif")
594cpp_quote("#endif")
595
596
597////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
598//
599// Depth-Stencil State
600//
601////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
602
603// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
604typedef enum D3D12_COMPARISON_FUNC
605{
606 D3D12_COMPARISON_FUNC_NONE = 0,
607 D3D12_COMPARISON_FUNC_NEVER = 1,
608 D3D12_COMPARISON_FUNC_LESS = 2,
609 D3D12_COMPARISON_FUNC_EQUAL = 3,
610 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
611 D3D12_COMPARISON_FUNC_GREATER = 5,
612 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
613 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
614 D3D12_COMPARISON_FUNC_ALWAYS = 8
615} D3D12_COMPARISON_FUNC;
616
617typedef enum D3D12_DEPTH_WRITE_MASK
618{
619 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
620 D3D12_DEPTH_WRITE_MASK_ALL = 1
621} D3D12_DEPTH_WRITE_MASK;
622
623// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
624typedef enum D3D12_STENCIL_OP
625{
626 D3D12_STENCIL_OP_KEEP = 1,
627 D3D12_STENCIL_OP_ZERO = 2,
628 D3D12_STENCIL_OP_REPLACE = 3,
629 D3D12_STENCIL_OP_INCR_SAT = 4,
630 D3D12_STENCIL_OP_DECR_SAT = 5,
631 D3D12_STENCIL_OP_INVERT = 6,
632 D3D12_STENCIL_OP_INCR = 7,
633 D3D12_STENCIL_OP_DECR = 8
634} D3D12_STENCIL_OP;
635
636typedef struct D3D12_DEPTH_STENCILOP_DESC
637{
638 D3D12_STENCIL_OP StencilFailOp;
639 D3D12_STENCIL_OP StencilDepthFailOp;
640 D3D12_STENCIL_OP StencilPassOp;
641 D3D12_COMPARISON_FUNC StencilFunc;
642} D3D12_DEPTH_STENCILOP_DESC;
643
644typedef struct D3D12_DEPTH_STENCIL_DESC
645{
646 BOOL DepthEnable;
647 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
648 D3D12_COMPARISON_FUNC DepthFunc;
649 BOOL StencilEnable;
650 UINT8 StencilReadMask;
651 UINT8 StencilWriteMask;
652 D3D12_DEPTH_STENCILOP_DESC FrontFace;
653 D3D12_DEPTH_STENCILOP_DESC BackFace;
654} D3D12_DEPTH_STENCIL_DESC;
655
656typedef struct D3D12_DEPTH_STENCIL_DESC1
657{
658 BOOL DepthEnable;
659 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
660 D3D12_COMPARISON_FUNC DepthFunc;
661 BOOL StencilEnable;
662 UINT8 StencilReadMask;
663 UINT8 StencilWriteMask;
664 D3D12_DEPTH_STENCILOP_DESC FrontFace;
665 D3D12_DEPTH_STENCILOP_DESC BackFace;
666 BOOL DepthBoundsTestEnable;
667} D3D12_DEPTH_STENCIL_DESC1;
668
669// Front/back face independent stencil masks
670typedef struct D3D12_DEPTH_STENCILOP_DESC1
671{
672 D3D12_STENCIL_OP StencilFailOp;
673 D3D12_STENCIL_OP StencilDepthFailOp;
674 D3D12_STENCIL_OP StencilPassOp;
675 D3D12_COMPARISON_FUNC StencilFunc;
676 UINT8 StencilReadMask;
677 UINT8 StencilWriteMask;
678} D3D12_DEPTH_STENCILOP_DESC1;
679
680typedef struct D3D12_DEPTH_STENCIL_DESC2
681{
682 BOOL DepthEnable;
683 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
684 D3D12_COMPARISON_FUNC DepthFunc;
685 BOOL StencilEnable;
686 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
687 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
688 BOOL DepthBoundsTestEnable;
689} D3D12_DEPTH_STENCIL_DESC2;
690
691
692////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
693//
694// Blend State
695//
696////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
697
698// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
699typedef enum D3D12_BLEND
700{
701 D3D12_BLEND_ZERO = 1,
702 D3D12_BLEND_ONE = 2,
703 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
704 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
705 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
706 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
707 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
708 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
709 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
710 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
711 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
712 // 12 reserved (was BOTHSRCALPHA)
713 // 13 reserved (was BOTHSRCALPHA)
714 D3D12_BLEND_BLEND_FACTOR = 14,
715 D3D12_BLEND_INV_BLEND_FACTOR = 15,
716 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
717 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
718 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
719 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
720 D3D12_BLEND_ALPHA_FACTOR = 20,
721 D3D12_BLEND_INV_ALPHA_FACTOR = 21
722} D3D12_BLEND;
723
724// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
725typedef enum D3D12_BLEND_OP
726{
727 D3D12_BLEND_OP_ADD = 1,
728 D3D12_BLEND_OP_SUBTRACT = 2,
729 D3D12_BLEND_OP_REV_SUBTRACT = 3,
730 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
731 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
732} D3D12_BLEND_OP;
733
734typedef enum D3D12_COLOR_WRITE_ENABLE
735{
736 D3D12_COLOR_WRITE_ENABLE_RED = 1,
737 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
738 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
739 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
740 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
741 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
742} D3D12_COLOR_WRITE_ENABLE;
743
744typedef enum D3D12_LOGIC_OP
745{
746 // Operation:
747 // (s == PS output, d = RTV contents)
748 D3D12_LOGIC_OP_CLEAR = 0, // 0
749 D3D12_LOGIC_OP_SET, // 1
750 D3D12_LOGIC_OP_COPY, // s
751 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
752 D3D12_LOGIC_OP_NOOP, // d
753 D3D12_LOGIC_OP_INVERT, // ~d
754 D3D12_LOGIC_OP_AND, // s & d
755 D3D12_LOGIC_OP_NAND, // ~(s & d)
756 D3D12_LOGIC_OP_OR, // s | d
757 D3D12_LOGIC_OP_NOR, // ~(s | d)
758 D3D12_LOGIC_OP_XOR, // s ^ d
759 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
760 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
761 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
762 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
763 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
764} D3D12_LOGIC_OP;
765
766typedef struct D3D12_RENDER_TARGET_BLEND_DESC
767{
768 BOOL BlendEnable;
769 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
770 D3D12_BLEND SrcBlend;
771 D3D12_BLEND DestBlend;
772 D3D12_BLEND_OP BlendOp;
773 D3D12_BLEND SrcBlendAlpha;
774 D3D12_BLEND DestBlendAlpha;
775 D3D12_BLEND_OP BlendOpAlpha;
776 D3D12_LOGIC_OP LogicOp; // applies to RGBA
777 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
778} D3D12_RENDER_TARGET_BLEND_DESC;
779
780typedef struct D3D12_BLEND_DESC
781{
782 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
783 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
784 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
785} D3D12_BLEND_DESC;
786
787cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
788cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
789
790
791////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
792//
793// Rasterizer State
794//
795////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
796
797typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
798{
799 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
800 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
801} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
802
803typedef struct D3D12_RASTERIZER_DESC
804{
805 D3D12_FILL_MODE FillMode;
806 D3D12_CULL_MODE CullMode;
807 BOOL FrontCounterClockwise;
808 INT DepthBias;
809 FLOAT DepthBiasClamp;
810 FLOAT SlopeScaledDepthBias;
811 BOOL DepthClipEnable;
812 BOOL MultisampleEnable;
813 BOOL AntialiasedLineEnable;
814 UINT ForcedSampleCount;
815 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
816} D3D12_RASTERIZER_DESC;
817
818typedef struct D3D12_RASTERIZER_DESC1
819{
820 D3D12_FILL_MODE FillMode;
821 D3D12_CULL_MODE CullMode;
822 BOOL FrontCounterClockwise;
823 FLOAT DepthBias;
824 FLOAT DepthBiasClamp;
825 FLOAT SlopeScaledDepthBias;
826 BOOL DepthClipEnable;
827 BOOL MultisampleEnable;
828 BOOL AntialiasedLineEnable;
829 UINT ForcedSampleCount;
830 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
831} D3D12_RASTERIZER_DESC1;
832
833typedef enum D3D12_LINE_RASTERIZATION_MODE
834{
835 D3D12_LINE_RASTERIZATION_MODE_ALIASED,
836 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
837 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
838 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
839} D3D12_LINE_RASTERIZATION_MODE;
840
841typedef struct D3D12_RASTERIZER_DESC2
842{
843 D3D12_FILL_MODE FillMode;
844 D3D12_CULL_MODE CullMode;
845 BOOL FrontCounterClockwise;
846 FLOAT DepthBias;
847 FLOAT DepthBiasClamp;
848 FLOAT SlopeScaledDepthBias;
849 BOOL DepthClipEnable;
850 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
851 UINT ForcedSampleCount;
852 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
853} D3D12_RASTERIZER_DESC2;
854
855////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
856//
857// Pipeline State v1
858//
859////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
860
861[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
862interface ID3D12RootSignature
863 : ID3D12DeviceChild
864{
865}
866
867typedef struct D3D12_SHADER_BYTECODE
868{
869 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
870 SIZE_T BytecodeLength;
871} D3D12_SHADER_BYTECODE;
872
873typedef struct D3D12_STREAM_OUTPUT_DESC
874{
875 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
876 UINT NumEntries;
877 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
878 UINT NumStrides;
879 UINT RasterizedStream;
880} D3D12_STREAM_OUTPUT_DESC;
881
882typedef struct D3D12_INPUT_LAYOUT_DESC
883{
884 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
885 UINT NumElements;
886} D3D12_INPUT_LAYOUT_DESC;
887
888typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
889{
890 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
891 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
892 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
893} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
894
895typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
896{
897 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
898 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
899} D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
900
901typedef struct D3D12_CACHED_PIPELINE_STATE
902{
903 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
904 SIZE_T CachedBlobSizeInBytes;
905} D3D12_CACHED_PIPELINE_STATE;
906
907typedef enum D3D12_PIPELINE_STATE_FLAGS
908{
909 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
910 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
911 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
912 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
913
914} D3D12_PIPELINE_STATE_FLAGS;
915cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
916
917typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
918{
919 ID3D12RootSignature* pRootSignature;
920 D3D12_SHADER_BYTECODE VS;
921 D3D12_SHADER_BYTECODE PS;
922 D3D12_SHADER_BYTECODE DS;
923 D3D12_SHADER_BYTECODE HS;
924 D3D12_SHADER_BYTECODE GS;
925 D3D12_STREAM_OUTPUT_DESC StreamOutput;
926 D3D12_BLEND_DESC BlendState;
927 UINT SampleMask;
928 D3D12_RASTERIZER_DESC RasterizerState;
929 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
930 D3D12_INPUT_LAYOUT_DESC InputLayout;
931 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
932 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
933 UINT NumRenderTargets;
934 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
935 DXGI_FORMAT DSVFormat;
936 DXGI_SAMPLE_DESC SampleDesc;
937 UINT NodeMask;
938 D3D12_CACHED_PIPELINE_STATE CachedPSO;
939 D3D12_PIPELINE_STATE_FLAGS Flags;
940} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
941
942typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
943{
944 ID3D12RootSignature* pRootSignature;
945 D3D12_SHADER_BYTECODE CS;
946 UINT NodeMask;
947 D3D12_CACHED_PIPELINE_STATE CachedPSO;
948 D3D12_PIPELINE_STATE_FLAGS Flags;
949} D3D12_COMPUTE_PIPELINE_STATE_DESC;
950
951////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
952//
953// Serialized Root Signature
954//
955////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
956typedef enum D3D_ROOT_SIGNATURE_VERSION
957{
958 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
959 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
960 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
961 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
962} D3D_ROOT_SIGNATURE_VERSION;
963
964typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
965{
966 [annotation("_Field_size_bytes_full_(SerializedBlobSizeInBytes)")] const void* pSerializedBlob;
967 SIZE_T SerializedBlobSizeInBytes;
968} D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
969
970typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
971{
972 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
973} D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
974
975typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
976{
977 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
978} D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
979
980////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
981//
982// Pipeline State v2
983//
984////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
985
986struct D3D12_RT_FORMAT_ARRAY
987{
988 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
989 UINT NumRenderTargets;
990};
991
992typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
993{
994 [annotation("_In_")] SIZE_T SizeInBytes;
995 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
996} D3D12_PIPELINE_STATE_STREAM_DESC;
997
998typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
999{
1000 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
1001 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
1002 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
1003 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
1004 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
1005 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
1006 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
1007 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
1008 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
1009 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
1010 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
1011 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
1012 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
1013 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1014 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
1015 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
1016 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
1017 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
1018 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
1019 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
1020 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
1021 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
1022 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
1023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
1024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
1025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
1026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
1027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
1028 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29, // D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
1029 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
1030} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
1031
1032////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1033//
1034// D3D12 Caps
1035//
1036////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1037
1038typedef enum D3D12_FEATURE
1039{
1040 D3D12_FEATURE_D3D12_OPTIONS = 0,
1041 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
1042 D3D12_FEATURE_FEATURE_LEVELS = 2,
1043 D3D12_FEATURE_FORMAT_SUPPORT = 3,
1044 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
1045 D3D12_FEATURE_FORMAT_INFO = 5,
1046 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
1047 D3D12_FEATURE_SHADER_MODEL = 7,
1048 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
1049 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
1050 D3D12_FEATURE_ROOT_SIGNATURE = 12,
1051 D3D12_FEATURE_ARCHITECTURE1 = 16,
1052 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
1053 D3D12_FEATURE_SHADER_CACHE = 19,
1054 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
1055 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
1056 D3D12_FEATURE_EXISTING_HEAPS = 22,
1057 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
1058 D3D12_FEATURE_SERIALIZATION = 24,
1059 D3D12_FEATURE_CROSS_NODE = 25,
1060 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
1061 D3D12_FEATURE_DISPLAYABLE = 28,
1062 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
1063 D3D12_FEATURE_QUERY_META_COMMAND = 31,
1064 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
1065 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
1066 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
1067 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
1068 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
1069 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
1070 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
1071 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
1072 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
1073 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
1074 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
1075 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
1076 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
1077 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
1078 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
1079 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
1080 D3D12_FEATURE_PREDICATION = 50,
1081 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
1082 D3D12_FEATURE_HARDWARE_COPY = 52,
1083 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
1084 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
1085 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
1086 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
1087 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61,
1088
1089} D3D12_FEATURE;
1090
1091typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
1092{
1093 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
1094 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
1095 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
1096} D3D12_SHADER_MIN_PRECISION_SUPPORT;
1097cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
1098
1099typedef enum D3D12_TILED_RESOURCES_TIER
1100{
1101 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
1102 D3D12_TILED_RESOURCES_TIER_1 = 1,
1103 D3D12_TILED_RESOURCES_TIER_2 = 2,
1104 D3D12_TILED_RESOURCES_TIER_3 = 3,
1105 D3D12_TILED_RESOURCES_TIER_4 = 4,
1106} D3D12_TILED_RESOURCES_TIER;
1107
1108typedef enum D3D12_RESOURCE_BINDING_TIER
1109{
1110 D3D12_RESOURCE_BINDING_TIER_1 = 1,
1111 D3D12_RESOURCE_BINDING_TIER_2 = 2,
1112 D3D12_RESOURCE_BINDING_TIER_3 = 3,
1113} D3D12_RESOURCE_BINDING_TIER;
1114
1115typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
1116 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
1117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1118 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1119 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1120} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
1121
1122
1123typedef enum D3D12_FORMAT_SUPPORT1
1124{
1125 D3D12_FORMAT_SUPPORT1_NONE = 0,
1126 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
1127 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
1128 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
1129 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
1130 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
1131 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
1132 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
1133 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
1134 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
1135 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
1136 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
1137 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
1138 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
1139 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
1140 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
1141 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
1142 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
1143 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
1144 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
1145 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
1146 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
1147 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
1148 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
1149 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
1150 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1151 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1152 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1153 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1154 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1155} D3D12_FORMAT_SUPPORT1;
1156cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
1157
1158typedef enum D3D12_FORMAT_SUPPORT2
1159{
1160 D3D12_FORMAT_SUPPORT2_NONE = 0,
1161 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1162 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1165 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1166 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1167 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1168 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1169 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1170 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1171 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1172 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1173 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x00010000,
1174} D3D12_FORMAT_SUPPORT2;
1175cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
1176
1177typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1178{
1179 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1180 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1181} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1182cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
1183
1184typedef enum D3D12_CROSS_NODE_SHARING_TIER
1185{
1186 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1187 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1188 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1189 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1190 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1191} D3D12_CROSS_NODE_SHARING_TIER;
1192
1193typedef enum D3D12_RESOURCE_HEAP_TIER
1194{
1195 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1196 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1197} D3D12_RESOURCE_HEAP_TIER;
1198
1199typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1200{
1201 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1202 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1203 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1204} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1205
1206typedef enum D3D12_VIEW_INSTANCING_TIER
1207{
1208 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1209 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1210 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1211 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1212} D3D12_VIEW_INSTANCING_TIER;
1213
1214
1215typedef enum D3D12_WORK_GRAPHS_TIER {
1216 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
1217 D3D12_WORK_GRAPHS_TIER_1_0 = 10,
1218} D3D12_WORK_GRAPHS_TIER;
1219
1220
1221// D3D12_FEATURE_D3D12_OPTIONS
1222typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1223{
1224 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1225 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1226 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1227 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1228 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1229 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1230 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1231 [annotation("_Out_")] BOOL ROVsSupported;
1232 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1233 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1234 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1235 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1236 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1237 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1238 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1239} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1240
1241// D3D12_FEATURE_D3D12_OPTIONS1
1242typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1243{
1244 [annotation("_Out_")] BOOL WaveOps;
1245 [annotation("_Out_")] UINT WaveLaneCountMin;
1246 [annotation("_Out_")] UINT WaveLaneCountMax;
1247 [annotation("_Out_")] UINT TotalLaneCount;
1248 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1249 [annotation("_Out_")] BOOL Int64ShaderOps;
1250} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1251
1252// D3D12_FEATURE_D3D12_OPTIONS2
1253typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1254{
1255 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1256 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1257} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1258
1259// D3D12_FEATURE_ROOT_SIGNATURE
1260typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1261{
1262 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1263} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1264
1265// D3D12_FEATURE_ARCHITECTURE
1266typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1267{
1268 [annotation("_In_")] UINT NodeIndex;
1269 [annotation("_Out_")] BOOL TileBasedRenderer;
1270 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1271 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1272} D3D12_FEATURE_DATA_ARCHITECTURE;
1273
1274// D3D12_FEATURE_ARCHITECTURE1
1275typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1276{
1277 [annotation("_In_")] UINT NodeIndex;
1278 [annotation("_Out_")] BOOL TileBasedRenderer;
1279 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1280 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1281 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1282} D3D12_FEATURE_DATA_ARCHITECTURE1;
1283
1284// D3D12_FEATURE_FEATURE_LEVELS
1285typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1286{
1287 [annotation("_In_")] UINT NumFeatureLevels;
1288 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1289 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1290} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1291
1292// D3D_SHADER_MODEL
1293typedef enum D3D_SHADER_MODEL
1294{
1295 D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
1296 D3D_SHADER_MODEL_5_1 = 0x51,
1297 D3D_SHADER_MODEL_6_0 = 0x60,
1298 D3D_SHADER_MODEL_6_1 = 0x61,
1299 D3D_SHADER_MODEL_6_2 = 0x62,
1300 D3D_SHADER_MODEL_6_3 = 0x63,
1301 D3D_SHADER_MODEL_6_4 = 0x64,
1302 D3D_SHADER_MODEL_6_5 = 0x65,
1303 D3D_SHADER_MODEL_6_6 = 0x66,
1304 D3D_SHADER_MODEL_6_7 = 0x67,
1305 D3D_SHADER_MODEL_6_8 = 0x68,
1306 D3D_SHADER_MODEL_6_9 = 0x69,
1307 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
1308} D3D_SHADER_MODEL;
1309
1310typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1311{
1312 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1313} D3D12_FEATURE_DATA_SHADER_MODEL;
1314
1315// D3D12_FEATURE_FORMAT_SUPPORT
1316typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1317{
1318 [annotation("_In_")] DXGI_FORMAT Format;
1319 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1320 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1321} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1322
1323// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1324typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1325{
1326 [annotation("_In_")] DXGI_FORMAT Format;
1327 [annotation("_In_")] UINT SampleCount;
1328 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1329 [annotation("_Out_")] UINT NumQualityLevels;
1330} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1331
1332// D3D12_FEATURE_FORMAT_INFO
1333typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1334{
1335 DXGI_FORMAT Format;
1336 UINT8 PlaneCount;
1337} D3D12_FEATURE_DATA_FORMAT_INFO;
1338
1339// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1340typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1341{
1342 UINT MaxGPUVirtualAddressBitsPerResource;
1343 UINT MaxGPUVirtualAddressBitsPerProcess;
1344} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1345
1346
1347typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1348{
1349 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1350 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1351 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1352 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1353 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1354 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1355 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1356 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1357} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1358cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
1359
1360// D3D12_FEATURE_SHADER_CACHE
1361typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1362{
1363 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1364} D3D12_FEATURE_DATA_SHADER_CACHE;
1365
1366// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1367typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1368{
1369 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1370 [annotation("_In_")] UINT Priority;
1371 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1372} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1373
1374typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1375{
1376 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1377 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1378 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1379 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1380 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1381 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1382 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1383 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1384
1385} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1386cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
1387
1388// D3D12_FEATURE_D3D12_OPTIONS3
1389typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1390{
1391 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1392 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1393 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1394 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1395 [annotation("_Out_")] BOOL BarycentricsSupported;
1396} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1397
1398// D3D12_FEATURE_EXISTING_HEAPS
1399typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1400{
1401 [annotation("_Out_")] BOOL Supported;
1402} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1403
1404typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1405{
1406 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1407 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1408 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1409} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1410
1411typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1412{
1413 [annotation("_Out_")] BOOL DisplayableTexture;
1414 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1415} D3D12_FEATURE_DATA_DISPLAYABLE;
1416
1417// D3D12_FEATURE_D3D12_OPTIONS4
1418typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1419{
1420 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1421 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1422 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1423} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1424
1425typedef enum D3D12_HEAP_SERIALIZATION_TIER
1426{
1427 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1428 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1429} D3D12_HEAP_SERIALIZATION_TIER;
1430
1431// D3D12_FEATURE_SERIALIZATION
1432typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1433{
1434 [annotation("_In_")] UINT NodeIndex;
1435 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1436} D3D12_FEATURE_DATA_SERIALIZATION;
1437
1438// D3D12_FEATURE_CROSS_NODE
1439typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1440{
1441 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1442 BOOL AtomicShaderInstructions;
1443} D3D12_FEATURE_DATA_CROSS_NODE;
1444
1445
1446typedef enum D3D12_RENDER_PASS_TIER
1447{
1448 D3D12_RENDER_PASS_TIER_0 = 0,
1449 D3D12_RENDER_PASS_TIER_1 = 1,
1450 D3D12_RENDER_PASS_TIER_2 = 2,
1451
1452
1453} D3D12_RENDER_PASS_TIER;
1454
1455typedef enum D3D12_RAYTRACING_TIER
1456{
1457 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1458 D3D12_RAYTRACING_TIER_1_0 = 10,
1459 D3D12_RAYTRACING_TIER_1_1 = 11,
1460 D3D12_RAYTRACING_TIER_1_2 = 12,
1461} D3D12_RAYTRACING_TIER;
1462
1463// D3D12_FEATURE_D3D12_OPTIONS5
1464typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1465{
1466 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1467 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1468 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1469} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1470
1471typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1472{
1473 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1474 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1475 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1476} D3D12_VARIABLE_SHADING_RATE_TIER;
1477
1478// D3D12_FEATURE_D3D12_OPTIONS6
1479typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1480{
1481 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1482 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1483 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1484 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1485 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1486} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1487
1488typedef enum D3D12_MESH_SHADER_TIER
1489{
1490 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1491 D3D12_MESH_SHADER_TIER_1 = 10,
1492} D3D12_MESH_SHADER_TIER;
1493
1494typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1495{
1496 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1497 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1498 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1499} D3D12_SAMPLER_FEEDBACK_TIER;
1500
1501// D3D12_FEATURE_D3D12_OPTIONS7
1502typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1503{
1504 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1505 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1506
1507} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1508
1509typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1510{
1511 [annotation("_In_")] GUID CommandId;
1512 [annotation("_In_")] UINT NodeMask;
1513 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1514 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1515 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1516 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1517} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1518
1519// D3D12_FEATURE_D3D12_OPTIONS8
1520typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1521{
1522 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1523} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1524
1525typedef enum D3D12_WAVE_MMA_TIER {
1526 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1527 D3D12_WAVE_MMA_TIER_1_0 = 10,
1528} D3D12_WAVE_MMA_TIER;
1529
1530// D3D12_FEATURE_D3D12_OPTIONS9
1531typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1532{
1533 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1534 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1535 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1536 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1537 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1538 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1539} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1540
1541// D3D12_FEATURE_D3D12_OPTIONS10
1542typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1543{
1544 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1545 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1546} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1547
1548// D3D12_FEATURE_D3D12_OPTIONS11
1549typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1550{
1551 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1552} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1553
1554typedef enum D3D12_TRI_STATE {
1555 D3D12_TRI_STATE_UNKNOWN = -1,
1556 D3D12_TRI_STATE_FALSE = 0,
1557 D3D12_TRI_STATE_TRUE = 1,
1558} D3D12_TRI_STATE;
1559
1560// D3D12_FEATURE_D3D12_OPTIONS12
1561typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
1562{
1563 [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
1564 [annotation("_Out_")] BOOL EnhancedBarriersSupported;
1565 [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
1566} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
1567
1568// D3D12_FEATURE_D3D12_OPTIONS13
1569typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
1570{
1571 [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
1572 [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
1573 [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
1574 [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
1575 [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
1576 [annotation("_Out_")] BOOL AlphaBlendFactorSupported;
1577} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
1578
1579// D3D12_FEATURE_D3D12_OPTIONS14
1580typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
1581{
1582 [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
1583 [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
1584 [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
1585} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
1586
1587// D3D12_FEATURE_D3D12_OPTIONS15
1588typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
1589{
1590 [annotation("_Out_")] BOOL TriangleFanSupported;
1591 [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
1592} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
1593
1594// D3D12_FEATURE_D3D12_OPTIONS16
1595typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
1596{
1597 [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
1598 [annotation("_Out_")] BOOL GPUUploadHeapSupported;
1599} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
1600
1601// D3D12_FEATURE_D3D12_OPTIONS17
1602typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
1603{
1604 [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
1605 [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
1606} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
1607
1608// D3D12_FEATURE_D3D12_OPTIONS18
1609typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
1610{
1611 [annotation("_Out_")] BOOL RenderPassesValid;
1612} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
1613
1614// D3D12_FEATURE_D3D12_OPTIONS19
1615typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
1616{
1617 BOOL MismatchingOutputDimensionsSupported;
1618 UINT SupportedSampleCountsWithNoOutputs;
1619 BOOL PointSamplingAddressesNeverRoundUp;
1620 BOOL RasterizerDesc2Supported;
1621 BOOL NarrowQuadrilateralLinesSupported;
1622 BOOL AnisoFilterWithPointMipSupported;
1623 UINT MaxSamplerDescriptorHeapSize;
1624 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
1625 UINT MaxViewDescriptorHeapSize;
1626 [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
1627} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
1628
1629
1630typedef enum D3D12_RECREATE_AT_TIER
1631{
1632 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
1633
1634 // * Supports retrieving resource and heap allocation information
1635 // with ID3D12PageableTools::GetAllocationInfo
1636 // * Supports setting resource and heap virtual addresses with
1637 // ID3D12DeviceTools::SetNextAllocation
1638 D3D12_RECREATE_AT_TIER_1 = 1,
1639
1640} D3D12_RECREATE_AT_TIER;
1641
1642
1643// D3D12_FEATURE_D3D12_OPTIONS20
1644typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
1645{
1646 [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
1647 D3D12_RECREATE_AT_TIER RecreateAtTier;
1648} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
1649
1650typedef enum D3D12_EXECUTE_INDIRECT_TIER
1651{
1652 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
1653 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
1654} D3D12_EXECUTE_INDIRECT_TIER;
1655
1656typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
1657{
1658 [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
1659 [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
1660 [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
1661 [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
1662} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
1663
1664
1665typedef enum D3D12_TIGHT_ALIGNMENT_TIER
1666{
1667 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED,
1668 D3D12_TIGHT_ALIGNMENT_TIER_1 // Tight alignment of buffers supported
1669} D3D12_TIGHT_ALIGNMENT_TIER;
1670
1671typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
1672{
1673 [annotation("_Out_")] D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
1674} D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
1675
1676
1677typedef struct D3D12_FEATURE_DATA_PREDICATION
1678{
1679 [annotation("_Out_")] BOOL Supported;
1680} D3D12_FEATURE_DATA_PREDICATION;
1681
1682typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
1683{
1684 [annotation("_Out_")] BOOL Supported;
1685} D3D12_FEATURE_DATA_HARDWARE_COPY;
1686
1687typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
1688{
1689 [annotation("_Out_")] BOOL Supported;
1690} D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
1691
1692typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
1693{
1694 [annotation("_Out_")] BOOL Supported;
1695} D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
1696
1697typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1698{
1699 UINT64 SizeInBytes;
1700 UINT64 Alignment;
1701} D3D12_RESOURCE_ALLOCATION_INFO;
1702
1703typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1704{
1705 UINT64 Offset;
1706 UINT64 Alignment;
1707 UINT64 SizeInBytes;
1708} D3D12_RESOURCE_ALLOCATION_INFO1;
1709
1710typedef enum D3D12_HEAP_TYPE
1711{
1712 D3D12_HEAP_TYPE_DEFAULT = 1,
1713 D3D12_HEAP_TYPE_UPLOAD = 2,
1714 D3D12_HEAP_TYPE_READBACK = 3,
1715 D3D12_HEAP_TYPE_CUSTOM = 4,
1716 D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
1717} D3D12_HEAP_TYPE;
1718
1719typedef enum D3D12_CPU_PAGE_PROPERTY
1720{
1721 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1722 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1723 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1724 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1725} D3D12_CPU_PAGE_PROPERTY;
1726
1727typedef enum D3D12_MEMORY_POOL
1728{
1729 D3D12_MEMORY_POOL_UNKNOWN = 0,
1730 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1731 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1732} D3D12_MEMORY_POOL;
1733
1734typedef struct D3D12_HEAP_PROPERTIES
1735{
1736 D3D12_HEAP_TYPE Type;
1737 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1738 D3D12_MEMORY_POOL MemoryPoolPreference;
1739 UINT CreationNodeMask;
1740 UINT VisibleNodeMask;
1741} D3D12_HEAP_PROPERTIES;
1742
1743typedef enum D3D12_HEAP_FLAGS
1744{
1745 D3D12_HEAP_FLAG_NONE = 0x0,
1746 D3D12_HEAP_FLAG_SHARED = 0x1,
1747 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1748 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1749 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1750 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1751 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1752 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1753 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1754 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1755 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1756 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1757 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
1758
1759 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1760 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1761 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1762 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1763 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1764
1765
1766} D3D12_HEAP_FLAGS;
1767cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
1768
1769typedef struct D3D12_HEAP_DESC
1770{
1771 UINT64 SizeInBytes;
1772 D3D12_HEAP_PROPERTIES Properties;
1773 UINT64 Alignment;
1774 D3D12_HEAP_FLAGS Flags;
1775} D3D12_HEAP_DESC;
1776
1777typedef enum D3D12_RESOURCE_DIMENSION
1778{
1779 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1780 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1781 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1782 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1783 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1784} D3D12_RESOURCE_DIMENSION;
1785
1786typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
1787{
1788 [annotation("_In_")] DXGI_FORMAT Format;
1789 [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
1790 [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
1791 [annotation("_Out_")] BOOL Supported;
1792} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
1793
1794typedef enum D3D12_TEXTURE_LAYOUT
1795{
1796 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1797 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1798 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1799 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1800} D3D12_TEXTURE_LAYOUT;
1801
1802typedef enum D3D12_RESOURCE_FLAGS
1803{
1804 D3D12_RESOURCE_FLAG_NONE = 0x0,
1805 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1806 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1807 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1808 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1809 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1810 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1811 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1812 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1813 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
1814 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400,
1815
1816} D3D12_RESOURCE_FLAGS;
1817cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
1818
1819typedef struct D3D12_MIP_REGION
1820{
1821 UINT Width;
1822 UINT Height;
1823 UINT Depth;
1824} D3D12_MIP_REGION;
1825
1826typedef struct D3D12_RESOURCE_DESC
1827{
1828 D3D12_RESOURCE_DIMENSION Dimension;
1829 UINT64 Alignment;
1830 UINT64 Width;
1831 UINT Height;
1832 UINT16 DepthOrArraySize;
1833 UINT16 MipLevels;
1834 DXGI_FORMAT Format;
1835 DXGI_SAMPLE_DESC SampleDesc;
1836 D3D12_TEXTURE_LAYOUT Layout;
1837 D3D12_RESOURCE_FLAGS Flags;
1838} D3D12_RESOURCE_DESC;
1839
1840typedef struct D3D12_RESOURCE_DESC1
1841{
1842 D3D12_RESOURCE_DIMENSION Dimension;
1843 UINT64 Alignment;
1844 UINT64 Width;
1845 UINT Height;
1846 UINT16 DepthOrArraySize;
1847 UINT16 MipLevels;
1848 DXGI_FORMAT Format;
1849 DXGI_SAMPLE_DESC SampleDesc;
1850 D3D12_TEXTURE_LAYOUT Layout;
1851 D3D12_RESOURCE_FLAGS Flags;
1852 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1853} D3D12_RESOURCE_DESC1;
1854
1855
1856
1857typedef struct D3D12_DEPTH_STENCIL_VALUE
1858{
1859 FLOAT Depth;
1860 UINT8 Stencil;
1861} D3D12_DEPTH_STENCIL_VALUE;
1862
1863typedef struct D3D12_CLEAR_VALUE
1864{
1865 DXGI_FORMAT Format;
1866 union
1867 {
1868 FLOAT Color[4];
1869 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1870 };
1871} D3D12_CLEAR_VALUE;
1872
1873typedef struct D3D12_RANGE
1874{
1875 SIZE_T Begin;
1876 SIZE_T End; // One past end, so (End - Begin) = Size
1877} D3D12_RANGE;
1878
1879typedef struct D3D12_RANGE_UINT64
1880{
1881 UINT64 Begin;
1882 UINT64 End; // One past end, so (End - Begin) = Size
1883} D3D12_RANGE_UINT64;
1884
1885typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1886{
1887 UINT Subresource;
1888 D3D12_RANGE_UINT64 Range;
1889} D3D12_SUBRESOURCE_RANGE_UINT64;
1890
1891typedef struct D3D12_SUBRESOURCE_INFO
1892{
1893 UINT64 Offset;
1894 UINT RowPitch;
1895 UINT DepthPitch;
1896} D3D12_SUBRESOURCE_INFO;
1897
1898typedef struct D3D12_TILED_RESOURCE_COORDINATE
1899{
1900 UINT X;
1901 UINT Y;
1902 UINT Z;
1903 UINT Subresource;
1904} D3D12_TILED_RESOURCE_COORDINATE;
1905
1906typedef struct D3D12_TILE_REGION_SIZE
1907{
1908 UINT NumTiles;
1909 BOOL UseBox;
1910 UINT Width;
1911 UINT16 Height;
1912 UINT16 Depth;
1913} D3D12_TILE_REGION_SIZE;
1914
1915typedef enum D3D12_TILE_RANGE_FLAGS
1916{
1917 D3D12_TILE_RANGE_FLAG_NONE = 0,
1918 D3D12_TILE_RANGE_FLAG_NULL = 1,
1919 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1920 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1921
1922} D3D12_TILE_RANGE_FLAGS;
1923
1924typedef struct D3D12_SUBRESOURCE_TILING
1925{
1926 UINT WidthInTiles;
1927 UINT16 HeightInTiles;
1928 UINT16 DepthInTiles;
1929 UINT StartTileIndexInOverallResource;
1930} D3D12_SUBRESOURCE_TILING;
1931
1932typedef struct D3D12_TILE_SHAPE
1933{
1934 UINT WidthInTexels;
1935 UINT HeightInTexels;
1936 UINT DepthInTexels;
1937} D3D12_TILE_SHAPE;
1938
1939typedef struct D3D12_PACKED_MIP_INFO
1940{
1941 UINT8 NumStandardMips;
1942 UINT8 NumPackedMips;
1943 UINT NumTilesForPackedMips;
1944 UINT StartTileIndexInOverallResource;
1945} D3D12_PACKED_MIP_INFO;
1946
1947typedef enum D3D12_TILE_MAPPING_FLAGS
1948{
1949 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1950 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1951} D3D12_TILE_MAPPING_FLAGS;
1952cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
1953
1954typedef enum D3D12_TILE_COPY_FLAGS
1955{
1956 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1957 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1958 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1959 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1960} D3D12_TILE_COPY_FLAGS;
1961cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
1962
1963// Resource Barrier
1964typedef enum D3D12_RESOURCE_STATES
1965{
1966 D3D12_RESOURCE_STATE_COMMON = 0,
1967
1968 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1969 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1970 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1971 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1972 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1973 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1974 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1975 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1976 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1977 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1978 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1979 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1980 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1981 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1982 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1983 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1984
1985 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
1986 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
1987 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
1988 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
1989 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
1990
1991 D3D12_RESOURCE_STATE_GENERIC_READ =
1992 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1993 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1994 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1995 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1996 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1997 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1998
1999 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
2000 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
2001 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
2002
2003 D3D12_RESOURCE_STATE_PRESENT = 0,
2004 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
2005
2006 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
2007 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
2008 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
2009 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
2010 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
2011 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
2012
2013} D3D12_RESOURCE_STATES;
2014cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
2015
2016typedef enum D3D12_RESOURCE_BARRIER_TYPE
2017{
2018 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
2019 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
2020 D3D12_RESOURCE_BARRIER_TYPE_UAV,
2021} D3D12_RESOURCE_BARRIER_TYPE;
2022
2023interface ID3D12Resource;
2024
2025typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2026{
2027 ID3D12Resource* pResource;
2028 UINT Subresource;
2029 D3D12_RESOURCE_STATES StateBefore;
2030 D3D12_RESOURCE_STATES StateAfter;
2031} D3D12_RESOURCE_TRANSITION_BARRIER;
2032
2033typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2034{
2035 ID3D12Resource* pResourceBefore;
2036 ID3D12Resource* pResourceAfter;
2037} D3D12_RESOURCE_ALIASING_BARRIER;
2038
2039typedef struct D3D12_RESOURCE_UAV_BARRIER
2040{
2041 ID3D12Resource* pResource;
2042} D3D12_RESOURCE_UAV_BARRIER;
2043
2044typedef enum D3D12_RESOURCE_BARRIER_FLAGS
2045{
2046 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
2047 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2048 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
2049} D3D12_RESOURCE_BARRIER_FLAGS;
2050cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
2051
2052typedef struct D3D12_RESOURCE_BARRIER
2053{
2054 D3D12_RESOURCE_BARRIER_TYPE Type;
2055 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2056
2057 union
2058 {
2059 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2060 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2061 D3D12_RESOURCE_UAV_BARRIER UAV;
2062 };
2063} D3D12_RESOURCE_BARRIER;
2064
2065typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2066{
2067 DXGI_FORMAT Format;
2068 UINT Width;
2069 UINT Height;
2070 UINT Depth;
2071 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
2072} D3D12_SUBRESOURCE_FOOTPRINT;
2073
2074typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2075{
2076 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
2077 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2078} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2079
2080typedef enum D3D12_TEXTURE_COPY_TYPE
2081{
2082 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2083 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
2084} D3D12_TEXTURE_COPY_TYPE;
2085
2086typedef struct D3D12_TEXTURE_COPY_LOCATION
2087{
2088 ID3D12Resource* pResource;
2089 D3D12_TEXTURE_COPY_TYPE Type;
2090 union
2091 {
2092 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2093 UINT SubresourceIndex;
2094 };
2095} D3D12_TEXTURE_COPY_LOCATION;
2096
2097typedef enum D3D12_RESOLVE_MODE
2098{
2099 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2100 D3D12_RESOLVE_MODE_MIN = 1,
2101 D3D12_RESOLVE_MODE_MAX = 2,
2102 D3D12_RESOLVE_MODE_AVERAGE = 3,
2103 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2104 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2105} D3D12_RESOLVE_MODE;
2106
2107typedef struct D3D12_SAMPLE_POSITION
2108{
2109 INT8 X;
2110 INT8 Y;
2111} D3D12_SAMPLE_POSITION;
2112
2113typedef struct D3D12_VIEW_INSTANCE_LOCATION
2114{
2115 UINT ViewportArrayIndex;
2116 UINT RenderTargetArrayIndex;
2117} D3D12_VIEW_INSTANCE_LOCATION;
2118
2119typedef enum D3D12_VIEW_INSTANCING_FLAGS
2120{
2121 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
2122 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
2123} D3D12_VIEW_INSTANCING_FLAGS;
2124cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
2125
2126typedef struct D3D12_VIEW_INSTANCING_DESC
2127{
2128 UINT ViewInstanceCount;
2129 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
2130 D3D12_VIEW_INSTANCING_FLAGS Flags;
2131} D3D12_VIEW_INSTANCING_DESC;
2132
2133// D3D12 view descriptions
2134typedef enum D3D12_SHADER_COMPONENT_MAPPING
2135{
2136 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2137 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2138 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2139 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2140 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2141 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
2142} D3D12_SHADER_COMPONENT_MAPPING;
2143
2144cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
2145cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
2146cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
2147cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
2148cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
2149cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
2150cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
2151cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
2152cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
2153cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
2154typedef enum D3D12_BUFFER_SRV_FLAGS
2155{
2156 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2157 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
2158} D3D12_BUFFER_SRV_FLAGS;
2159cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
2160
2161typedef struct D3D12_BUFFER_SRV
2162{
2163 UINT64 FirstElement;
2164 UINT NumElements;
2165 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2166 D3D12_BUFFER_SRV_FLAGS Flags;
2167} D3D12_BUFFER_SRV;
2168
2169typedef struct D3D12_TEX1D_SRV
2170{
2171 UINT MostDetailedMip;
2172 UINT MipLevels;
2173 FLOAT ResourceMinLODClamp;
2174} D3D12_TEX1D_SRV;
2175
2176typedef struct D3D12_TEX1D_ARRAY_SRV
2177{
2178 UINT MostDetailedMip;
2179 UINT MipLevels;
2180 UINT FirstArraySlice;
2181 UINT ArraySize;
2182 FLOAT ResourceMinLODClamp;
2183} D3D12_TEX1D_ARRAY_SRV;
2184
2185typedef struct D3D12_TEX2D_SRV
2186{
2187 UINT MostDetailedMip;
2188 UINT MipLevels;
2189 UINT PlaneSlice;
2190 FLOAT ResourceMinLODClamp;
2191} D3D12_TEX2D_SRV;
2192
2193typedef struct D3D12_TEX2D_ARRAY_SRV
2194{
2195 UINT MostDetailedMip;
2196 UINT MipLevels;
2197 UINT FirstArraySlice;
2198 UINT ArraySize;
2199 UINT PlaneSlice;
2200 FLOAT ResourceMinLODClamp;
2201} D3D12_TEX2D_ARRAY_SRV;
2202
2203typedef struct D3D12_TEX3D_SRV
2204{
2205 UINT MostDetailedMip;
2206 UINT MipLevels;
2207 FLOAT ResourceMinLODClamp;
2208} D3D12_TEX3D_SRV;
2209
2210typedef struct D3D12_TEXCUBE_SRV
2211{
2212 UINT MostDetailedMip;
2213 UINT MipLevels;
2214 FLOAT ResourceMinLODClamp;
2215} D3D12_TEXCUBE_SRV;
2216
2217typedef struct D3D12_TEXCUBE_ARRAY_SRV
2218{
2219 UINT MostDetailedMip;
2220 UINT MipLevels;
2221 UINT First2DArrayFace;
2222 UINT NumCubes;
2223 FLOAT ResourceMinLODClamp;
2224} D3D12_TEXCUBE_ARRAY_SRV;
2225
2226typedef struct D3D12_TEX2DMS_SRV
2227{
2228 // don't need to define anything specific for this view dimension
2229 UINT UnusedField_NothingToDefine;
2230} D3D12_TEX2DMS_SRV;
2231
2232typedef struct D3D12_TEX2DMS_ARRAY_SRV
2233{
2234 UINT FirstArraySlice;
2235 UINT ArraySize;
2236} D3D12_TEX2DMS_ARRAY_SRV;
2237
2238typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
2239{
2240 D3D12_GPU_VIRTUAL_ADDRESS Location;
2241} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
2242
2243typedef enum D3D12_SRV_DIMENSION {
2244 D3D12_SRV_DIMENSION_UNKNOWN = 0,
2245 D3D12_SRV_DIMENSION_BUFFER = 1,
2246 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
2247 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
2248 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
2249 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
2250 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
2251 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
2252 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
2253 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
2254 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
2255 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
2256} D3D12_SRV_DIMENSION;
2257
2258typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
2259{
2260 DXGI_FORMAT Format;
2261 D3D12_SRV_DIMENSION ViewDimension;
2262 UINT Shader4ComponentMapping;
2263
2264 union
2265 {
2266 D3D12_BUFFER_SRV Buffer;
2267 D3D12_TEX1D_SRV Texture1D;
2268 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
2269 D3D12_TEX2D_SRV Texture2D;
2270 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
2271 D3D12_TEX2DMS_SRV Texture2DMS;
2272 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
2273 D3D12_TEX3D_SRV Texture3D;
2274 D3D12_TEXCUBE_SRV TextureCube;
2275 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
2276 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
2277 };
2278} D3D12_SHADER_RESOURCE_VIEW_DESC;
2279
2280typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
2281{
2282 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2283 UINT SizeInBytes;
2284} D3D12_CONSTANT_BUFFER_VIEW_DESC;
2285
2286////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2287//
2288// Sampler
2289//
2290////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2291typedef enum D3D12_FILTER
2292{
2293 // Bits used in defining enumeration of valid filters:
2294 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
2295 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
2296 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
2297 // bit [6] - aniso
2298 // bits [8:7] - reduction type:
2299 // 0 == standard filtering
2300 // 1 == comparison
2301 // 2 == min
2302 // 3 == max
2303 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
2304
2305 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
2306 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
2307 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
2308 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
2309 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
2310 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
2311 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
2312 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
2313 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000054,
2314 D3D12_FILTER_ANISOTROPIC = 0x00000055,
2315 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
2316 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
2317 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2318 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2319 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2320 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2321 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2322 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2323 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000000d4,
2324 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2325 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2326 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2327 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2328 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2329 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2330 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2331 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2332 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2333 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000154,
2334 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2335 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2336 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2337 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2338 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2339 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2340 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2341 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2342 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2343 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000001d4,
2344 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2345} D3D12_FILTER;
2346
2347typedef enum D3D12_FILTER_TYPE
2348{
2349 D3D12_FILTER_TYPE_POINT = 0,
2350 D3D12_FILTER_TYPE_LINEAR = 1,
2351} D3D12_FILTER_TYPE;
2352
2353typedef enum D3D12_FILTER_REDUCTION_TYPE
2354{
2355 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2356 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2357 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2358 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2359} D3D12_FILTER_REDUCTION_TYPE;
2360
2361const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2362const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2363
2364const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2365const UINT D3D12_MIN_FILTER_SHIFT = 4;
2366const UINT D3D12_MAG_FILTER_SHIFT = 2;
2367const UINT D3D12_MIP_FILTER_SHIFT = 0;
2368
2369const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2370
2371// encode enum entry for most filters except anisotropic filtering
2372cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2373cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2374cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2375cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2376cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2377cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2378
2379// encode enum entry for anisotropic filtering (with or without comparison filtering)
2380cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2381cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2382cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2383cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2384cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2385cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2386cpp_quote( " reduction ) ) ) " )
2387cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \\" )
2388cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2389cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2390cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2391cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2392cpp_quote( " D3D12_FILTER_TYPE_POINT, \\" )
2393cpp_quote( " reduction ) ) ) " )
2394
2395cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2396cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2397cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2398
2399cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2400cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2401cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2402
2403cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2404cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2405cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2406
2407cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2408cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2409cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2410
2411cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2412cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2413
2414cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2415cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2416cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2417cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) ) " )
2418
2419typedef enum D3D12_TEXTURE_ADDRESS_MODE
2420{
2421 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2422 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2423 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2424 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2425 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2426} D3D12_TEXTURE_ADDRESS_MODE;
2427
2428
2429
2430typedef struct D3D12_SAMPLER_DESC
2431{
2432 D3D12_FILTER Filter;
2433 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2434 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2435 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2436 FLOAT MipLODBias;
2437 UINT MaxAnisotropy;
2438 D3D12_COMPARISON_FUNC ComparisonFunc;
2439 FLOAT BorderColor[4]; // RGBA
2440 FLOAT MinLOD;
2441 FLOAT MaxLOD;
2442} D3D12_SAMPLER_DESC;
2443
2444
2445typedef enum D3D12_SAMPLER_FLAGS
2446{
2447 D3D12_SAMPLER_FLAG_NONE = 0x0,
2448 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
2449 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
2450} D3D12_SAMPLER_FLAGS;
2451cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
2452
2453typedef struct D3D12_SAMPLER_DESC2
2454{
2455 D3D12_FILTER Filter;
2456 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2457 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2458 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2459 FLOAT MipLODBias;
2460 UINT MaxAnisotropy;
2461 D3D12_COMPARISON_FUNC ComparisonFunc;
2462 union
2463 {
2464 FLOAT FloatBorderColor[4]; // RGBA
2465 UINT UintBorderColor[4];
2466 };
2467 FLOAT MinLOD;
2468 FLOAT MaxLOD;
2469 D3D12_SAMPLER_FLAGS Flags;
2470} D3D12_SAMPLER_DESC2;
2471
2472
2473
2474typedef enum D3D12_BUFFER_UAV_FLAGS
2475{
2476 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2477 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2478} D3D12_BUFFER_UAV_FLAGS;
2479cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
2480
2481typedef struct D3D12_BUFFER_UAV
2482{
2483 UINT64 FirstElement;
2484 UINT NumElements;
2485 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2486 UINT64 CounterOffsetInBytes;
2487 D3D12_BUFFER_UAV_FLAGS Flags;
2488} D3D12_BUFFER_UAV;
2489
2490typedef struct D3D12_TEX1D_UAV
2491{
2492 UINT MipSlice;
2493} D3D12_TEX1D_UAV;
2494
2495typedef struct D3D12_TEX1D_ARRAY_UAV
2496{
2497 UINT MipSlice;
2498 UINT FirstArraySlice;
2499 UINT ArraySize;
2500} D3D12_TEX1D_ARRAY_UAV;
2501
2502typedef struct D3D12_TEX2D_UAV
2503{
2504 UINT MipSlice;
2505 UINT PlaneSlice;
2506} D3D12_TEX2D_UAV;
2507
2508typedef struct D3D12_TEX2D_ARRAY_UAV
2509{
2510 UINT MipSlice;
2511 UINT FirstArraySlice;
2512 UINT ArraySize;
2513 UINT PlaneSlice;
2514} D3D12_TEX2D_ARRAY_UAV;
2515
2516typedef struct D3D12_TEX2DMS_UAV
2517{
2518 // don't need to define anything specific for this view dimension
2519 UINT UnusedField_NothingToDefine;
2520} D3D12_TEX2DMS_UAV;
2521
2522typedef struct D3D12_TEX2DMS_ARRAY_UAV
2523{
2524 UINT FirstArraySlice;
2525 UINT ArraySize;
2526} D3D12_TEX2DMS_ARRAY_UAV;
2527
2528typedef struct D3D12_TEX3D_UAV
2529{
2530 UINT MipSlice;
2531 UINT FirstWSlice;
2532 UINT WSize;
2533} D3D12_TEX3D_UAV;
2534
2535typedef enum D3D12_UAV_DIMENSION
2536{
2537 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2538 D3D12_UAV_DIMENSION_BUFFER = 1,
2539 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2540 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2541 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2542 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2543 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
2544 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
2545 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2546} D3D12_UAV_DIMENSION;
2547
2548typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2549{
2550 DXGI_FORMAT Format;
2551 D3D12_UAV_DIMENSION ViewDimension;
2552
2553 union
2554 {
2555 D3D12_BUFFER_UAV Buffer;
2556 D3D12_TEX1D_UAV Texture1D;
2557 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2558 D3D12_TEX2D_UAV Texture2D;
2559 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2560 D3D12_TEX2DMS_UAV Texture2DMS;
2561 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
2562 D3D12_TEX3D_UAV Texture3D;
2563 };
2564} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2565
2566typedef struct D3D12_BUFFER_RTV
2567{
2568 UINT64 FirstElement;
2569 UINT NumElements;
2570} D3D12_BUFFER_RTV;
2571
2572typedef struct D3D12_TEX1D_RTV
2573{
2574 UINT MipSlice;
2575} D3D12_TEX1D_RTV;
2576
2577typedef struct D3D12_TEX1D_ARRAY_RTV
2578{
2579 UINT MipSlice;
2580 UINT FirstArraySlice;
2581 UINT ArraySize;
2582} D3D12_TEX1D_ARRAY_RTV;
2583
2584typedef struct D3D12_TEX2D_RTV
2585{
2586 UINT MipSlice;
2587 UINT PlaneSlice;
2588} D3D12_TEX2D_RTV;
2589
2590typedef struct D3D12_TEX2DMS_RTV
2591{
2592 UINT UnusedField_NothingToDefine;
2593} D3D12_TEX2DMS_RTV;
2594
2595typedef struct D3D12_TEX2D_ARRAY_RTV
2596{
2597 UINT MipSlice;
2598 UINT FirstArraySlice;
2599 UINT ArraySize;
2600 UINT PlaneSlice;
2601} D3D12_TEX2D_ARRAY_RTV;
2602
2603typedef struct D3D12_TEX2DMS_ARRAY_RTV
2604{
2605 UINT FirstArraySlice;
2606 UINT ArraySize;
2607} D3D12_TEX2DMS_ARRAY_RTV;
2608
2609typedef struct D3D12_TEX3D_RTV
2610{
2611 UINT MipSlice;
2612 UINT FirstWSlice;
2613 UINT WSize;
2614} D3D12_TEX3D_RTV;
2615
2616typedef enum D3D12_RTV_DIMENSION
2617{
2618 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2619 D3D12_RTV_DIMENSION_BUFFER = 1,
2620 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2621 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2622 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2623 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2624 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2625 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2626 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2627} D3D12_RTV_DIMENSION;
2628
2629typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2630{
2631 DXGI_FORMAT Format;
2632 D3D12_RTV_DIMENSION ViewDimension;
2633
2634 union
2635 {
2636 D3D12_BUFFER_RTV Buffer;
2637 D3D12_TEX1D_RTV Texture1D;
2638 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2639 D3D12_TEX2D_RTV Texture2D;
2640 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2641 D3D12_TEX2DMS_RTV Texture2DMS;
2642 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2643 D3D12_TEX3D_RTV Texture3D;
2644 };
2645} D3D12_RENDER_TARGET_VIEW_DESC;
2646
2647typedef struct D3D12_TEX1D_DSV
2648{
2649 UINT MipSlice;
2650} D3D12_TEX1D_DSV;
2651
2652typedef struct D3D12_TEX1D_ARRAY_DSV
2653{
2654 UINT MipSlice;
2655 UINT FirstArraySlice;
2656 UINT ArraySize;
2657} D3D12_TEX1D_ARRAY_DSV;
2658
2659typedef struct D3D12_TEX2D_DSV
2660{
2661 UINT MipSlice;
2662} D3D12_TEX2D_DSV;
2663
2664typedef struct D3D12_TEX2D_ARRAY_DSV
2665{
2666 UINT MipSlice;
2667 UINT FirstArraySlice;
2668 UINT ArraySize;
2669} D3D12_TEX2D_ARRAY_DSV;
2670
2671typedef struct D3D12_TEX2DMS_DSV
2672{
2673 UINT UnusedField_NothingToDefine;
2674} D3D12_TEX2DMS_DSV;
2675
2676typedef struct D3D12_TEX2DMS_ARRAY_DSV
2677{
2678 UINT FirstArraySlice;
2679 UINT ArraySize;
2680} D3D12_TEX2DMS_ARRAY_DSV;
2681
2682typedef enum D3D12_DSV_FLAGS
2683{
2684 D3D12_DSV_FLAG_NONE = 0x0,
2685 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2686 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2687} D3D12_DSV_FLAGS;
2688cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
2689
2690typedef enum D3D12_DSV_DIMENSION
2691{
2692 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2693 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2694 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2695 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2696 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2697 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2698 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2699} D3D12_DSV_DIMENSION;
2700
2701typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2702{
2703 DXGI_FORMAT Format;
2704 D3D12_DSV_DIMENSION ViewDimension;
2705 D3D12_DSV_FLAGS Flags;
2706
2707 union
2708 {
2709 D3D12_TEX1D_DSV Texture1D;
2710 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2711 D3D12_TEX2D_DSV Texture2D;
2712 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2713 D3D12_TEX2DMS_DSV Texture2DMS;
2714 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2715 };
2716} D3D12_DEPTH_STENCIL_VIEW_DESC;
2717
2718typedef enum D3D12_CLEAR_FLAGS
2719{
2720 // Intentionally no flag for NONE
2721 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2722 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2723} D3D12_CLEAR_FLAGS;
2724cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
2725
2726typedef enum D3D12_FENCE_FLAGS
2727{
2728 D3D12_FENCE_FLAG_NONE = 0x0,
2729 D3D12_FENCE_FLAG_SHARED = 0x1,
2730 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2731 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2732} D3D12_FENCE_FLAGS;
2733cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
2734
2735typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2736{
2737 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2738 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2739 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2740 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2741 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2742} D3D12_DESCRIPTOR_HEAP_TYPE;
2743
2744typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2745{
2746 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2747 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2748} D3D12_DESCRIPTOR_HEAP_FLAGS;
2749cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
2750
2751typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2752{
2753 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2754 UINT NumDescriptors;
2755 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2756 UINT NodeMask;
2757} D3D12_DESCRIPTOR_HEAP_DESC;
2758
2759typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2760{
2761 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2762 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2763 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2764 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2765} D3D12_DESCRIPTOR_RANGE_TYPE;
2766
2767typedef struct D3D12_DESCRIPTOR_RANGE
2768{
2769 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2770 UINT NumDescriptors;
2771 UINT BaseShaderRegister;
2772 UINT RegisterSpace;
2773 UINT OffsetInDescriptorsFromTableStart;
2774} D3D12_DESCRIPTOR_RANGE;
2775
2776
2777typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2778{
2779 UINT NumDescriptorRanges;
2780 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2781} D3D12_ROOT_DESCRIPTOR_TABLE;
2782
2783
2784typedef struct D3D12_ROOT_CONSTANTS
2785{
2786 UINT ShaderRegister;
2787 UINT RegisterSpace;
2788 UINT Num32BitValues;
2789} D3D12_ROOT_CONSTANTS;
2790
2791typedef struct D3D12_ROOT_DESCRIPTOR
2792{
2793 UINT ShaderRegister;
2794 UINT RegisterSpace;
2795} D3D12_ROOT_DESCRIPTOR;
2796
2797typedef enum D3D12_SHADER_VISIBILITY
2798{
2799 D3D12_SHADER_VISIBILITY_ALL = 0,
2800 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2801 D3D12_SHADER_VISIBILITY_HULL = 2,
2802 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2803 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2804 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2805 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2806 D3D12_SHADER_VISIBILITY_MESH = 7,
2807} D3D12_SHADER_VISIBILITY;
2808
2809typedef enum D3D12_ROOT_PARAMETER_TYPE
2810{
2811 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2812 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2813 D3D12_ROOT_PARAMETER_TYPE_CBV,
2814 D3D12_ROOT_PARAMETER_TYPE_SRV,
2815 D3D12_ROOT_PARAMETER_TYPE_UAV
2816} D3D12_ROOT_PARAMETER_TYPE;
2817
2818typedef struct D3D12_ROOT_PARAMETER
2819{
2820 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2821 union
2822 {
2823 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2824 D3D12_ROOT_CONSTANTS Constants;
2825 D3D12_ROOT_DESCRIPTOR Descriptor;
2826 };
2827 D3D12_SHADER_VISIBILITY ShaderVisibility;
2828} D3D12_ROOT_PARAMETER;
2829
2830typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2831{
2832 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2833 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2834 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2835 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2836 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2837 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2838 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2839 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2840 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2841 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2842 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2843 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2844 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2845} D3D12_ROOT_SIGNATURE_FLAGS;
2846cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
2847
2848
2849typedef enum D3D12_STATIC_BORDER_COLOR
2850{
2851 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2852 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2853 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2854 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
2855 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT, // 1,1,1,1
2856
2857} D3D12_STATIC_BORDER_COLOR;
2858
2859typedef struct D3D12_STATIC_SAMPLER_DESC
2860{
2861 D3D12_FILTER Filter;
2862 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2863 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2864 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2865 FLOAT MipLODBias;
2866 UINT MaxAnisotropy;
2867 D3D12_COMPARISON_FUNC ComparisonFunc;
2868 D3D12_STATIC_BORDER_COLOR BorderColor;
2869 FLOAT MinLOD;
2870 FLOAT MaxLOD;
2871 UINT ShaderRegister;
2872 UINT RegisterSpace;
2873 D3D12_SHADER_VISIBILITY ShaderVisibility;
2874} D3D12_STATIC_SAMPLER_DESC;
2875
2876typedef struct D3D12_STATIC_SAMPLER_DESC1
2877{
2878 D3D12_FILTER Filter;
2879 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2880 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2881 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2882 FLOAT MipLODBias;
2883 UINT MaxAnisotropy;
2884 D3D12_COMPARISON_FUNC ComparisonFunc;
2885 D3D12_STATIC_BORDER_COLOR BorderColor;
2886 FLOAT MinLOD;
2887 FLOAT MaxLOD;
2888 UINT ShaderRegister;
2889 UINT RegisterSpace;
2890 D3D12_SHADER_VISIBILITY ShaderVisibility;
2891 D3D12_SAMPLER_FLAGS Flags;
2892} D3D12_STATIC_SAMPLER_DESC1;
2893
2894typedef struct D3D12_ROOT_SIGNATURE_DESC
2895{
2896 UINT NumParameters;
2897 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2898 UINT NumStaticSamplers;
2899 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2900 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2901} D3D12_ROOT_SIGNATURE_DESC;
2902
2903typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2904{
2905 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2906 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2907 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2908 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2909 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2910 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2911} D3D12_DESCRIPTOR_RANGE_FLAGS;
2912cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
2913
2914typedef struct D3D12_DESCRIPTOR_RANGE1
2915{
2916 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2917 UINT NumDescriptors;
2918 UINT BaseShaderRegister;
2919 UINT RegisterSpace;
2920 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2921 UINT OffsetInDescriptorsFromTableStart;
2922} D3D12_DESCRIPTOR_RANGE1;
2923
2924typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2925{
2926 UINT NumDescriptorRanges;
2927 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2928} D3D12_ROOT_DESCRIPTOR_TABLE1;
2929
2930typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2931{
2932 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2933 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2934 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2935 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2936} D3D12_ROOT_DESCRIPTOR_FLAGS;
2937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
2938
2939typedef struct D3D12_ROOT_DESCRIPTOR1
2940{
2941 UINT ShaderRegister;
2942 UINT RegisterSpace;
2943 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2944} D3D12_ROOT_DESCRIPTOR1;
2945
2946typedef struct D3D12_ROOT_PARAMETER1
2947{
2948 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2949 union
2950 {
2951 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2952 D3D12_ROOT_CONSTANTS Constants;
2953 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2954 };
2955 D3D12_SHADER_VISIBILITY ShaderVisibility;
2956} D3D12_ROOT_PARAMETER1;
2957
2958typedef struct D3D12_ROOT_SIGNATURE_DESC1
2959{
2960 UINT NumParameters;
2961 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2962 UINT NumStaticSamplers;
2963 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2964 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2965} D3D12_ROOT_SIGNATURE_DESC1;
2966
2967typedef struct D3D12_ROOT_SIGNATURE_DESC2
2968{
2969 UINT NumParameters;
2970 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2971 UINT NumStaticSamplers;
2972 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
2973 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2974} D3D12_ROOT_SIGNATURE_DESC2;
2975
2976
2977typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2978{
2979 D3D_ROOT_SIGNATURE_VERSION Version;
2980 union
2981 {
2982 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2983 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2984 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
2985 };
2986} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2987
2988[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2989interface ID3D12RootSignatureDeserializer
2990 : IUnknown
2991{
2992 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2993};
2994
2995[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2996interface ID3D12VersionedRootSignatureDeserializer
2997 : IUnknown
2998{
2999 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
3000 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
3001};
3002
3003cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
3004cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3005cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3006cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3007cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3008cpp_quote( "" )
3009cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
3010cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3011cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3012cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3013cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3014cpp_quote( "" )
3015cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
3016cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3017cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3018cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3019cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3020cpp_quote( "" )
3021cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
3022cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3023cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3024cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3025cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3026cpp_quote( "" )
3027cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
3028cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3029cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3030cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3031cpp_quote( "" )
3032cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
3033cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3034cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3035cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3036cpp_quote( "" )
3037cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
3038cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3039cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3040cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3041cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3042cpp_quote( "" )
3043cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
3044cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3045cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3046cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3047cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3048cpp_quote( "" )
3049cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
3050cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3051cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3052cpp_quote(" _In_ LPCWSTR RootSignatureSubobjectName,")
3053cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3054cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3055cpp_quote("")
3056cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
3057cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3058cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3059cpp_quote(" _In_opt_ LPCWSTR RootSignatureSubobjectName,")
3060cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3061cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3062cpp_quote("")
3063
3064typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3065{
3066 SIZE_T ptr;
3067} D3D12_CPU_DESCRIPTOR_HANDLE;
3068
3069
3070typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3071{
3072 UINT64 ptr;
3073} D3D12_GPU_DESCRIPTOR_HANDLE;
3074
3075cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
3076cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
3077typedef struct D3D12_DISCARD_REGION
3078{
3079 UINT NumRects;
3080 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
3081 UINT FirstSubresource;
3082 UINT NumSubresources;
3083} D3D12_DISCARD_REGION;
3084
3085typedef enum D3D12_QUERY_HEAP_TYPE
3086{
3087 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3088 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3089 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3090 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3091 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3092 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3093 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
3094
3095} D3D12_QUERY_HEAP_TYPE;
3096
3097typedef struct D3D12_QUERY_HEAP_DESC
3098{
3099 D3D12_QUERY_HEAP_TYPE Type;
3100 UINT Count;
3101 UINT NodeMask;
3102} D3D12_QUERY_HEAP_DESC;
3103
3104typedef enum D3D12_QUERY_TYPE
3105{
3106 D3D12_QUERY_TYPE_OCCLUSION = 0,
3107 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3108 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3109 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3110 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3111 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3112 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3113 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3114 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3115 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
3116
3117} D3D12_QUERY_TYPE;
3118
3119typedef enum D3D12_PREDICATION_OP
3120{
3121 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3122 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
3123} D3D12_PREDICATION_OP;
3124
3125typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3126{
3127 UINT64 IAVertices;
3128 UINT64 IAPrimitives;
3129 UINT64 VSInvocations;
3130 UINT64 GSInvocations;
3131 UINT64 GSPrimitives;
3132 UINT64 CInvocations;
3133 UINT64 CPrimitives;
3134 UINT64 PSInvocations;
3135 UINT64 HSInvocations;
3136 UINT64 DSInvocations;
3137 UINT64 CSInvocations;
3138} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
3139
3140typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
3141{
3142 UINT64 IAVertices;
3143 UINT64 IAPrimitives;
3144 UINT64 VSInvocations;
3145 UINT64 GSInvocations;
3146 UINT64 GSPrimitives;
3147 UINT64 CInvocations;
3148 UINT64 CPrimitives;
3149 UINT64 PSInvocations;
3150 UINT64 HSInvocations;
3151 UINT64 DSInvocations;
3152 UINT64 CSInvocations;
3153 UINT64 ASInvocations;
3154 UINT64 MSInvocations;
3155 UINT64 MSPrimitives;
3156} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
3157
3158typedef struct D3D12_QUERY_DATA_SO_STATISTICS
3159{
3160 UINT64 NumPrimitivesWritten;
3161 UINT64 PrimitivesStorageNeeded;
3162} D3D12_QUERY_DATA_SO_STATISTICS;
3163
3164typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
3165{
3166 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3167 UINT64 SizeInBytes;
3168 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
3169} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
3170
3171typedef struct D3D12_DRAW_ARGUMENTS
3172{
3173 UINT VertexCountPerInstance;
3174 UINT InstanceCount;
3175 UINT StartVertexLocation;
3176 UINT StartInstanceLocation;
3177} D3D12_DRAW_ARGUMENTS;
3178
3179typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
3180{
3181 UINT IndexCountPerInstance;
3182 UINT InstanceCount;
3183 UINT StartIndexLocation;
3184 INT BaseVertexLocation;
3185 UINT StartInstanceLocation;
3186} D3D12_DRAW_INDEXED_ARGUMENTS;
3187
3188typedef struct D3D12_DISPATCH_ARGUMENTS
3189{
3190 UINT ThreadGroupCountX;
3191 UINT ThreadGroupCountY;
3192 UINT ThreadGroupCountZ;
3193} D3D12_DISPATCH_ARGUMENTS;
3194
3195typedef struct D3D12_VERTEX_BUFFER_VIEW
3196{
3197 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3198 UINT SizeInBytes;
3199 UINT StrideInBytes;
3200} D3D12_VERTEX_BUFFER_VIEW;
3201
3202typedef struct D3D12_INDEX_BUFFER_VIEW
3203{
3204 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3205 UINT SizeInBytes;
3206 DXGI_FORMAT Format;
3207} D3D12_INDEX_BUFFER_VIEW;
3208
3209typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
3210{
3211 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
3212 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
3213 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
3214 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
3215 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
3216 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
3217 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
3218 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
3219 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
3220 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
3221 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
3222 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
3223} D3D12_INDIRECT_ARGUMENT_TYPE;
3224
3225typedef struct D3D12_INDIRECT_ARGUMENT_DESC
3226{
3227 D3D12_INDIRECT_ARGUMENT_TYPE Type;
3228
3229 union
3230 {
3231 struct
3232 {
3233 UINT Slot;
3234 } VertexBuffer;
3235
3236 struct
3237 {
3238 UINT RootParameterIndex;
3239 UINT DestOffsetIn32BitValues;
3240 UINT Num32BitValuesToSet;
3241 } Constant;
3242
3243 struct
3244 {
3245 UINT RootParameterIndex;
3246 } ConstantBufferView;
3247
3248 struct
3249 {
3250 UINT RootParameterIndex;
3251 } ShaderResourceView;
3252
3253 struct
3254 {
3255 UINT RootParameterIndex;
3256 } UnorderedAccessView;
3257
3258 // Tier 1.1 support
3259 struct
3260 {
3261 UINT RootParameterIndex;
3262 UINT DestOffsetIn32BitValues;
3263 } IncrementingConstant;
3264 };
3265} D3D12_INDIRECT_ARGUMENT_DESC;
3266
3267typedef struct D3D12_COMMAND_SIGNATURE_DESC
3268{
3269 // The number of bytes between each drawing structure
3270 UINT ByteStride;
3271 UINT NumArgumentDescs;
3272 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
3273 UINT NodeMask;
3274} D3D12_COMMAND_SIGNATURE_DESC;
3275
3276interface ID3D12Device;
3277
3278[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
3279interface ID3D12Object
3280 : IUnknown
3281{
3282 HRESULT GetPrivateData(
3283 [annotation("_In_")] REFGUID guid,
3284 [annotation("_Inout_")] UINT* pDataSize,
3285 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
3286 HRESULT SetPrivateData(
3287 [annotation("_In_")] REFGUID guid,
3288 [annotation("_In_")] UINT DataSize,
3289 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
3290 HRESULT SetPrivateDataInterface(
3291 [annotation("_In_")] REFGUID guid,
3292 [annotation("_In_opt_")] const IUnknown* pData );
3293 HRESULT SetName(
3294 [annotation("_In_z_")] LPCWSTR Name );
3295}
3296
3297[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
3298interface ID3D12DeviceChild
3299 : ID3D12Object
3300{
3301 HRESULT GetDevice(
3302 [in] REFIID riid,
3303 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
3304 );
3305}
3306
3307[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
3308interface ID3D12Pageable
3309 : ID3D12DeviceChild
3310{
3311}
3312
3313[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
3314interface ID3D12Heap
3315 : ID3D12Pageable
3316{
3317 D3D12_HEAP_DESC GetDesc();
3318}
3319
3320[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
3321interface ID3D12Resource
3322 : ID3D12Pageable
3323{
3324 HRESULT Map(
3325 UINT Subresource,
3326 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
3327 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
3328
3329 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
3330
3331 D3D12_RESOURCE_DESC GetDesc();
3332
3333 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
3334
3335 HRESULT WriteToSubresource(
3336 UINT DstSubresource,
3337 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
3338 [annotation("_In_")] const void* pSrcData,
3339 UINT SrcRowPitch,
3340 UINT SrcDepthPitch );
3341
3342 HRESULT ReadFromSubresource(
3343 [annotation("_Out_")] void* pDstData,
3344 UINT DstRowPitch,
3345 UINT DstDepthPitch,
3346 UINT SrcSubresource,
3347 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
3348
3349 HRESULT GetHeapProperties(
3350 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
3351 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
3352 );
3353}
3354
3355[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
3356interface ID3D12CommandAllocator
3357 : ID3D12Pageable
3358{
3359 HRESULT Reset();
3360}
3361
3362[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
3363interface ID3D12Fence
3364 : ID3D12Pageable
3365{
3366 UINT64 GetCompletedValue();
3367 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
3368 HRESULT Signal(UINT64 Value);
3369};
3370
3371[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
3372interface ID3D12Fence1
3373 : ID3D12Fence
3374{
3375 D3D12_FENCE_FLAGS GetCreationFlags();
3376};
3377
3378
3379[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
3380interface ID3D12PipelineState
3381 : ID3D12Pageable
3382{
3383 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
3384}
3385
3386[uuid(5646804c-9638-48f7-9182-b3ee5a6b60fb), object, local, pointer_default(unique)]
3387interface ID3D12PipelineState1
3388 : ID3D12PipelineState
3389{
3390 HRESULT GetRootSignature(
3391 [in] REFIID riid, // Expected ID3D12RootSignature
3392 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3393}
3394
3395[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
3396interface ID3D12DescriptorHeap
3397 : ID3D12Pageable
3398{
3399 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
3400
3401 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
3402 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
3403}
3404
3405[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
3406interface ID3D12QueryHeap
3407 : ID3D12Pageable
3408{
3409};
3410
3411[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
3412interface ID3D12CommandSignature
3413 : ID3D12Pageable
3414{
3415};
3416
3417[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
3418interface ID3D12CommandList
3419 : ID3D12DeviceChild
3420{
3421 D3D12_COMMAND_LIST_TYPE GetType();
3422}
3423
3424// Superseded by ID3D12GraphicsCommandList1
3425[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
3426interface ID3D12GraphicsCommandList
3427 : ID3D12CommandList
3428{
3429 HRESULT Close();
3430
3431 HRESULT Reset(
3432 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
3433 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
3434 );
3435
3436 void ClearState(
3437 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3438 );
3439
3440 void DrawInstanced(
3441 [annotation("_In_")] UINT VertexCountPerInstance,
3442 [annotation("_In_")] UINT InstanceCount,
3443 [annotation("_In_")] UINT StartVertexLocation,
3444 [annotation("_In_")] UINT StartInstanceLocation
3445 );
3446
3447 void DrawIndexedInstanced(
3448 [annotation("_In_")] UINT IndexCountPerInstance,
3449 [annotation("_In_")] UINT InstanceCount,
3450 [annotation("_In_")] UINT StartIndexLocation,
3451 [annotation("_In_")] INT BaseVertexLocation,
3452 [annotation("_In_")] UINT StartInstanceLocation
3453 );
3454
3455 void Dispatch(
3456 [annotation("_In_")] UINT ThreadGroupCountX,
3457 [annotation("_In_")] UINT ThreadGroupCountY,
3458 [annotation("_In_")] UINT ThreadGroupCountZ
3459 );
3460
3461 void CopyBufferRegion(
3462 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3463 UINT64 DstOffset,
3464 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3465 UINT64 SrcOffset,
3466 UINT64 NumBytes
3467 );
3468
3469 void CopyTextureRegion(
3470 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3471 UINT DstX, UINT DstY, UINT DstZ,
3472 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3473 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3474 );
3475
3476 void CopyResource(
3477 [annotation("_In_")] ID3D12Resource* pDstResource,
3478 [annotation("_In_")] ID3D12Resource* pSrcResource
3479 );
3480
3481 void CopyTiles(
3482 [annotation("_In_")] ID3D12Resource* pTiledResource,
3483 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3484 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3485 [annotation("_In_")] ID3D12Resource* pBuffer,
3486 UINT64 BufferStartOffsetInBytes,
3487 D3D12_TILE_COPY_FLAGS Flags
3488 );
3489
3490 void ResolveSubresource(
3491 [annotation("_In_")] ID3D12Resource* pDstResource,
3492 [annotation("_In_")] UINT DstSubresource,
3493 [annotation("_In_")] ID3D12Resource* pSrcResource,
3494 [annotation("_In_")] UINT SrcSubresource,
3495 [annotation("_In_")] DXGI_FORMAT Format
3496 );
3497
3498 void IASetPrimitiveTopology(
3499 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3500 );
3501
3502 void RSSetViewports(
3503 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3504 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3505 );
3506
3507 void RSSetScissorRects(
3508 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3509 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3510 );
3511
3512 void OMSetBlendFactor(
3513 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3514 );
3515
3516 void OMSetStencilRef(
3517 [annotation("_In_")] UINT StencilRef
3518 );
3519
3520 void SetPipelineState(
3521 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3522 );
3523
3524 void ResourceBarrier(
3525 [annotation("_In_")] UINT NumBarriers,
3526 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3527 );
3528
3529 void ExecuteBundle(
3530 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3531 );
3532
3533 void SetDescriptorHeaps(
3534 [annotation("_In_")] UINT NumDescriptorHeaps,
3535 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3536 );
3537
3538 void SetComputeRootSignature(
3539 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3540 );
3541
3542 void SetGraphicsRootSignature(
3543 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3544 );
3545
3546 void SetComputeRootDescriptorTable(
3547 [annotation("_In_")] UINT RootParameterIndex,
3548 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3549 );
3550
3551 void SetGraphicsRootDescriptorTable(
3552 [annotation("_In_")] UINT RootParameterIndex,
3553 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3554 );
3555
3556 // Single constant
3557 void SetComputeRoot32BitConstant(
3558 [annotation("_In_")] UINT RootParameterIndex,
3559 [annotation("_In_")] UINT SrcData,
3560 [annotation("_In_")] UINT DestOffsetIn32BitValues
3561 );
3562
3563 void SetGraphicsRoot32BitConstant(
3564 [annotation("_In_")] UINT RootParameterIndex,
3565 [annotation("_In_")] UINT SrcData,
3566 [annotation("_In_")] UINT DestOffsetIn32BitValues
3567 );
3568
3569 // Group of constants
3570 void SetComputeRoot32BitConstants(
3571 [annotation("_In_")] UINT RootParameterIndex,
3572 [annotation("_In_")] UINT Num32BitValuesToSet,
3573 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3574 [annotation("_In_")] UINT DestOffsetIn32BitValues
3575 );
3576
3577 void SetGraphicsRoot32BitConstants(
3578 [annotation("_In_")] UINT RootParameterIndex,
3579 [annotation("_In_")] UINT Num32BitValuesToSet,
3580 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3581 [annotation("_In_")] UINT DestOffsetIn32BitValues
3582 );
3583
3584 // CBV
3585 void SetComputeRootConstantBufferView(
3586 [annotation("_In_")] UINT RootParameterIndex,
3587 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3588 );
3589
3590 void SetGraphicsRootConstantBufferView(
3591 [annotation("_In_")] UINT RootParameterIndex,
3592 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3593 );
3594
3595 // SRV
3596 void SetComputeRootShaderResourceView(
3597 [annotation("_In_")] UINT RootParameterIndex,
3598 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3599 );
3600
3601 void SetGraphicsRootShaderResourceView(
3602 [annotation("_In_")] UINT RootParameterIndex,
3603 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3604 );
3605
3606 // UAV
3607 void SetComputeRootUnorderedAccessView(
3608 [annotation("_In_")] UINT RootParameterIndex,
3609 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3610 );
3611
3612 void SetGraphicsRootUnorderedAccessView(
3613 [annotation("_In_")] UINT RootParameterIndex,
3614 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3615 );
3616
3617 void IASetIndexBuffer(
3618 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3619 );
3620
3621 void IASetVertexBuffers(
3622 [annotation("_In_")] UINT StartSlot,
3623 [annotation("_In_")] UINT NumViews,
3624 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3625 );
3626
3627 void SOSetTargets(
3628 [annotation("_In_")] UINT StartSlot,
3629 [annotation("_In_")] UINT NumViews,
3630 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3631 );
3632
3633 void OMSetRenderTargets(
3634 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3635 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3636 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3637 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3638 );
3639
3640 void ClearDepthStencilView(
3641 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3642 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3643 [annotation("_In_")] FLOAT Depth,
3644 [annotation("_In_")] UINT8 Stencil,
3645 [annotation("_In_")] UINT NumRects,
3646 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3647 );
3648
3649 void ClearRenderTargetView(
3650 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3651 [annotation("_In_")] const FLOAT ColorRGBA[4],
3652 [annotation("_In_")] UINT NumRects,
3653 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3654 );
3655
3656 void ClearUnorderedAccessViewUint(
3657 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3658 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3659 [annotation("_In_")] ID3D12Resource* pResource,
3660 [annotation("_In_")] const UINT Values[4],
3661 [annotation("_In_")] UINT NumRects,
3662 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3663 );
3664
3665 void ClearUnorderedAccessViewFloat(
3666 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3667 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3668 [annotation("_In_")] ID3D12Resource* pResource,
3669 [annotation("_In_")] const FLOAT Values[4],
3670 [annotation("_In_")] UINT NumRects,
3671 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3672 );
3673
3674 void DiscardResource(
3675 [annotation("_In_")] ID3D12Resource* pResource,
3676 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3677 );
3678
3679 void BeginQuery(
3680 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3681 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3682 [annotation("_In_")] UINT Index
3683 );
3684
3685 void EndQuery(
3686 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3687 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3688 [annotation("_In_")] UINT Index
3689 );
3690
3691 void ResolveQueryData(
3692 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3693 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3694 [annotation("_In_")] UINT StartIndex,
3695 [annotation("_In_")] UINT NumQueries,
3696 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3697 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3698 );
3699
3700 void SetPredication(
3701 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3702 [annotation("_In_")] UINT64 AlignedBufferOffset,
3703 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3704 );
3705
3706 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3707 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3708 void EndEvent();
3709
3710 void ExecuteIndirect(
3711 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3712 [annotation("_In_")] UINT MaxCommandCount,
3713 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3714 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3715 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3716 [annotation("_In_")] UINT64 CountBufferOffset
3717 );
3718}
3719
3720[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3721interface ID3D12GraphicsCommandList1
3722 : ID3D12GraphicsCommandList
3723{
3724 void AtomicCopyBufferUINT(
3725 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3726 UINT64 DstOffset,
3727 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3728 UINT64 SrcOffset,
3729 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3730 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3731 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3732 );
3733
3734 // UINT64 is only valid on UMA architectures
3735 void AtomicCopyBufferUINT64(
3736 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3737 UINT64 DstOffset,
3738 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3739 UINT64 SrcOffset,
3740 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3741 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3742 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3743 );
3744
3745 void OMSetDepthBounds(
3746 [annotation("_In_")] FLOAT Min,
3747 [annotation("_In_")] FLOAT Max
3748 );
3749
3750 void SetSamplePositions(
3751 [annotation("_In_")] UINT NumSamplesPerPixel,
3752 [annotation("_In_")] UINT NumPixels,
3753 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3754 );
3755
3756 void ResolveSubresourceRegion(
3757 [annotation("_In_")] ID3D12Resource* pDstResource,
3758 [annotation("_In_")] UINT DstSubresource,
3759 [annotation("_In_")] UINT DstX,
3760 [annotation("_In_")] UINT DstY,
3761 [annotation("_In_")] ID3D12Resource* pSrcResource,
3762 [annotation("_In_")] UINT SrcSubresource,
3763 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3764 [annotation("_In_")] DXGI_FORMAT Format,
3765 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3766 );
3767
3768 void SetViewInstanceMask(
3769 [annotation("_In_")] UINT Mask
3770 );
3771
3772}
3773
3774typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3775{
3776 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3777 UINT32 Value;
3778} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3779
3780typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3781{
3782 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3783 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3784 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3785
3786} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3787
3788[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3789interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3790{
3791 void WriteBufferImmediate(
3792 UINT Count,
3793 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3794 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3795 );
3796}
3797
3798[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3799interface ID3D12CommandQueue
3800 : ID3D12Pageable
3801{
3802 void UpdateTileMappings(
3803 [annotation("_In_")] ID3D12Resource* pResource,
3804 UINT NumResourceRegions,
3805 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3806 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3807 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3808 UINT NumRanges,
3809 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3810 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3811 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3812 D3D12_TILE_MAPPING_FLAGS Flags );
3813
3814 void CopyTileMappings(
3815 [annotation("_In_")] ID3D12Resource* pDstResource,
3816 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3817 [annotation("_In_")] ID3D12Resource* pSrcResource,
3818 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3819 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3820 D3D12_TILE_MAPPING_FLAGS Flags );
3821
3822 void ExecuteCommandLists(
3823 [annotation("_In_")] UINT NumCommandLists,
3824 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3825 );
3826
3827 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3828 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3829 void EndEvent();
3830
3831 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3832 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3833
3834 HRESULT GetTimestampFrequency(
3835 [annotation("_Out_")] UINT64* pFrequency
3836 );
3837
3838 HRESULT GetClockCalibration(
3839 [annotation("_Out_")] UINT64* pGpuTimestamp,
3840 [annotation("_Out_")] UINT64* pCpuTimestamp
3841 );
3842
3843 D3D12_COMMAND_QUEUE_DESC GetDesc();
3844}
3845
3846//
3847// Dynamic priority command queue features start
3848//
3849
3850typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
3851{
3852 [annotation("_Out_")] UINT ComputeQueuesPer3DQueue; // 0 means scheduling groups do not group multiple queues.
3853} D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
3854
3855typedef enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
3856{
3857 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
3858 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1,
3859} D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
3860
3861typedef enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
3862{
3863 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
3864 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
3865 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
3866
3867 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
3868 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
3869 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
3870 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
3871 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
3872 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
3873 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
3874 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
3875 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
3876 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
3877 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
3878 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
3879 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
3880 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
3881
3882 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32,
3883} D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
3884
3885[uuid(3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9), object, local, pointer_default(unique)]
3886interface ID3D12CommandQueue1
3887 : ID3D12CommandQueue
3888{
3889 HRESULT SetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
3890 HRESULT GetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY* pOutValue);
3891
3892 HRESULT SetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
3893 HRESULT GetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY* pOutValue);
3894}
3895
3896//
3897// Dynamic priority command queue features end
3898//
3899
3900
3901[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3902interface ID3D12Device
3903 : ID3D12Object
3904{
3905 UINT GetNodeCount();
3906
3907 HRESULT CreateCommandQueue(
3908 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3909 [in] REFIID riid, // Expected: ID3D12CommandQueue
3910 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3911 );
3912
3913 HRESULT CreateCommandAllocator(
3914 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3915 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3916 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3917 );
3918
3919 HRESULT CreateGraphicsPipelineState(
3920 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3921 [in] REFIID riid, // Expected: ID3D12PipelineState
3922 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3923 );
3924
3925 HRESULT CreateComputePipelineState(
3926 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3927 [in] REFIID riid, // Expected: ID3D12PipelineState
3928 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3929 );
3930
3931 HRESULT CreateCommandList(
3932 [annotation("_In_")] UINT nodeMask,
3933 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3934 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3935 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3936 [in] REFIID riid, // Expected: ID3D12CommandList
3937 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3938 );
3939
3940 HRESULT CheckFeatureSupport(
3941 D3D12_FEATURE Feature,
3942 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3943 UINT FeatureSupportDataSize
3944 );
3945
3946 HRESULT CreateDescriptorHeap(
3947 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3948 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3949 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3950
3951 UINT GetDescriptorHandleIncrementSize(
3952 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3953
3954 HRESULT CreateRootSignature(
3955 [annotation("_In_")] UINT nodeMask,
3956 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3957 [annotation("_In_")] SIZE_T blobLengthInBytes,
3958 [in] REFIID riid, // Expected ID3D12RootSignature
3959 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3960
3961 void CreateConstantBufferView(
3962 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3963 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3964
3965 void CreateShaderResourceView(
3966 [annotation("_In_opt_")] ID3D12Resource* pResource,
3967 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3968 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3969
3970 void CreateUnorderedAccessView(
3971 [annotation("_In_opt_")] ID3D12Resource* pResource,
3972 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3973 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3974 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3975
3976 void CreateRenderTargetView(
3977 [annotation("_In_opt_")] ID3D12Resource* pResource,
3978 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3979 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3980
3981 void CreateDepthStencilView(
3982 [annotation("_In_opt_")] ID3D12Resource* pResource,
3983 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3984 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3985
3986 void CreateSampler(
3987 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3988 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3989
3990 void CopyDescriptors(
3991 [annotation("_In_")] UINT NumDestDescriptorRanges,
3992 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3993 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3994 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3995 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3996 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3997 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3998
3999 void CopyDescriptorsSimple(
4000 [annotation("_In_")] UINT NumDescriptors,
4001 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
4002 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
4003 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
4004
4005 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
4006 [annotation("_In_")] UINT visibleMask,
4007 [annotation("_In_")] UINT numResourceDescs,
4008 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
4009
4010 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
4011 [annotation("_In_")] UINT nodeMask,
4012 D3D12_HEAP_TYPE heapType
4013 );
4014
4015 HRESULT CreateCommittedResource(
4016 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4017 D3D12_HEAP_FLAGS HeapFlags,
4018 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4019 D3D12_RESOURCE_STATES InitialResourceState,
4020 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4021 [in] REFIID riidResource, // Expected: ID3D12Resource*
4022 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
4023
4024 HRESULT CreateHeap(
4025 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4026 [in] REFIID riid, // Expected: ID3D12Heap*
4027 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
4028
4029 HRESULT CreatePlacedResource(
4030 [annotation("_In_")] ID3D12Heap* pHeap,
4031 UINT64 HeapOffset,
4032 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4033 D3D12_RESOURCE_STATES InitialState,
4034 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4035 [in] REFIID riid, // Expected: ID3D12Resource*
4036 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4037
4038 HRESULT CreateReservedResource(
4039 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4040 D3D12_RESOURCE_STATES InitialState,
4041 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4042 [in] REFIID riid, // Expected: ID3D12Resource*
4043 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4044
4045 HRESULT CreateSharedHandle(
4046 [annotation("_In_")] ID3D12DeviceChild* pObject,
4047 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
4048 DWORD Access,
4049 [annotation("_In_opt_")] LPCWSTR Name,
4050 [annotation("_Out_")] HANDLE* pHandle );
4051
4052 HRESULT OpenSharedHandle(
4053 [annotation("_In_")] HANDLE NTHandle,
4054 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
4055 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
4056
4057 HRESULT OpenSharedHandleByName(
4058 [annotation("_In_")] LPCWSTR Name,
4059 DWORD Access,
4060 [out, annotation("_Out_")] HANDLE* pNTHandle );
4061
4062 HRESULT MakeResident(
4063 UINT NumObjects,
4064 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4065
4066 HRESULT Evict(
4067 UINT NumObjects,
4068 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4069
4070 HRESULT CreateFence(
4071 UINT64 InitialValue,
4072 D3D12_FENCE_FLAGS Flags,
4073 [in] REFIID riid, // Expected: ID3D12Fence
4074 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
4075
4076 HRESULT GetDeviceRemovedReason();
4077
4078 void GetCopyableFootprints(
4079 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
4080 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4081 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4082 UINT64 BaseOffset,
4083 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4084 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4085 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4086 [annotation("_Out_opt_")] UINT64* pTotalBytes );
4087
4088 HRESULT CreateQueryHeap(
4089 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
4090 [in] REFIID riid, // Expected: ID3D12QueryHeap
4091 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4092 );
4093
4094 HRESULT SetStablePowerState(BOOL Enable);
4095
4096 HRESULT CreateCommandSignature(
4097 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
4098 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
4099 [in] REFIID riid, // Expected: ID3D12CommandSignature
4100 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
4101 );
4102
4103 void GetResourceTiling(
4104 [annotation("_In_")] ID3D12Resource* pTiledResource,
4105 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
4106 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
4107 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
4108 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
4109 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
4110 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
4111 );
4112
4113 LUID GetAdapterLuid();
4114}
4115
4116// D3D12 Revision 1
4117[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
4118interface ID3D12PipelineLibrary
4119 : ID3D12DeviceChild
4120{
4121 HRESULT StorePipeline(
4122 [annotation("_In_opt_")] LPCWSTR pName,
4123 [annotation("_In_")] ID3D12PipelineState *pPipeline
4124 );
4125
4126 HRESULT LoadGraphicsPipeline(
4127 [annotation("_In_")] LPCWSTR pName,
4128 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
4129 [in] REFIID riid, // Expected: ID3D12PipelineState
4130 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4131 );
4132
4133 HRESULT LoadComputePipeline(
4134 [annotation("_In_")] LPCWSTR pName,
4135 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
4136 [in] REFIID riid, // Expected: ID3D12PipelineState
4137 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4138 );
4139
4140 SIZE_T GetSerializedSize();
4141
4142 HRESULT Serialize(
4143 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
4144 SIZE_T DataSizeInBytes
4145 );
4146}
4147
4148// Pipeline State v2
4149[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
4150interface ID3D12PipelineLibrary1
4151 : ID3D12PipelineLibrary
4152{
4153 HRESULT LoadPipeline(
4154 [annotation("_In_")] LPCWSTR pName,
4155 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4156 [in] REFIID riid, // Expected: ID3D12PipelineState
4157 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4158 );
4159}
4160
4161typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
4162{
4163 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
4164 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
4165
4166 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
4167} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
4168cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
4169
4170// Applications may use the whole value range of UINT for a priority.
4171// These names are merely semantic suggestions.
4172typedef enum D3D12_RESIDENCY_PRIORITY
4173{
4174 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
4175 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
4176 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
4177 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
4178 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
4179} D3D12_RESIDENCY_PRIORITY;
4180
4181[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
4182interface ID3D12Device1
4183 : ID3D12Device
4184{
4185 HRESULT CreatePipelineLibrary(
4186 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
4187 SIZE_T BlobLength,
4188 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
4189 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
4190 );
4191
4192 HRESULT SetEventOnMultipleFenceCompletion(
4193 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
4194 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
4195 UINT NumFences,
4196 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
4197 HANDLE hEvent
4198 );
4199
4200 HRESULT SetResidencyPriority(
4201 UINT NumObjects,
4202 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4203 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
4204}
4205
4206[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
4207interface ID3D12Device2
4208 : ID3D12Device1
4209{
4210 HRESULT CreatePipelineState(
4211 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4212 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
4213 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4214 );
4215}
4216
4217typedef enum D3D12_RESIDENCY_FLAGS
4218{
4219 D3D12_RESIDENCY_FLAG_NONE = 0x0,
4220 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
4221} D3D12_RESIDENCY_FLAGS;
4222cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
4223
4224[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
4225interface ID3D12Device3
4226 : ID3D12Device2
4227{
4228 HRESULT OpenExistingHeapFromAddress(
4229 [annotation("_In_")] const void* pAddress,
4230 [in] REFIID riid, // Expected: ID3D12Heap
4231 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4232 );
4233 HRESULT OpenExistingHeapFromFileMapping(
4234 [annotation("_In_")] HANDLE hFileMapping,
4235 [in] REFIID riid, // Expected: ID3D12Heap
4236 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4237 );
4238 HRESULT EnqueueMakeResident(
4239 D3D12_RESIDENCY_FLAGS Flags,
4240 UINT NumObjects,
4241 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4242 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
4243 UINT64 FenceValueToSignal
4244 );
4245}
4246
4247typedef enum D3D12_COMMAND_LIST_FLAGS
4248{
4249 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
4250} D3D12_COMMAND_LIST_FLAGS;
4251cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
4252
4253
4254typedef enum D3D12_COMMAND_POOL_FLAGS
4255{
4256 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
4257
4258} D3D12_COMMAND_POOL_FLAGS;
4259cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
4260
4261typedef enum D3D12_COMMAND_RECORDER_FLAGS
4262{
4263 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
4264
4265} D3D12_COMMAND_RECORDER_FLAGS;
4266cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
4267
4268typedef enum D3D12_PROTECTED_SESSION_STATUS
4269{
4270 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
4271 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
4272} D3D12_PROTECTED_SESSION_STATUS;
4273
4274[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
4275interface ID3D12ProtectedSession
4276 : ID3D12DeviceChild
4277{
4278 HRESULT GetStatusFence(
4279 [in] REFIID riid,
4280 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
4281
4282 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
4283}
4284
4285typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
4286{
4287 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
4288 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
4289
4290} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
4291cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
4292
4293typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
4294{
4295 UINT NodeIndex; // input
4296 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
4297} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
4298
4299typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
4300{
4301 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
4302
4303} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
4304cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
4305
4306typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
4307{
4308 UINT NodeMask;
4309 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4310} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
4311
4312[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
4313interface ID3D12ProtectedResourceSession
4314 : ID3D12ProtectedSession
4315{
4316 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
4317}
4318
4319[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
4320interface ID3D12Device4
4321 : ID3D12Device3
4322{
4323 HRESULT CreateCommandList1(
4324 [annotation("_In_")] UINT nodeMask,
4325 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
4326 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
4327 [in] REFIID riid, // Expected: ID3D12CommandList
4328 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
4329 );
4330
4331 HRESULT CreateProtectedResourceSession(
4332 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
4333 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
4334 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4335 );
4336
4337 HRESULT CreateCommittedResource1(
4338 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4339 D3D12_HEAP_FLAGS HeapFlags,
4340 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4341 D3D12_RESOURCE_STATES InitialResourceState,
4342 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4344 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4345 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
4346 );
4347
4348 HRESULT CreateHeap1(
4349 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4350 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4351 [in] REFIID riid, // Expected: ID3D12Heap1*
4352 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4353 );
4354
4355 HRESULT CreateReservedResource1(
4356 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4357 D3D12_RESOURCE_STATES InitialState,
4358 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4359 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4360 [in] REFIID riid, // Expected: ID3D12Resource1*
4361 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
4362 );
4363
4364 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
4365 UINT visibleMask,
4366 UINT numResourceDescs,
4367 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
4368 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
4369 );
4370}
4371
4372typedef enum D3D12_LIFETIME_STATE
4373{
4374 D3D12_LIFETIME_STATE_IN_USE,
4375 D3D12_LIFETIME_STATE_NOT_IN_USE,
4376} D3D12_LIFETIME_STATE;
4377
4378interface ID3D12LifetimeTracker;
4379
4380[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
4381interface ID3D12LifetimeOwner : IUnknown
4382{
4383 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
4384}
4385
4386[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
4387interface ID3D12SwapChainAssistant
4388 : IUnknown
4389{
4390 LUID GetLUID();
4391 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
4392 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
4393 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
4394 HRESULT InsertImplicitSync();
4395}
4396
4397[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
4398interface ID3D12LifetimeTracker
4399 : ID3D12DeviceChild
4400{
4401 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
4402}
4403
4404typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
4405{
4406 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
4407 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
4408 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
4409 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
4410 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
4411} D3D12_META_COMMAND_PARAMETER_TYPE;
4412
4413typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
4414{
4415 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
4416 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
4417} D3D12_META_COMMAND_PARAMETER_FLAGS;
4418cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
4419
4420typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
4421{
4422 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
4423 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
4424 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
4425} D3D12_META_COMMAND_PARAMETER_STAGE;
4426
4427typedef struct D3D12_META_COMMAND_PARAMETER_DESC
4428{
4429 LPCWSTR Name;
4430 D3D12_META_COMMAND_PARAMETER_TYPE Type;
4431 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
4432 D3D12_RESOURCE_STATES RequiredResourceState;
4433 UINT StructureOffset;
4434} D3D12_META_COMMAND_PARAMETER_DESC;
4435
4436typedef enum D3D12_GRAPHICS_STATES
4437{
4438 D3D12_GRAPHICS_STATE_NONE = 0,
4439 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
4440 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
4441 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
4442 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
4443 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
4444 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
4445 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
4446 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
4447 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
4448 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
4449 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
4450 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
4451 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
4452 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
4453 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
4454 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
4455 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
4456
4457} D3D12_GRAPHICS_STATES;
4458cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
4459
4460typedef struct D3D12_META_COMMAND_DESC
4461{
4462 GUID Id;
4463 LPCWSTR Name;
4464 D3D12_GRAPHICS_STATES InitializationDirtyState;
4465 D3D12_GRAPHICS_STATES ExecutionDirtyState;
4466} D3D12_META_COMMAND_DESC;
4467
4468[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
4469interface ID3D12StateObject
4470 : ID3D12Pageable
4471{
4472}
4473
4474[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
4475interface ID3D12StateObjectProperties
4476 : IUnknown
4477{
4478 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4479 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4480 UINT64 GetPipelineStackSize();
4481 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4482}
4483
4484typedef struct D3D12_PROGRAM_IDENTIFIER
4485{
4486 UINT64 OpaqueData[4];
4487} D3D12_PROGRAM_IDENTIFIER;
4488
4489[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
4490interface ID3D12StateObjectProperties1
4491 : ID3D12StateObjectProperties
4492{
4493 D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
4494}
4495
4496[uuid(d5e82917-f0f1-44cf-ae5e-ce222dd0b884), object, local, pointer_default(unique)]
4497interface ID3D12StateObjectProperties2
4498 : ID3D12StateObjectProperties1
4499{
4500 HRESULT GetGlobalRootSignatureForProgram(
4501 [in] LPCWSTR pProgramName,
4502 [in] REFIID riid, // Expected ID3D12RootSignature
4503 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4504
4505 HRESULT GetGlobalRootSignatureForShader(
4506 [in] LPCWSTR pExportName,
4507 [in] REFIID riid, // Expected ID3D12RootSignature
4508 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4509}
4510
4511typedef struct D3D12_NODE_ID
4512{
4513 LPCWSTR Name;
4514 UINT ArrayIndex;
4515} D3D12_NODE_ID;
4516
4517typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
4518{
4519 UINT64 MinSizeInBytes;
4520 UINT64 MaxSizeInBytes;
4521 UINT SizeGranularityInBytes;
4522} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
4523
4524[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
4525interface ID3D12WorkGraphProperties : IUnknown
4526{
4527 UINT GetNumWorkGraphs();
4528 LPCWSTR GetProgramName(UINT WorkGraphIndex);
4529 UINT GetWorkGraphIndex(LPCWSTR pProgramName);
4530
4531 UINT GetNumNodes(UINT WorkGraphIndex);
4532 D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
4533 UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4534 UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
4535
4536 UINT GetNumEntrypoints(UINT WorkGraphIndex);
4537 D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
4538 UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4539 UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4540
4541 void GetWorkGraphMemoryRequirements(
4542 UINT WorkGraphIndex,
4543 [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
4544
4545 UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4546}
4547
4548
4549typedef enum D3D12_STATE_SUBOBJECT_TYPE
4550{
4551 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4552 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4553 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4554 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4555 // 4 unused
4556 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4557 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4558 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4559 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4560 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4561 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4562 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4563 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4564 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
4565 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14, // D3D12_STREAM_OUTPUT_DESC
4566 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15, // D3D12_BLEND_DESC
4567 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16, // UINT
4568 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17, // D3D12_RASTERIZER_DESC2
4569 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18, // D3D12_DEPTH_STENCIL_DESC
4570 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19, // D3D12_INPUT_LAYOUT_DESC
4571 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
4572 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
4573 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22, // D3D12_RT_FORMAT_ARRAY
4574 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23, // DXGI_FORMAT
4575 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24, // DXGI_SAMPLE_DESC
4576 // 25 is unused
4577 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26, // D3D12_PIPELINE_STATE_FLAGS
4578 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
4579 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
4580 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
4581 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
4582 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31, // D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_DESC
4583 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32, // D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE_DESC
4584 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33, // D3D12_COMPILER_EXISTING_COLLECTION_DESC
4585 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36, // D3D12_EXISTING_COLLECTION_BY_KEY_DESC
4586 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4587} D3D12_STATE_SUBOBJECT_TYPE;
4588
4589typedef struct D3D12_STATE_SUBOBJECT
4590{
4591 D3D12_STATE_SUBOBJECT_TYPE Type;
4592 const void* pDesc;
4593} D3D12_STATE_SUBOBJECT;
4594
4595typedef enum D3D12_STATE_OBJECT_FLAGS
4596{
4597 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4598 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4599 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4600 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4601
4602} D3D12_STATE_OBJECT_FLAGS;
4603cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
4604
4605typedef struct D3D12_STATE_OBJECT_CONFIG
4606{
4607 D3D12_STATE_OBJECT_FLAGS Flags;
4608} D3D12_STATE_OBJECT_CONFIG;
4609
4610typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4611{
4612 ID3D12RootSignature* pGlobalRootSignature;
4613} D3D12_GLOBAL_ROOT_SIGNATURE;
4614
4615typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4616{
4617 ID3D12RootSignature* pLocalRootSignature;
4618} D3D12_LOCAL_ROOT_SIGNATURE;
4619
4620typedef struct D3D12_NODE_MASK
4621{
4622 UINT NodeMask;
4623} D3D12_NODE_MASK;
4624
4625typedef struct D3D12_SAMPLE_MASK
4626{
4627 UINT SampleMask;
4628} D3D12_SAMPLE_MASK;
4629
4630typedef struct D3D12_IB_STRIP_CUT_VALUE
4631{
4632 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
4633} D3D12_IB_STRIP_CUT_VALUE;
4634
4635typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
4636{
4637 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
4638} D3D12_PRIMITIVE_TOPOLOGY_DESC;
4639
4640typedef struct D3D12_DEPTH_STENCIL_FORMAT
4641{
4642 DXGI_FORMAT DepthStencilFormat;
4643} D3D12_DEPTH_STENCIL_FORMAT;
4644
4645typedef enum D3D12_EXPORT_FLAGS
4646{
4647 D3D12_EXPORT_FLAG_NONE = 0x0,
4648} D3D12_EXPORT_FLAGS;
4649cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
4650
4651typedef struct D3D12_EXPORT_DESC
4652{
4653 LPCWSTR Name;
4654 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4655 D3D12_EXPORT_FLAGS Flags;
4656} D3D12_EXPORT_DESC;
4657
4658typedef struct D3D12_DXIL_LIBRARY_DESC
4659{
4660 D3D12_SHADER_BYTECODE DXILLibrary;
4661 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4662 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4663} D3D12_DXIL_LIBRARY_DESC;
4664
4665
4666typedef struct D3D12_EXISTING_COLLECTION_DESC
4667{
4668 ID3D12StateObject* pExistingCollection;
4669 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4670 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4671} D3D12_EXISTING_COLLECTION_DESC;
4672
4673typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4674{
4675 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4676 UINT NumExports;
4677 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4678} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4679
4680typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4681{
4682 LPCWSTR SubobjectToAssociate;
4683 UINT NumExports;
4684 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4685} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4686
4687typedef enum D3D12_HIT_GROUP_TYPE
4688{
4689 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4690 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4691} D3D12_HIT_GROUP_TYPE;
4692
4693typedef struct D3D12_HIT_GROUP_DESC
4694{
4695 LPCWSTR HitGroupExport;
4696 D3D12_HIT_GROUP_TYPE Type;
4697 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4698 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4699 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4700} D3D12_HIT_GROUP_DESC;
4701
4702typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4703{
4704 UINT MaxPayloadSizeInBytes;
4705 UINT MaxAttributeSizeInBytes;
4706} D3D12_RAYTRACING_SHADER_CONFIG;
4707
4708typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4709{
4710 UINT MaxTraceRecursionDepth;
4711} D3D12_RAYTRACING_PIPELINE_CONFIG;
4712
4713typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4714{
4715 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4716 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4717 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4718 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400,
4719} D3D12_RAYTRACING_PIPELINE_FLAGS;
4720cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
4721
4722typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4723{
4724 UINT MaxTraceRecursionDepth;
4725 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4726} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4727
4728typedef struct D3D12_NODE_OUTPUT_OVERRIDES
4729{
4730 UINT OutputIndex;
4731 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4732 [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
4733 [annotation("_In_opt_")] const UINT* pMaxRecords;
4734 [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
4735} D3D12_NODE_OUTPUT_OVERRIDES;
4736
4737typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
4738{
4739 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4740 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4741 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4742 [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
4743 [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
4744 [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
4745 UINT NumOutputOverrides;
4746 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4747} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
4748
4749typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
4750{
4751 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4752 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4753 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4754 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4755 UINT NumOutputOverrides;
4756 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4757} D3D12_COALESCING_LAUNCH_OVERRIDES;
4758
4759typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
4760{
4761 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4762 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4763 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4764 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4765 UINT NumOutputOverrides;
4766 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4767} D3D12_THREAD_LAUNCH_OVERRIDES;
4768
4769typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
4770{
4771 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4772 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4773 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4774 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4775 UINT NumOutputOverrides;
4776 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4777} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
4778
4779typedef enum D3D12_NODE_OVERRIDES_TYPE
4780{
4781 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
4782 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
4783 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
4784 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
4785 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
4786} D3D12_NODE_OVERRIDES_TYPE;
4787
4788typedef struct D3D12_SHADER_NODE
4789{
4790 LPCWSTR Shader;
4791 D3D12_NODE_OVERRIDES_TYPE OverridesType;
4792 union
4793 {
4794 const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
4795 const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
4796 const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
4797 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
4798 };
4799} D3D12_SHADER_NODE;
4800
4801
4802typedef enum D3D12_NODE_TYPE
4803{
4804 D3D12_NODE_TYPE_SHADER = 0x0,
4805} D3D12_NODE_TYPE;
4806
4807typedef struct D3D12_NODE
4808{
4809 D3D12_NODE_TYPE NodeType;
4810 union
4811 {
4812 D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
4813 };
4814} D3D12_NODE;
4815
4816typedef enum D3D12_WORK_GRAPH_FLAGS
4817{
4818 D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
4819 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
4820} D3D12_WORK_GRAPH_FLAGS;
4821cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
4822
4823typedef struct D3D12_WORK_GRAPH_DESC
4824{
4825 LPCWSTR ProgramName;
4826 D3D12_WORK_GRAPH_FLAGS Flags;
4827 UINT NumEntrypoints;
4828 [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
4829 UINT NumExplicitlyDefinedNodes;
4830 [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes;
4831} D3D12_WORK_GRAPH_DESC;
4832
4833typedef struct D3D12_GENERIC_PROGRAM_DESC
4834{
4835 LPCWSTR ProgramName;
4836 UINT NumExports;
4837 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4838 UINT NumSubobjects;
4839 [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
4840} D3D12_GENERIC_PROGRAM_DESC;
4841
4842typedef enum D3D12_STATE_OBJECT_TYPE
4843{
4844 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4845 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4846 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
4847} D3D12_STATE_OBJECT_TYPE;
4848
4849typedef struct D3D12_STATE_OBJECT_DESC
4850{
4851 D3D12_STATE_OBJECT_TYPE Type;
4852 UINT NumSubobjects;
4853 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4854} D3D12_STATE_OBJECT_DESC;
4855
4856typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4857{
4858 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4859 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4860 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4861} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4862cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
4863
4864typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4865{
4866 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4867 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4868 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES
4869} D3D12_RAYTRACING_GEOMETRY_TYPE;
4870
4871typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4872{
4873 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4874 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4875 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4876 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4877 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
4878 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
4879 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
4880} D3D12_RAYTRACING_INSTANCE_FLAGS;
4881cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
4882
4883typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4884{
4885 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4886 UINT64 StrideInBytes;
4887} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4888
4889typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4890{
4891 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4892 UINT64 SizeInBytes;
4893} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4894
4895typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4896{
4897 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4898 UINT64 SizeInBytes;
4899 UINT64 StrideInBytes;
4900} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4901
4902typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4903{
4904 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4905 DXGI_FORMAT IndexFormat;
4906 DXGI_FORMAT VertexFormat;
4907 UINT IndexCount;
4908 UINT VertexCount;
4909 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4910 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4911} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4912
4913typedef struct D3D12_RAYTRACING_AABB
4914{
4915 FLOAT MinX;
4916 FLOAT MinY;
4917 FLOAT MinZ;
4918 FLOAT MaxX;
4919 FLOAT MaxY;
4920 FLOAT MaxZ;
4921} D3D12_RAYTRACING_AABB;
4922
4923typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4924{
4925 UINT64 AABBCount;
4926 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4927} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4928
4929typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
4930{
4931 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
4932 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
4933 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
4934 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4,
4935} D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
4936
4937typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
4938{
4939 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
4940 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
4941 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
4942 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3,
4943} D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
4944
4945typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
4946{
4947 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
4948 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2,
4949} D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
4950
4951cpp_quote("typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC")
4952cpp_quote("{")
4953cpp_quote(" UINT ByteOffset;")
4954cpp_quote(" UINT SubdivisionLevel : 16;")
4955cpp_quote(" D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;")
4956cpp_quote("} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;")
4957
4958typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
4959{
4960 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
4961 DXGI_FORMAT OpacityMicromapIndexFormat;
4962 UINT OpacityMicromapBaseLocation;
4963 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
4964} D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
4965
4966typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
4967{
4968 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC* pTriangles;
4969 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC* pOmmLinkage;
4970} D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
4971
4972typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4973{
4974 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4975 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4976 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4977 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4978 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4979 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4980 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4981 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
4982 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80,
4983
4984} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4985cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
4986
4987typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4988{
4989 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4990 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4991 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4992 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4993 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4994} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4995
4996typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4997{
4998 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4999 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
5000 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2,
5001} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
5002
5003typedef enum D3D12_ELEMENTS_LAYOUT
5004{
5005 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
5006 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
5007} D3D12_ELEMENTS_LAYOUT;
5008
5009typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
5010{
5011 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
5012 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5013 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
5014 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
5015} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
5016
5017typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
5018{
5019 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5020 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
5021} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
5022
5023typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
5024{
5025 UINT64 CompactedSizeInBytes;
5026} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
5027
5028typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5029{
5030 UINT64 DecodedSizeInBytes;
5031} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5032
5033typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
5034{
5035 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5036 UINT NumDescs;
5037} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
5038cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
5039cpp_quote("// depending on Type field, NumDescs above is followed by either:")
5040cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
5041cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
5042cpp_quote("// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).")
5043cpp_quote("//")
5044cpp_quote("// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer")
5045cpp_quote("//")
5046cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
5047cpp_quote("")
5048
5049typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
5050{
5051 UINT64 SerializedSizeInBytes;
5052 union
5053 {
5054 UINT64 NumBottomLevelAccelerationStructurePointers;
5055 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
5056 };
5057} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
5058
5059typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
5060{
5061 GUID DriverOpaqueGUID;
5062 BYTE DriverOpaqueVersioningData[16];
5063} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
5064
5065typedef enum D3D12_SERIALIZED_DATA_TYPE
5066{
5067 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
5068 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1,
5069} D3D12_SERIALIZED_DATA_TYPE;
5070
5071typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
5072{
5073 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
5074 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
5075 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
5076 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
5077 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
5078} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
5079
5080typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
5081{
5082 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5083 UINT64 SerializedSizeInBytesIncludingHeader;
5084 UINT64 DeserializedSizeInBytes;
5085 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
5086} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
5087
5088typedef enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
5089{
5090 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
5091 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
5092 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
5093} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
5094
5095typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
5096{
5097 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5098 UINT64 SerializedSizeInBytesIncludingHeader;
5099 UINT64 DeserializedSizeInBytes;
5100 union
5101 {
5102 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
5103 UINT NumBlocks;
5104 };
5105 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
5106} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
5107
5108typedef enum D3D12_SERIALIZED_BLOCK_TYPE
5109{
5110 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0x0,
5111} D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
5112
5113typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
5114{
5115 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
5116 UINT64 NumBlockPointersAfterHeader;
5117} D3D12_RAYTRACING_SERIALIZED_BLOCK;
5118
5119typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
5120{
5121 UINT64 CurrentSizeInBytes;
5122} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5123
5124typedef struct D3D12_RAYTRACING_INSTANCE_DESC
5125{
5126 FLOAT Transform[3][4];
5127 UINT InstanceID : 24;
5128 UINT InstanceMask : 8;
5129 UINT InstanceContributionToHitGroupIndex : 24;
5130 UINT Flags : 8;
5131 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
5132} D3D12_RAYTRACING_INSTANCE_DESC;
5133
5134typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
5135{
5136 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
5137 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
5138 union
5139 {
5140 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
5141 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
5142 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
5143 };
5144} D3D12_RAYTRACING_GEOMETRY_DESC;
5145
5146typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
5147{
5148 UINT Count;
5149 UINT SubdivisionLevel;
5150 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
5151} D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
5152
5153typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
5154{
5155 UINT NumOmmHistogramEntries;
5156 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY* pOmmHistogram;
5157 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
5158 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
5159} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
5160
5161typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
5162{
5163 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5164 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
5165 UINT NumDescs;
5166 D3D12_ELEMENTS_LAYOUT DescsLayout;
5167 union
5168 {
5169 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
5170 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
5171 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
5172 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC* pOpacityMicromapArrayDesc;
5173 };
5174} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
5175
5176typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
5177{
5178 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
5179 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
5180 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
5181 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
5182} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
5183
5184typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
5185{
5186 UINT64 ResultDataMaxSizeInBytes;
5187 UINT64 ScratchDataSizeInBytes;
5188 UINT64 UpdateScratchDataSizeInBytes;
5189} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
5190
5191typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
5192{
5193 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0x0,
5194 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5195} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
5196
5197typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
5198{
5199 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5200 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
5201} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
5202
5203typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
5204{
5205 UINT64 CurrentSizeInBytes;
5206} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5207
5208typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5209{
5210 UINT64 DecodedSizeInBytes;
5211} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5212
5213typedef enum D3D12_RAY_FLAGS
5214{
5215 D3D12_RAY_FLAG_NONE = 0x00,
5216 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
5217 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
5218 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
5219 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
5220 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
5221 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
5222 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
5223 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
5224 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
5225 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
5226 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400,
5227} D3D12_RAY_FLAGS;
5228cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
5229
5230typedef enum D3D12_HIT_KIND
5231{
5232 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
5233 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
5234} D3D12_HIT_KIND;
5235
5236[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
5237interface ID3D12Device5
5238 : ID3D12Device4
5239{
5240 HRESULT CreateLifetimeTracker(
5241 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
5242 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
5243 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
5244 );
5245
5246 void RemoveDevice();
5247
5248 HRESULT EnumerateMetaCommands(
5249 [annotation("_Inout_")] UINT* pNumMetaCommands,
5250 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
5251 );
5252
5253 HRESULT EnumerateMetaCommandParameters(
5254 [annotation("_In_")] REFGUID CommandId,
5255 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
5256 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
5257 [annotation("_Inout_")] UINT* pParameterCount,
5258 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
5259 );
5260
5261 HRESULT CreateMetaCommand(
5262 [annotation("_In_")] REFGUID CommandId,
5263 [annotation("_In_")] UINT NodeMask,
5264 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
5265 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
5266 [in] REFIID riid,
5267 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
5268 );
5269
5270 HRESULT CreateStateObject(
5271 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
5272 [in] REFIID riid, // ID3D12StateObject
5273 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
5274 );
5275
5276 void GetRaytracingAccelerationStructurePrebuildInfo(
5277 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
5278 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
5279 );
5280
5281 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
5282 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
5283 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
5284}
5285
5286#include "D3D12MarkerApiEnums.idl"
5287
5288typedef struct D3D12_AUTO_BREADCRUMB_NODE
5289{
5290 const char *pCommandListDebugNameA;
5291 const wchar_t *pCommandListDebugNameW;
5292 const char *pCommandQueueDebugNameA;
5293 const wchar_t *pCommandQueueDebugNameW;
5294 ID3D12GraphicsCommandList *pCommandList;
5295 ID3D12CommandQueue *pCommandQueue;
5296 UINT32 BreadcrumbCount;
5297 const UINT32 *pLastBreadcrumbValue;
5298 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5299 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
5300} D3D12_AUTO_BREADCRUMB_NODE;
5301
5302typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
5303{
5304 UINT BreadcrumbIndex;
5305 const wchar_t *pContextString;
5306} D3D12_DRED_BREADCRUMB_CONTEXT;
5307
5308// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
5309typedef struct D3D12_AUTO_BREADCRUMB_NODE1
5310{
5311 const char *pCommandListDebugNameA;
5312 const wchar_t *pCommandListDebugNameW;
5313 const char *pCommandQueueDebugNameA;
5314 const wchar_t *pCommandQueueDebugNameW;
5315 ID3D12GraphicsCommandList *pCommandList;
5316 ID3D12CommandQueue *pCommandQueue;
5317 UINT BreadcrumbCount;
5318 const UINT *pLastBreadcrumbValue;
5319 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5320 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
5321 UINT BreadcrumbContextsCount;
5322 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
5323} D3D12_AUTO_BREADCRUMB_NODE1;
5324
5325// D3D12_DRED_VERSION
5326typedef enum D3D12_DRED_VERSION
5327{
5328 D3D12_DRED_VERSION_1_0 = 0x1,
5329 D3D12_DRED_VERSION_1_1 = 0x2,
5330 D3D12_DRED_VERSION_1_2 = 0x3,
5331 D3D12_DRED_VERSION_1_3 = 0x4,
5332} D3D12_DRED_VERSION;
5333
5334typedef enum D3D12_DRED_FLAGS
5335{
5336 D3D12_DRED_FLAG_NONE = 0,
5337 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
5338 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
5339} D3D12_DRED_FLAGS;
5340cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
5341
5342typedef enum D3D12_DRED_ENABLEMENT
5343{
5344 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
5345 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
5346 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
5347} D3D12_DRED_ENABLEMENT;
5348
5349typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
5350{
5351 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
5352 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
5353} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
5354
5355typedef enum D3D12_DRED_ALLOCATION_TYPE
5356{
5357 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
5358 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
5359 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
5360 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
5361 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
5362 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
5363 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
5364 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
5365 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
5366 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
5367 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
5368 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
5369 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
5370 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
5371 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
5372 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
5373 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
5374 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
5375 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
5376 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
5377 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
5378 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
5379 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
5380 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
5381 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
5382 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
5383 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
5384 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
5385 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
5386
5387
5388 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
5389} D3D12_DRED_ALLOCATION_TYPE;
5390
5391typedef struct D3D12_DRED_ALLOCATION_NODE
5392{
5393 const char *ObjectNameA;
5394 const wchar_t *ObjectNameW;
5395 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5396 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
5397} D3D12_DRED_ALLOCATION_NODE;
5398
5399typedef struct D3D12_DRED_ALLOCATION_NODE1
5400{
5401 const char *ObjectNameA;
5402 const wchar_t *ObjectNameW;
5403 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5404 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
5405 const IUnknown *pObject;
5406} D3D12_DRED_ALLOCATION_NODE1;
5407
5408typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
5409{
5410 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5411} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
5412
5413typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
5414{
5415 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5416} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
5417
5418typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
5419{
5420 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5421 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
5422 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
5423} D3D12_DRED_PAGE_FAULT_OUTPUT;
5424
5425typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
5426{
5427 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5428 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5429 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5430} D3D12_DRED_PAGE_FAULT_OUTPUT1;
5431
5432typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
5433{
5434 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
5435} D3D12_DRED_PAGE_FAULT_FLAGS;
5436cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
5437
5438typedef enum D3D12_DRED_DEVICE_STATE
5439{
5440 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
5441 D3D12_DRED_DEVICE_STATE_HUNG = 3,
5442 D3D12_DRED_DEVICE_STATE_FAULT = 6,
5443 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
5444} D3D12_DRED_DEVICE_STATE;
5445
5446typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
5447{
5448 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5449 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5450 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5451 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
5452
5453} D3D12_DRED_PAGE_FAULT_OUTPUT2;
5454
5455typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
5456{
5457 HRESULT DeviceRemovedReason;
5458 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
5459 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
5460} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
5461
5462typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
5463{
5464 HRESULT DeviceRemovedReason;
5465 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5466 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
5467} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
5468
5469typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
5470{
5471 HRESULT DeviceRemovedReason;
5472 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5473 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
5474 D3D12_DRED_DEVICE_STATE DeviceState;
5475} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
5476
5477typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
5478{
5479 D3D12_DRED_VERSION Version; // Version of the DRED data
5480 union
5481 {
5482 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
5483 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
5484 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
5485 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
5486 };
5487} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
5488
5489[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
5490interface ID3D12DeviceRemovedExtendedDataSettings
5491 : IUnknown
5492{
5493 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
5494 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
5495 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
5496};
5497
5498[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
5499interface ID3D12DeviceRemovedExtendedDataSettings1
5500 : ID3D12DeviceRemovedExtendedDataSettings
5501{
5502 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
5503};
5504
5505[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
5506interface ID3D12DeviceRemovedExtendedDataSettings2
5507 : ID3D12DeviceRemovedExtendedDataSettings1
5508{
5509 void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
5510};
5511
5512
5513[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
5514interface ID3D12DeviceRemovedExtendedData
5515 : IUnknown
5516{
5517 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
5518 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
5519};
5520
5521[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
5522interface ID3D12DeviceRemovedExtendedData1
5523 : ID3D12DeviceRemovedExtendedData
5524{
5525 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
5526 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
5527};
5528
5529[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
5530interface ID3D12DeviceRemovedExtendedData2
5531 : ID3D12DeviceRemovedExtendedData1
5532{
5533 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
5534 D3D12_DRED_DEVICE_STATE GetDeviceState();
5535};
5536
5537typedef enum D3D12_BACKGROUND_PROCESSING_MODE
5538{
5539 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
5540 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
5541 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
5542 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
5543} D3D12_BACKGROUND_PROCESSING_MODE;
5544
5545typedef enum D3D12_MEASUREMENTS_ACTION
5546{
5547 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
5548 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
5549 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
5550 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
5551} D3D12_MEASUREMENTS_ACTION;
5552
5553[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
5554interface ID3D12Device6 : ID3D12Device5
5555{
5556 HRESULT SetBackgroundProcessingMode(
5557 D3D12_BACKGROUND_PROCESSING_MODE Mode,
5558 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
5559 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
5560 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
5561};
5562
5563cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
5564
5565// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5566typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5567{
5568 UINT NodeIndex; // input
5569 UINT Count; // output
5570} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
5571
5572// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
5573typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
5574{
5575 UINT NodeIndex; // input
5576 UINT Count; // input
5577 GUID* pTypes; // output
5578} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
5579
5580typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
5581{
5582 UINT NodeMask;
5583 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
5584 GUID ProtectionType;
5585} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
5586
5587[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
5588interface ID3D12ProtectedResourceSession1
5589 : ID3D12ProtectedResourceSession
5590{
5591 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
5592};
5593
5594[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
5595interface ID3D12Device7 : ID3D12Device6
5596{
5597 HRESULT AddToStateObject(
5598 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
5599 [in] ID3D12StateObject* pStateObjectToGrowFrom,
5600 [in] REFIID riid, // ID3D12StateObject
5601 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
5602 );
5603
5604 HRESULT CreateProtectedResourceSession1(
5605 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
5606 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
5607 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
5608 );
5609};
5610
5611[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
5612interface ID3D12Device8 : ID3D12Device7
5613{
5614 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
5615 UINT visibleMask,
5616 UINT numResourceDescs,
5617 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
5618 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
5619
5620 HRESULT CreateCommittedResource2(
5621 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
5622 D3D12_HEAP_FLAGS HeapFlags,
5623 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5624 D3D12_RESOURCE_STATES InitialResourceState,
5625 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5626 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
5627 [in] REFIID riidResource, // Expected: ID3D12Resource1*
5628 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
5629
5630 HRESULT CreatePlacedResource1(
5631 [annotation("_In_")] ID3D12Heap* pHeap,
5632 UINT64 HeapOffset,
5633 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5634 D3D12_RESOURCE_STATES InitialState,
5635 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5636 [in] REFIID riid, // Expected: ID3D12Resource*
5637 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
5638
5639 void CreateSamplerFeedbackUnorderedAccessView(
5640 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
5641 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
5642 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
5643
5644 void GetCopyableFootprints1(
5645 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
5646 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
5647 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
5648 UINT64 BaseOffset,
5649 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
5650 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
5651 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
5652 [annotation("_Out_opt_")] UINT64* pTotalBytes);
5653};
5654
5655
5656[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
5657interface ID3D12Resource1
5658 : ID3D12Resource
5659{
5660 HRESULT GetProtectedResourceSession(
5661 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5662 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5663}
5664
5665[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
5666interface ID3D12Resource2
5667 : ID3D12Resource1
5668{
5669 D3D12_RESOURCE_DESC1 GetDesc1();
5670}
5671
5672
5673
5674[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
5675interface ID3D12Heap1
5676 : ID3D12Heap
5677{
5678 HRESULT GetProtectedResourceSession(
5679 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5680 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5681}
5682
5683
5684[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
5685interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
5686{
5687 void SetProtectedResourceSession(
5688 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
5689 );
5690}
5691
5692// Beginning Access
5693typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
5694{
5695 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
5696 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
5697 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
5698 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
5699 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5700 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5701 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5702} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
5703
5704typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
5705{
5706 D3D12_CLEAR_VALUE ClearValue;
5707} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
5708
5709typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5710{
5711 UINT AdditionalWidth;
5712 UINT AdditionalHeight;
5713} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5714
5715typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
5716{
5717 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
5718
5719 union
5720 {
5721 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
5722 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5723 };
5724} D3D12_RENDER_PASS_BEGINNING_ACCESS;
5725
5726// Ending Access
5727typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
5728{
5729 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
5730 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
5731 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
5732 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
5733 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5734 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5735 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5736} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
5737
5738typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
5739{
5740 UINT SrcSubresource;
5741 UINT DstSubresource;
5742
5743 UINT DstX;
5744 UINT DstY;
5745 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
5746
5747} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
5748
5749typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
5750{
5751 ID3D12Resource* pSrcResource;
5752 ID3D12Resource* pDstResource;
5753
5754 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
5755 UINT SubresourceCount;
5756 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
5757
5758 DXGI_FORMAT Format;
5759 D3D12_RESOLVE_MODE ResolveMode;
5760
5761 BOOL PreserveResolveSource;
5762
5763} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
5764
5765typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5766{
5767 UINT AdditionalWidth;
5768 UINT AdditionalHeight;
5769} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5770
5771typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
5772{
5773 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
5774
5775 union
5776 {
5777 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
5778 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5779 };
5780} D3D12_RENDER_PASS_ENDING_ACCESS;
5781
5782// Render Target Desc
5783typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
5784{
5785 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5786
5787 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
5788 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
5789
5790} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
5791
5792// Depth-Stencil Desc
5793typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
5794{
5795 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5796
5797 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
5798 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
5799
5800 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
5801 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
5802
5803} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
5804
5805typedef enum D3D12_RENDER_PASS_FLAGS
5806{
5807 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
5808 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5809 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5810 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
5811 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
5812 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
5813} D3D12_RENDER_PASS_FLAGS;
5814cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
5815
5816[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5817interface ID3D12MetaCommand : ID3D12Pageable
5818{
5819 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5820}
5821
5822typedef struct D3D12_DISPATCH_RAYS_DESC
5823{
5824 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5825 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5826 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5827 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5828 UINT Width;
5829 UINT Height;
5830 UINT Depth;
5831} D3D12_DISPATCH_RAYS_DESC;
5832
5833typedef enum D3D12_SET_WORK_GRAPH_FLAGS
5834{
5835 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0x0,
5836 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1,
5837} D3D12_SET_WORK_GRAPH_FLAGS;
5838cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
5839
5840typedef struct D3D12_SET_WORK_GRAPH_DESC
5841{
5842 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5843 D3D12_SET_WORK_GRAPH_FLAGS Flags;
5844 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
5845 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
5846} D3D12_SET_WORK_GRAPH_DESC;
5847
5848typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
5849{
5850 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5851} D3D12_SET_RAYTRACING_PIPELINE_DESC;
5852
5853typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
5854{
5855 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5856} D3D12_SET_GENERIC_PIPELINE_DESC;
5857
5858typedef enum D3D12_PROGRAM_TYPE
5859{
5860 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
5861 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
5862 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
5863} D3D12_PROGRAM_TYPE;
5864
5865typedef struct D3D12_SET_PROGRAM_DESC
5866{
5867 D3D12_PROGRAM_TYPE Type;
5868 union
5869 {
5870 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
5871 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
5872 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
5873 };
5874} D3D12_SET_PROGRAM_DESC;
5875
5876typedef enum D3D12_DISPATCH_MODE
5877{
5878 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
5879 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
5880 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
5881 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
5882} D3D12_DISPATCH_MODE;
5883
5884typedef struct D3D12_NODE_CPU_INPUT
5885{
5886 UINT EntrypointIndex;
5887 UINT NumRecords;
5888 const void* pRecords;
5889 UINT64 RecordStrideInBytes;
5890} D3D12_NODE_CPU_INPUT;
5891
5892typedef struct D3D12_NODE_GPU_INPUT
5893{
5894 UINT EntrypointIndex;
5895 UINT NumRecords;
5896 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
5897} D3D12_NODE_GPU_INPUT;
5898
5899typedef struct D3D12_MULTI_NODE_CPU_INPUT
5900{
5901 UINT NumNodeInputs;
5902 const D3D12_NODE_CPU_INPUT* pNodeInputs;
5903 UINT64 NodeInputStrideInBytes;
5904} D3D12_MULTI_NODE_CPU_INPUT;
5905
5906typedef struct D3D12_MULTI_NODE_GPU_INPUT
5907{
5908 UINT NumNodeInputs;
5909 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
5910} D3D12_MULTI_NODE_GPU_INPUT;
5911
5912typedef struct D3D12_DISPATCH_GRAPH_DESC
5913{
5914 D3D12_DISPATCH_MODE Mode;
5915 union
5916 {
5917 D3D12_NODE_CPU_INPUT NodeCPUInput;
5918 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
5919 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
5920 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
5921 };
5922} D3D12_DISPATCH_GRAPH_DESC;
5923
5924[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5925interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5926{
5927 void BeginRenderPass(
5928 [annotation("_In_")] UINT NumRenderTargets,
5929 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5930 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5931 D3D12_RENDER_PASS_FLAGS Flags
5932 );
5933
5934 void EndRenderPass();
5935
5936 void InitializeMetaCommand(
5937 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5938 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5939 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5940 );
5941
5942 void ExecuteMetaCommand(
5943 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5944 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5945 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5946 );
5947
5948 void BuildRaytracingAccelerationStructure(
5949 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5950 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5951 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5952 );
5953
5954 void EmitRaytracingAccelerationStructurePostbuildInfo(
5955 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5956 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5957 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5958
5959 void CopyRaytracingAccelerationStructure(
5960 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5961 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5962 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5963
5964 void SetPipelineState1(
5965 [annotation("_In_")] ID3D12StateObject* pStateObject);
5966
5967 void DispatchRays(
5968 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5969}
5970
5971typedef enum D3D12_SHADER_CACHE_MODE
5972{
5973 D3D12_SHADER_CACHE_MODE_MEMORY,
5974 D3D12_SHADER_CACHE_MODE_DISK,
5975} D3D12_SHADER_CACHE_MODE;
5976
5977typedef enum D3D12_SHADER_CACHE_FLAGS
5978{
5979 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5980 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5981 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5982} D3D12_SHADER_CACHE_FLAGS;
5983cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
5984
5985typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5986{
5987 GUID Identifier;
5988 D3D12_SHADER_CACHE_MODE Mode;
5989 D3D12_SHADER_CACHE_FLAGS Flags;
5990
5991 UINT MaximumInMemoryCacheSizeBytes;
5992 UINT MaximumInMemoryCacheEntries;
5993
5994 UINT MaximumValueFileSizeBytes;
5995
5996 UINT64 Version;
5997} D3D12_SHADER_CACHE_SESSION_DESC;
5998
5999typedef enum D3D12_BARRIER_LAYOUT
6000{
6001 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
6002 D3D12_BARRIER_LAYOUT_COMMON = 0,
6003 D3D12_BARRIER_LAYOUT_PRESENT = 0,
6004 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
6005 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
6006 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
6007 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
6008 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
6009 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
6010 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
6011 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
6012 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
6013 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
6014 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
6015 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
6016 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
6017 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
6018 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
6019 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
6020 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
6021 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
6022 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
6023 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
6024 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
6025 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
6026 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
6027 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
6028 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
6029 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
6030 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
6031 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
6032 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
6033 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31,
6034
6035} D3D12_BARRIER_LAYOUT;
6036
6037typedef enum D3D12_BARRIER_SYNC
6038{
6039 D3D12_BARRIER_SYNC_NONE = 0x0,
6040 D3D12_BARRIER_SYNC_ALL = 0x1,
6041 D3D12_BARRIER_SYNC_DRAW = 0x2,
6042 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
6043 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
6044 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
6045 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
6046 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
6047 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
6048 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
6049 D3D12_BARRIER_SYNC_COPY = 0x200,
6050 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
6051 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
6052 D3D12_BARRIER_SYNC_PREDICATION = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
6053 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
6054 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
6055 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
6056 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
6057 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
6058 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
6059 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
6060 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
6061 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
6062 D3D12_BARRIER_SYNC_SPLIT = 0x80000000,
6063} D3D12_BARRIER_SYNC;
6064cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
6065
6066typedef enum D3D12_BARRIER_ACCESS
6067{
6068 D3D12_BARRIER_ACCESS_COMMON = 0,
6069 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
6070 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
6071 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
6072 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
6073 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
6074 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
6075 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
6076 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
6077 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
6078 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
6079 D3D12_BARRIER_ACCESS_PREDICATION = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
6080 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
6081 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
6082 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
6083 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
6084 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
6085 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
6086 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
6087 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
6088 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
6089 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
6090 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
6091 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
6092 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
6093 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000,
6094} D3D12_BARRIER_ACCESS;
6095cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
6096
6097typedef enum D3D12_BARRIER_TYPE
6098{
6099 D3D12_BARRIER_TYPE_GLOBAL,
6100 D3D12_BARRIER_TYPE_TEXTURE,
6101 D3D12_BARRIER_TYPE_BUFFER,
6102} D3D12_BARRIER_TYPE;
6103
6104typedef enum D3D12_TEXTURE_BARRIER_FLAGS
6105{
6106 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
6107 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
6108} D3D12_TEXTURE_BARRIER_FLAGS;
6109cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
6110
6111typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
6112{
6113 UINT IndexOrFirstMipLevel;
6114 UINT NumMipLevels;
6115 UINT FirstArraySlice;
6116 UINT NumArraySlices;
6117 UINT FirstPlane;
6118 UINT NumPlanes;
6119} D3D12_BARRIER_SUBRESOURCE_RANGE;
6120
6121typedef struct D3D12_GLOBAL_BARRIER
6122{
6123 D3D12_BARRIER_SYNC SyncBefore;
6124 D3D12_BARRIER_SYNC SyncAfter;
6125 D3D12_BARRIER_ACCESS AccessBefore;
6126 D3D12_BARRIER_ACCESS AccessAfter;
6127} D3D12_GLOBAL_BARRIER;
6128
6129typedef struct D3D12_TEXTURE_BARRIER
6130{
6131 D3D12_BARRIER_SYNC SyncBefore;
6132 D3D12_BARRIER_SYNC SyncAfter;
6133 D3D12_BARRIER_ACCESS AccessBefore;
6134 D3D12_BARRIER_ACCESS AccessAfter;
6135 D3D12_BARRIER_LAYOUT LayoutBefore;
6136 D3D12_BARRIER_LAYOUT LayoutAfter;
6137 [annotation("_In_")] ID3D12Resource *pResource;
6138 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
6139 D3D12_TEXTURE_BARRIER_FLAGS Flags;
6140} D3D12_TEXTURE_BARRIER;
6141
6142typedef struct D3D12_BUFFER_BARRIER
6143{
6144 D3D12_BARRIER_SYNC SyncBefore;
6145 D3D12_BARRIER_SYNC SyncAfter;
6146 D3D12_BARRIER_ACCESS AccessBefore;
6147 D3D12_BARRIER_ACCESS AccessAfter;
6148 [annotation("_In_")] ID3D12Resource *pResource;
6149 UINT64 Offset;
6150 UINT64 Size;
6151} D3D12_BUFFER_BARRIER;
6152
6153typedef struct D3D12_BARRIER_GROUP
6154{
6155 D3D12_BARRIER_TYPE Type;
6156 UINT32 NumBarriers;
6157 union
6158 {
6159 [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
6160 [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
6161 [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
6162 };
6163} D3D12_BARRIER_GROUP;
6164
6165[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
6166interface ID3D12ShaderCacheSession
6167 : ID3D12DeviceChild
6168{
6169 HRESULT FindValue(
6170 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6171 UINT KeySize,
6172 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
6173 [annotation("_Inout_")] UINT* pValueSize);
6174 HRESULT StoreValue(
6175 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6176 UINT KeySize,
6177 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
6178 UINT ValueSize);
6179
6180 void SetDeleteOnDestroy();
6181 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
6182};
6183
6184typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
6185{
6186 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
6187 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
6188 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
6189 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
6190} D3D12_SHADER_CACHE_KIND_FLAGS;
6191cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
6192
6193typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
6194{
6195 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
6196 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
6197 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
6198} D3D12_SHADER_CACHE_CONTROL_FLAGS;
6199cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
6200
6201[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
6202interface ID3D12Device9
6203 : ID3D12Device8
6204{
6205 HRESULT CreateShaderCacheSession(
6206 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
6207 REFIID riid,
6208 [annotation("_COM_Outptr_opt_")] void** ppvSession);
6209
6210 HRESULT ShaderCacheControl(
6211 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
6212 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
6213
6214 HRESULT CreateCommandQueue1(
6215 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
6216 REFIID CreatorID,
6217 [in] REFIID riid, // Expected: ID3D12CommandQueue
6218 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
6219 );
6220};
6221
6222[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
6223interface ID3D12Device10
6224 : ID3D12Device9
6225{
6226 HRESULT CreateCommittedResource3(
6227 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
6228 D3D12_HEAP_FLAGS HeapFlags,
6229 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6230 D3D12_BARRIER_LAYOUT InitialLayout,
6231 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6232 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
6233 UINT32 NumCastableFormats,
6234 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6235 [in] REFIID riidResource, // Expected: ID3D12Resource1*
6236 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
6237
6238 HRESULT CreatePlacedResource2(
6239 [annotation("_In_")] ID3D12Heap* pHeap,
6240 UINT64 HeapOffset,
6241 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6242 D3D12_BARRIER_LAYOUT InitialLayout,
6243 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6244 UINT32 NumCastableFormats,
6245 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6246 [in] REFIID riid, // Expected: ID3D12Resource*
6247 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
6248
6249 HRESULT CreateReservedResource2(
6250 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
6251 D3D12_BARRIER_LAYOUT InitialLayout,
6252 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6253 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
6254 UINT32 NumCastableFormats,
6255 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6256 [in] REFIID riid, // Expected: ID3D12Resource1*
6257 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
6258 );
6259};
6260
6261[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
6262interface ID3D12Device11
6263 : ID3D12Device10
6264{
6265 void CreateSampler2(
6266 [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
6267 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
6268};
6269
6270[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
6271interface ID3D12Device12
6272 : ID3D12Device11
6273{
6274 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
6275 UINT visibleMask,
6276 UINT numResourceDescs,
6277 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
6278 [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
6279 [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
6280 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
6281};
6282
6283[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
6284interface ID3D12Device13
6285 : ID3D12Device12
6286{
6287 HRESULT OpenExistingHeapFromAddress1(
6288 [annotation("_In_")] const void* pAddress,
6289 SIZE_T size,
6290 [in] REFIID riid, // Expected: ID3D12Heap
6291 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
6292 );
6293};
6294
6295[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
6296interface ID3D12Device14 : ID3D12Device13
6297{
6298 HRESULT CreateRootSignatureFromSubobjectInLibrary(
6299 [annotation("_In_")] UINT nodeMask,
6300 [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
6301 [annotation("_In_")] SIZE_T blobLengthInBytes,
6302 [annotation("_In_opt_")] LPCWSTR subobjectName,
6303 [in] REFIID riid, // Expected ID3D12RootSignature
6304 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
6305};
6306
6307typedef union D3D12_VERSION_NUMBER
6308{
6309 UINT64 Version;
6310 UINT16 VersionParts[4];
6311} D3D12_VERSION_NUMBER;
6312
6313// D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT
6314typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
6315{
6316 WCHAR szAdapterFamily[128];
6317 UINT64 MinimumABISupportVersion;
6318 UINT64 MaximumABISupportVersion;
6319 D3D12_VERSION_NUMBER CompilerVersion;
6320 D3D12_VERSION_NUMBER ApplicationProfileVersion;
6321} D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
6322
6323
6324typedef void(__stdcall* D3D12PipelineStateFunc) (
6325 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6326 UINT KeySize,
6327 UINT Version,
6328 const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
6329 [annotation("_Inout_opt_")] void* pContext
6330 );
6331
6332typedef void(__stdcall* D3D12StateObjectFunc) (
6333 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6334 UINT KeySize,
6335 UINT Version,
6336 const D3D12_STATE_OBJECT_DESC* pDesc,
6337 [annotation("_In_reads_bytes_(ParentKeySize)")] const void* pParentKey,
6338 UINT ParentKeySize,
6339 [annotation("_Inout_opt_")] void* pContext
6340 );
6341
6342
6343typedef struct D3D12_APPLICATION_DESC
6344{
6345 LPCWSTR pExeFilename;
6346 LPCWSTR pName;
6347 D3D12_VERSION_NUMBER Version;
6348 LPCWSTR pEngineName;
6349 D3D12_VERSION_NUMBER EngineVersion;
6350} D3D12_APPLICATION_DESC;
6351
6352typedef void(__stdcall* D3D12ApplicationDescFunc) (
6353 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
6354 [annotation("_Inout_opt_")] void* pContext
6355 );
6356
6357typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
6358{
6359 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
6360 UINT KeySize;
6361 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
6362 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
6363} D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
6364
6365[uuid(c56060b7-b5fc-4135-98e0-a1e9997eace0), object, local, pointer_default(unique)]
6366interface ID3D12StateObjectDatabase
6367 : IUnknown
6368{
6369 HRESULT SetApplicationDesc(
6370 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc);
6371
6372 HRESULT GetApplicationDesc(
6373 [annotation("_In_")] D3D12ApplicationDescFunc CallbackFunc,
6374 [annotation("_Inout_opt_")] void* pContext);
6375
6376 HRESULT StorePipelineStateDesc(
6377 [annotation("_In_reads_(KeySize)")] const void* pKey,
6378 UINT KeySize,
6379 UINT Version,
6380 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc);
6381
6382 HRESULT FindPipelineStateDesc(
6383 [annotation("_In_reads_(KeySize)")] const void* pKey,
6384 UINT KeySize,
6385 [annotation("_In_")] D3D12PipelineStateFunc CallbackFunc,
6386 [annotation("_Inout_opt_")] void* pContext);
6387
6388 HRESULT StoreStateObjectDesc(
6389 [annotation("_In_reads_(KeySize)")] const void* pKey,
6390 UINT KeySize,
6391 UINT Version,
6392 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
6393 [annotation("_In_reads_opt_(StateObjectToGrowFromKeySize)")] const void* pStateObjectToGrowFromKey,
6394 UINT StateObjectToGrowFromKeySize);
6395
6396 HRESULT FindStateObjectDesc(
6397 [annotation("_In_reads_(keySize)")] const void* pKey,
6398 UINT KeySize,
6399 D3D12StateObjectFunc CallbackFunc,
6400 [annotation("_Inout_opt_")] void* pContext);
6401
6402 HRESULT FindObjectVersion(
6403 [annotation("_In_reads_(keySize)")] const void* pKey,
6404 UINT KeySize,
6405 [annotation("_Out_")] UINT* pVersion);
6406};
6407
6408
6409
6410[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
6411interface ID3D12VirtualizationGuestDevice
6412 : IUnknown
6413{
6414 HRESULT ShareWithHost(
6415 [annotation("_In_")] ID3D12DeviceChild* pObject,
6416 [annotation("_Out_")] HANDLE* pHandle
6417 );
6418
6419 HRESULT CreateFenceFd(
6420 [annotation("_In_")] ID3D12Fence *pFence,
6421 UINT64 FenceValue,
6422 [annotation("_Out_")] int *pFenceFd
6423 );
6424};
6425
6426
6427
6428[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
6429interface ID3D12Tools
6430 : IUnknown
6431{
6432 void EnableShaderInstrumentation(BOOL bEnable);
6433 BOOL ShaderInstrumentationEnabled();
6434}
6435
6436[uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
6437interface ID3D12Tools1
6438 : ID3D12Tools
6439{
6440 HRESULT ReserveGPUVARangesAtCreate(
6441 [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges,
6442 [annotation("_In_")] UINT uiNumRanges);
6443 void ClearReservedGPUVARangesList();
6444}
6445
6446[uuid(01d393c5-c9b0-42a1-958c-c26b02d4d097), object, local, pointer_default(unique)]
6447interface ID3D12Tools2
6448 : ID3D12Tools1
6449{
6450 HRESULT SetApplicationSpecificDriverState(
6451 [annotation("_In_")] IUnknown* pAdapter,
6452 [annotation("_In_opt_")] ID3DBlob* pBlob);
6453};
6454
6455
6456[uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
6457interface ID3D12PageableTools
6458 : IUnknown
6459{
6460 HRESULT GetAllocation(
6461 [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
6462}
6463
6464[uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
6465interface ID3D12DeviceTools
6466 : IUnknown
6467{
6468 void SetNextAllocationAddress(
6469 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
6470}
6471
6472typedef enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
6473{
6474 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
6475 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
6476 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
6477 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4,
6478} D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
6479
6480[uuid(e30e9fc7-e641-4d6e-8a81-9dd9206ec47a), object, local, pointer_default(unique)]
6481interface ID3D12DeviceTools1
6482 : ID3D12DeviceTools
6483{
6484 HRESULT GetApplicationSpecificDriverState(
6485 [annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
6486 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS GetApplicationSpecificDriverBlobStatus();
6487}
6488
6489typedef struct D3D12_SUBRESOURCE_DATA
6490{
6491 const void* pData;
6492 LONG_PTR RowPitch;
6493 LONG_PTR SlicePitch;
6494} D3D12_SUBRESOURCE_DATA;
6495
6496typedef struct D3D12_MEMCPY_DEST
6497{
6498 void* pData;
6499 SIZE_T RowPitch;
6500 SIZE_T SlicePitch;
6501} D3D12_MEMCPY_DEST;
6502
6503
6504
6505cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
6506cpp_quote( "#include \"d3d12sdklayers.h\" ")
6507cpp_quote( "#endif ")
6508
6509
6510cpp_quote("")
6511cpp_quote("///////////////////////////////////////////////////////////////////////////")
6512cpp_quote("// D3D12CreateDevice")
6513cpp_quote("// ------------------")
6514cpp_quote("//")
6515cpp_quote("// pAdapter")
6516cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
6517cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
6518cpp_quote("// MinimumFeatureLevel")
6519cpp_quote("// The minimum feature level required for successful device creation.")
6520cpp_quote("// riid")
6521cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
6522cpp_quote("// ppDevice")
6523cpp_quote("// Pointer to returned interface. May be NULL.")
6524cpp_quote("//")
6525cpp_quote("// Return Values")
6526cpp_quote("// Any of those documented for ")
6527cpp_quote("// CreateDXGIFactory1")
6528cpp_quote("// IDXGIFactory::EnumAdapters")
6529cpp_quote("// D3D12CreateDevice")
6530cpp_quote("//")
6531cpp_quote("///////////////////////////////////////////////////////////////////////////")
6532cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
6533cpp_quote(" D3D_FEATURE_LEVEL, ")
6534cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
6535cpp_quote("")
6536cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
6537cpp_quote(" _In_opt_ IUnknown* pAdapter,")
6538cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
6539cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
6540cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
6541cpp_quote("")
6542
6543cpp_quote("")
6544cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
6545cpp_quote("")
6546cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6547cpp_quote("")
6548
6549cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6550cpp_quote("// D3D12EnableExperimentalFeatures")
6551cpp_quote("//")
6552cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
6553cpp_quote("// ")
6554cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
6555cpp_quote("// a configuration struct that can be passed alongside the GUID.")
6556cpp_quote("// ")
6557cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
6558cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
6559cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
6560cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
6561cpp_quote("//")
6562cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
6563cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
6564cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
6565cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
6566cpp_quote("//")
6567cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
6568cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
6569cpp_quote("// in are known to be incompatible with each other, or other errors.")
6570cpp_quote("// Returns S_OK otherwise.")
6571cpp_quote("//")
6572cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6573cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
6574cpp_quote(" UINT NumFeatures,")
6575cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
6576cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
6577cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
6578cpp_quote("")
6579cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6580cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
6581cpp_quote("//")
6582cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
6583cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
6584cpp_quote("//")
6585cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6586cpp_quote("//")
6587cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6588cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
6589cpp_quote(" 0x76f5573e,")
6590cpp_quote(" 0xf13a,")
6591cpp_quote(" 0x40f5,")
6592cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
6593cpp_quote("};")
6594cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6595cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
6596cpp_quote("//")
6597cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
6598cpp_quote("// meaning texture tile data-inheritance is allowed.")
6599cpp_quote("//")
6600cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6601cpp_quote("//")
6602cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6603cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
6604cpp_quote(" 0xc9c4725f,")
6605cpp_quote(" 0xa81a,")
6606cpp_quote(" 0x4f56,")
6607cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
6608cpp_quote("};")
6609cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6610cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
6611cpp_quote("//")
6612cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
6613cpp_quote("// driver support is still required for this feature.")
6614cpp_quote("//")
6615cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6616cpp_quote("//")
6617cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6618cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
6619cpp_quote(" 0x45dc51f3,")
6620cpp_quote(" 0x767f,")
6621cpp_quote(" 0x4588,")
6622cpp_quote(" { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
6623cpp_quote("};")
6624cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6625cpp_quote("// D3D12GetInterface")
6626cpp_quote("//")
6627cpp_quote("// Retrieve Global D3D12 Interface.")
6628cpp_quote("//")
6629cpp_quote("")
6630cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
6631cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
6632cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
6633cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
6634cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
6635cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
6636cpp_quote("DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);")
6637cpp_quote("")
6638cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
6639cpp_quote("")
6640cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6641cpp_quote("")
6642
6643//==================================================================================================================================
6644//
6645// SDK Configuration
6646//
6647//==================================================================================================================================
6648
6649[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
6650interface ID3D12SDKConfiguration
6651 : IUnknown
6652{
6653 HRESULT SetSDKVersion(
6654 UINT SDKVersion,
6655 [annotation("_In_z_")] LPCSTR SDKPath
6656 );
6657}
6658
6659[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
6660interface ID3D12SDKConfiguration1
6661 : ID3D12SDKConfiguration
6662{
6663 HRESULT CreateDeviceFactory(
6664 UINT SDKVersion,
6665 [annotation("_In_")] LPCSTR SDKPath,
6666 REFIID riid, // Expected: ID3D12DeviceFactory
6667 [annotation("_COM_Outptr_")] void **ppvFactory
6668 );
6669 void FreeUnusedSDKs();
6670}
6671
6672typedef enum D3D12_DEVICE_FACTORY_FLAGS
6673{
6674 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
6675 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
6676 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
6677 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
6678} D3D12_DEVICE_FACTORY_FLAGS;
6679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
6680
6681[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
6682interface ID3D12DeviceFactory
6683 : IUnknown
6684{
6685 HRESULT InitializeFromGlobalState();
6686 HRESULT ApplyToGlobalState();
6687
6688 HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
6689 D3D12_DEVICE_FACTORY_FLAGS GetFlags();
6690
6691 HRESULT GetConfigurationInterface(
6692 REFCLSID clsid,
6693 REFIID iid,
6694 [annotation("_COM_Outptr_")] void **ppv);
6695
6696 HRESULT EnableExperimentalFeatures(
6697 UINT NumFeatures,
6698 [annotation("_In_reads_(NumFeatures)")] const IID *pIIDs,
6699 [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
6700 [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
6701
6702 HRESULT CreateDevice(
6703 [annotation("_In_opt_")] IUnknown *adapter,
6704 D3D_FEATURE_LEVEL FeatureLevel,
6705 REFIID riid,
6706 [annotation("_COM_Outptr_opt_")] void **ppvDevice);
6707};
6708
6709typedef enum D3D12_DEVICE_FLAGS
6710{
6711 D3D12_DEVICE_FLAG_NONE = 0,
6712 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
6713 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
6714 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
6715 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
6716 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
6717 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
6718 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
6719 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
6720 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
6721 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
6722 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
6723} D3D12_DEVICE_FLAGS;
6724cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
6725
6726typedef struct D3D12_DEVICE_CONFIGURATION_DESC
6727{
6728 D3D12_DEVICE_FLAGS Flags;
6729 UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
6730 UINT SDKVersion;
6731 UINT NumEnabledExperimentalFeatures;
6732} D3D12_DEVICE_CONFIGURATION_DESC;
6733
6734[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
6735interface ID3D12DeviceConfiguration
6736 : IUnknown
6737{
6738 D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
6739 HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
6740
6741 HRESULT SerializeVersionedRootSignature(
6742 [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
6743 [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
6744 [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
6745
6746 HRESULT CreateVersionedRootSignatureDeserializer(
6747 [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
6748 SIZE_T Size,
6749 REFIID riid,
6750 [annotation("_COM_Outptr_")] void **ppvDeserializer);
6751};
6752
6753[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
6754interface ID3D12DeviceConfiguration1
6755 : ID3D12DeviceConfiguration
6756{
6757 HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
6758 [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
6759 SIZE_T Size,
6760 LPCWSTR RootSignatureSubobjectName,
6761 REFIID riid,
6762 [annotation("_COM_Outptr_")] void** ppvDeserializer);
6763};
6764
6765
6766typedef enum D3D12_STATE_OBJECT_DATABASE_FLAGS
6767{
6768 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0x0,
6769 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1,
6770} D3D12_STATE_OBJECT_DATABASE_FLAGS;
6771cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )")
6772
6773[uuid(f5b066f0-648a-4611-bd41-27fd0948b9eb), object, local, pointer_default(unique)]
6774interface ID3D12StateObjectDatabaseFactory
6775 : IUnknown
6776{
6777 HRESULT CreateStateObjectDatabaseFromFile(
6778 LPCWSTR pDatabaseFile,
6779 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
6780 REFIID riid,
6781 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvStateObjectDatabase
6782 );
6783};
6784
6785
6786typedef enum D3D12_AXIS_SHADING_RATE
6787{
6788 D3D12_AXIS_SHADING_RATE_1X = 0x0,
6789 D3D12_AXIS_SHADING_RATE_2X = 0x1,
6790 D3D12_AXIS_SHADING_RATE_4X = 0x2
6791} D3D12_AXIS_SHADING_RATE;
6792
6793
6794cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
6795cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
6796
6797cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
6798
6799cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
6800cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
6801
6802typedef enum D3D12_SHADING_RATE
6803{
6804 D3D12_SHADING_RATE_1X1 = 0x0,
6805 D3D12_SHADING_RATE_1X2 = 0x1,
6806 D3D12_SHADING_RATE_2X1 = 0x4,
6807 D3D12_SHADING_RATE_2X2 = 0x5,
6808 D3D12_SHADING_RATE_2X4 = 0x6,
6809 D3D12_SHADING_RATE_4X2 = 0x9,
6810 D3D12_SHADING_RATE_4X4 = 0xA
6811} D3D12_SHADING_RATE;
6812
6813typedef enum D3D12_SHADING_RATE_COMBINER
6814{
6815 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
6816 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
6817 D3D12_SHADING_RATE_COMBINER_MIN = 2,
6818 D3D12_SHADING_RATE_COMBINER_MAX = 3,
6819 D3D12_SHADING_RATE_COMBINER_SUM = 4,
6820} D3D12_SHADING_RATE_COMBINER;
6821
6822[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
6823interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
6824{
6825 void RSSetShadingRate(
6826 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
6827 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
6828
6829 void RSSetShadingRateImage(
6830 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
6831}
6832
6833typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
6834{
6835 UINT ThreadGroupCountX;
6836 UINT ThreadGroupCountY;
6837 UINT ThreadGroupCountZ;
6838} D3D12_DISPATCH_MESH_ARGUMENTS;
6839
6840[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
6841interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
6842{
6843 void DispatchMesh(
6844 [annotation("_In_")] UINT ThreadGroupCountX,
6845 [annotation("_In_")] UINT ThreadGroupCountY,
6846 [annotation("_In_")] UINT ThreadGroupCountZ
6847 );
6848}
6849
6850[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
6851interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
6852{
6853 void Barrier(
6854 UINT32 NumBarrierGroups,
6855 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
6856 );
6857};
6858
6859[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
6860interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
6861{
6862 void OMSetFrontAndBackStencilRef(
6863 [annotation("_In_")] UINT FrontStencilRef,
6864 [annotation("_In_")] UINT BackStencilRef
6865 );
6866};
6867
6868[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
6869interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
6870{
6871 void RSSetDepthBias(
6872 [annotation("_In_")] FLOAT DepthBias,
6873 [annotation("_In_")] FLOAT DepthBiasClamp,
6874 [annotation("_In_")] FLOAT SlopeScaledDepthBias
6875 );
6876
6877 void IASetIndexBufferStripCutValue(
6878 [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
6879 );
6880};
6881
6882[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
6883interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
6884{
6885 void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
6886 void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
6887};
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897[uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
6898interface ID3D12DSRDeviceFactory : IUnknown
6899{
6900 HRESULT CreateDSRDevice(
6901 [in] ID3D12Device *pD3D12Device,
6902 [in] UINT NodeMask,
6903 [in] REFIID riid, // Expected IDSRDevice
6904 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
6905}
6906
6907[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
6908interface ID3D12GBVDiagnostics
6909 : IUnknown
6910{
6911 HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
6912 HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
6913 HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
6914 HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource,
6915 [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
6916 [annotation("_In_opt_")] UINT32* pResourceHash,
6917 [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
6918
6919 void GBVReserved0();
6920
6921 void GBVReserved1();
6922}
6923
6924
6925//----------------------------------------------------------------------------------------------------------
6926// Old types which are still supported by the runtime for app-compat
6927
6928cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
6929#pragma endregion
6930
6931
6932cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
6933cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
6934cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
6935cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
6936cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
6937cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
6938cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
6939cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
6940cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
6941cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
6942cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
6943cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
6944cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);" )
6945cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
6946cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
6947cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
6948cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
6949cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
6950cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
6951cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
6952cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
6953cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);" )
6954cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
6955cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
6956cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
6957cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
6958cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
6959cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
6960cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
6961cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
6962cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
6963cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
6964cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
6965cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
6966cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
6967cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
6968cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
6969cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);" )
6970cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
6971cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
6972cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
6973cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
6974cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
6975cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
6976cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
6977cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
6978cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
6979cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
6980cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
6981cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
6982cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
6983cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
6984cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
6985cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
6986cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
6987cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
6988cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
6989cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
6990cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
6991cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
6992cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
6993cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
6994cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
6995cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);" )
6996cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
6997cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
6998cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
6999cpp_quote( "DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);" )
7000cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
7001cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
7002cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);" )
7003cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
7004cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
7005cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
7006cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
7007cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
7008cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);" )
7009cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
7010cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
7011cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
7012cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
7013cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
7014cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
7015cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
7016cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h
new file mode 100644
index 0000000..ec9ff5f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h
@@ -0,0 +1,899 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
91#define __VulkanOn12CreatorID_FWD_DEFINED__
92typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
93
94#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
95
96
97#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
98#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
99typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
100
101#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
102
103
104#ifndef __DirectMLPyTorchCreatorID_FWD_DEFINED__
105#define __DirectMLPyTorchCreatorID_FWD_DEFINED__
106typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
107
108#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
109
110
111#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
112#define __DirectMLWebNNCreatorID_FWD_DEFINED__
113typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
114
115#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
116
117
118/* header files for imported files */
119#include "oaidl.h"
120#include "ocidl.h"
121#include "d3d11on12.h"
122
123#ifdef __cplusplus
124extern "C"{
125#endif
126
127
128/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
129/* [local] */
130
131#include <winapifamily.h>
132#pragma region Desktop Family
133#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
134typedef
135enum D3D12_COMPATIBILITY_SHARED_FLAGS
136 {
137 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
138 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
139 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
140 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
141 } D3D12_COMPATIBILITY_SHARED_FLAGS;
142
143DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
144typedef
145enum D3D12_REFLECT_SHARED_PROPERTY
146 {
147 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
148 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
149 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
150 } D3D12_REFLECT_SHARED_PROPERTY;
151
152
153
154extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
155extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
156
157#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
158#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
159
160/* interface ID3D12CompatibilityDevice */
161/* [unique][local][object][uuid] */
162
163
164EXTERN_C const IID IID_ID3D12CompatibilityDevice;
165
166#if defined(__cplusplus) && !defined(CINTERFACE)
167
168 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
169 ID3D12CompatibilityDevice : public IUnknown
170 {
171 public:
172 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
173 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
174 D3D12_HEAP_FLAGS HeapFlags,
175 _In_ const D3D12_RESOURCE_DESC *pDesc,
176 D3D12_RESOURCE_STATES InitialResourceState,
177 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
178 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
179 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
180 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
181 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
182 REFIID riid,
183 _COM_Outptr_opt_ void **ppResource) = 0;
184
185 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
186 _In_ const D3D12_HEAP_DESC *pHeapDesc,
187 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
188 REFIID riid,
189 _COM_Outptr_opt_ void **ppHeap) = 0;
190
191 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
192 _In_ ID3D12Object *pHeapOrResource,
193 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
194 _Out_writes_bytes_(DataSize) void *pData,
195 UINT DataSize) = 0;
196
197 };
198
199
200#else /* C style interface */
201
202 typedef struct ID3D12CompatibilityDeviceVtbl
203 {
204 BEGIN_INTERFACE
205
206 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
207 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
208 ID3D12CompatibilityDevice * This,
209 REFIID riid,
210 _COM_Outptr_ void **ppvObject);
211
212 DECLSPEC_XFGVIRT(IUnknown, AddRef)
213 ULONG ( STDMETHODCALLTYPE *AddRef )(
214 ID3D12CompatibilityDevice * This);
215
216 DECLSPEC_XFGVIRT(IUnknown, Release)
217 ULONG ( STDMETHODCALLTYPE *Release )(
218 ID3D12CompatibilityDevice * This);
219
220 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
221 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
222 ID3D12CompatibilityDevice * This,
223 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
224 D3D12_HEAP_FLAGS HeapFlags,
225 _In_ const D3D12_RESOURCE_DESC *pDesc,
226 D3D12_RESOURCE_STATES InitialResourceState,
227 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
228 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
229 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
230 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
231 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
232 REFIID riid,
233 _COM_Outptr_opt_ void **ppResource);
234
235 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
236 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
237 ID3D12CompatibilityDevice * This,
238 _In_ const D3D12_HEAP_DESC *pHeapDesc,
239 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
240 REFIID riid,
241 _COM_Outptr_opt_ void **ppHeap);
242
243 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
244 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
245 ID3D12CompatibilityDevice * This,
246 _In_ ID3D12Object *pHeapOrResource,
247 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
248 _Out_writes_bytes_(DataSize) void *pData,
249 UINT DataSize);
250
251 END_INTERFACE
252 } ID3D12CompatibilityDeviceVtbl;
253
254 interface ID3D12CompatibilityDevice
255 {
256 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
257 };
258
259
260
261#ifdef COBJMACROS
262
263
264#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
265 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
266
267#define ID3D12CompatibilityDevice_AddRef(This) \
268 ( (This)->lpVtbl -> AddRef(This) )
269
270#define ID3D12CompatibilityDevice_Release(This) \
271 ( (This)->lpVtbl -> Release(This) )
272
273
274#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
275 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
276
277#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
278 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
279
280#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
281 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
282
283#endif /* COBJMACROS */
284
285
286#endif /* C style interface */
287
288
289
290
291#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
292
293
294#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
295#define __D3D11On12CreatorID_INTERFACE_DEFINED__
296
297/* interface D3D11On12CreatorID */
298/* [unique][local][object][uuid] */
299
300
301EXTERN_C const IID IID_D3D11On12CreatorID;
302
303#if defined(__cplusplus) && !defined(CINTERFACE)
304
305 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
306 D3D11On12CreatorID : public IUnknown
307 {
308 public:
309 };
310
311
312#else /* C style interface */
313
314 typedef struct D3D11On12CreatorIDVtbl
315 {
316 BEGIN_INTERFACE
317
318 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
319 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
320 D3D11On12CreatorID * This,
321 REFIID riid,
322 _COM_Outptr_ void **ppvObject);
323
324 DECLSPEC_XFGVIRT(IUnknown, AddRef)
325 ULONG ( STDMETHODCALLTYPE *AddRef )(
326 D3D11On12CreatorID * This);
327
328 DECLSPEC_XFGVIRT(IUnknown, Release)
329 ULONG ( STDMETHODCALLTYPE *Release )(
330 D3D11On12CreatorID * This);
331
332 END_INTERFACE
333 } D3D11On12CreatorIDVtbl;
334
335 interface D3D11On12CreatorID
336 {
337 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
338 };
339
340
341
342#ifdef COBJMACROS
343
344
345#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
347
348#define D3D11On12CreatorID_AddRef(This) \
349 ( (This)->lpVtbl -> AddRef(This) )
350
351#define D3D11On12CreatorID_Release(This) \
352 ( (This)->lpVtbl -> Release(This) )
353
354
355#endif /* COBJMACROS */
356
357
358#endif /* C style interface */
359
360
361
362
363#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
364
365
366#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
367#define __D3D9On12CreatorID_INTERFACE_DEFINED__
368
369/* interface D3D9On12CreatorID */
370/* [unique][local][object][uuid] */
371
372
373EXTERN_C const IID IID_D3D9On12CreatorID;
374
375#if defined(__cplusplus) && !defined(CINTERFACE)
376
377 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
378 D3D9On12CreatorID : public IUnknown
379 {
380 public:
381 };
382
383
384#else /* C style interface */
385
386 typedef struct D3D9On12CreatorIDVtbl
387 {
388 BEGIN_INTERFACE
389
390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
392 D3D9On12CreatorID * This,
393 REFIID riid,
394 _COM_Outptr_ void **ppvObject);
395
396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
397 ULONG ( STDMETHODCALLTYPE *AddRef )(
398 D3D9On12CreatorID * This);
399
400 DECLSPEC_XFGVIRT(IUnknown, Release)
401 ULONG ( STDMETHODCALLTYPE *Release )(
402 D3D9On12CreatorID * This);
403
404 END_INTERFACE
405 } D3D9On12CreatorIDVtbl;
406
407 interface D3D9On12CreatorID
408 {
409 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
410 };
411
412
413
414#ifdef COBJMACROS
415
416
417#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
418 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
419
420#define D3D9On12CreatorID_AddRef(This) \
421 ( (This)->lpVtbl -> AddRef(This) )
422
423#define D3D9On12CreatorID_Release(This) \
424 ( (This)->lpVtbl -> Release(This) )
425
426
427#endif /* COBJMACROS */
428
429
430#endif /* C style interface */
431
432
433
434
435#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
436
437
438#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
439#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
440
441/* interface OpenGLOn12CreatorID */
442/* [unique][local][object][uuid] */
443
444
445EXTERN_C const IID IID_OpenGLOn12CreatorID;
446
447#if defined(__cplusplus) && !defined(CINTERFACE)
448
449 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
450 OpenGLOn12CreatorID : public IUnknown
451 {
452 public:
453 };
454
455
456#else /* C style interface */
457
458 typedef struct OpenGLOn12CreatorIDVtbl
459 {
460 BEGIN_INTERFACE
461
462 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
463 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
464 OpenGLOn12CreatorID * This,
465 REFIID riid,
466 _COM_Outptr_ void **ppvObject);
467
468 DECLSPEC_XFGVIRT(IUnknown, AddRef)
469 ULONG ( STDMETHODCALLTYPE *AddRef )(
470 OpenGLOn12CreatorID * This);
471
472 DECLSPEC_XFGVIRT(IUnknown, Release)
473 ULONG ( STDMETHODCALLTYPE *Release )(
474 OpenGLOn12CreatorID * This);
475
476 END_INTERFACE
477 } OpenGLOn12CreatorIDVtbl;
478
479 interface OpenGLOn12CreatorID
480 {
481 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
482 };
483
484
485
486#ifdef COBJMACROS
487
488
489#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
491
492#define OpenGLOn12CreatorID_AddRef(This) \
493 ( (This)->lpVtbl -> AddRef(This) )
494
495#define OpenGLOn12CreatorID_Release(This) \
496 ( (This)->lpVtbl -> Release(This) )
497
498
499#endif /* COBJMACROS */
500
501
502#endif /* C style interface */
503
504
505
506
507#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
508
509
510#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
511#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
512
513/* interface OpenCLOn12CreatorID */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_OpenCLOn12CreatorID;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
522 OpenCLOn12CreatorID : public IUnknown
523 {
524 public:
525 };
526
527
528#else /* C style interface */
529
530 typedef struct OpenCLOn12CreatorIDVtbl
531 {
532 BEGIN_INTERFACE
533
534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
536 OpenCLOn12CreatorID * This,
537 REFIID riid,
538 _COM_Outptr_ void **ppvObject);
539
540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
541 ULONG ( STDMETHODCALLTYPE *AddRef )(
542 OpenCLOn12CreatorID * This);
543
544 DECLSPEC_XFGVIRT(IUnknown, Release)
545 ULONG ( STDMETHODCALLTYPE *Release )(
546 OpenCLOn12CreatorID * This);
547
548 END_INTERFACE
549 } OpenCLOn12CreatorIDVtbl;
550
551 interface OpenCLOn12CreatorID
552 {
553 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
554 };
555
556
557
558#ifdef COBJMACROS
559
560
561#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
562 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
563
564#define OpenCLOn12CreatorID_AddRef(This) \
565 ( (This)->lpVtbl -> AddRef(This) )
566
567#define OpenCLOn12CreatorID_Release(This) \
568 ( (This)->lpVtbl -> Release(This) )
569
570
571#endif /* COBJMACROS */
572
573
574#endif /* C style interface */
575
576
577
578
579#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
580
581
582#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
583#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
584
585/* interface VulkanOn12CreatorID */
586/* [unique][local][object][uuid] */
587
588
589EXTERN_C const IID IID_VulkanOn12CreatorID;
590
591#if defined(__cplusplus) && !defined(CINTERFACE)
592
593 MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
594 VulkanOn12CreatorID : public IUnknown
595 {
596 public:
597 };
598
599
600#else /* C style interface */
601
602 typedef struct VulkanOn12CreatorIDVtbl
603 {
604 BEGIN_INTERFACE
605
606 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
607 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
608 VulkanOn12CreatorID * This,
609 REFIID riid,
610 _COM_Outptr_ void **ppvObject);
611
612 DECLSPEC_XFGVIRT(IUnknown, AddRef)
613 ULONG ( STDMETHODCALLTYPE *AddRef )(
614 VulkanOn12CreatorID * This);
615
616 DECLSPEC_XFGVIRT(IUnknown, Release)
617 ULONG ( STDMETHODCALLTYPE *Release )(
618 VulkanOn12CreatorID * This);
619
620 END_INTERFACE
621 } VulkanOn12CreatorIDVtbl;
622
623 interface VulkanOn12CreatorID
624 {
625 CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
626 };
627
628
629
630#ifdef COBJMACROS
631
632
633#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
635
636#define VulkanOn12CreatorID_AddRef(This) \
637 ( (This)->lpVtbl -> AddRef(This) )
638
639#define VulkanOn12CreatorID_Release(This) \
640 ( (This)->lpVtbl -> Release(This) )
641
642
643#endif /* COBJMACROS */
644
645
646#endif /* C style interface */
647
648
649
650
651#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
652
653
654#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
655#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
656
657/* interface DirectMLTensorFlowCreatorID */
658/* [unique][local][object][uuid] */
659
660
661EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
662
663#if defined(__cplusplus) && !defined(CINTERFACE)
664
665 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
666 DirectMLTensorFlowCreatorID : public IUnknown
667 {
668 public:
669 };
670
671
672#else /* C style interface */
673
674 typedef struct DirectMLTensorFlowCreatorIDVtbl
675 {
676 BEGIN_INTERFACE
677
678 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
679 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
680 DirectMLTensorFlowCreatorID * This,
681 REFIID riid,
682 _COM_Outptr_ void **ppvObject);
683
684 DECLSPEC_XFGVIRT(IUnknown, AddRef)
685 ULONG ( STDMETHODCALLTYPE *AddRef )(
686 DirectMLTensorFlowCreatorID * This);
687
688 DECLSPEC_XFGVIRT(IUnknown, Release)
689 ULONG ( STDMETHODCALLTYPE *Release )(
690 DirectMLTensorFlowCreatorID * This);
691
692 END_INTERFACE
693 } DirectMLTensorFlowCreatorIDVtbl;
694
695 interface DirectMLTensorFlowCreatorID
696 {
697 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
698 };
699
700
701
702#ifdef COBJMACROS
703
704
705#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
706 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
707
708#define DirectMLTensorFlowCreatorID_AddRef(This) \
709 ( (This)->lpVtbl -> AddRef(This) )
710
711#define DirectMLTensorFlowCreatorID_Release(This) \
712 ( (This)->lpVtbl -> Release(This) )
713
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
724
725
726#ifndef __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
727#define __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
728
729/* interface DirectMLPyTorchCreatorID */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("af029192-fba1-4b05-9116-235e06560354")
738 DirectMLPyTorchCreatorID : public IUnknown
739 {
740 public:
741 };
742
743
744#else /* C style interface */
745
746 typedef struct DirectMLPyTorchCreatorIDVtbl
747 {
748 BEGIN_INTERFACE
749
750 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
751 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
752 DirectMLPyTorchCreatorID * This,
753 REFIID riid,
754 _COM_Outptr_ void **ppvObject);
755
756 DECLSPEC_XFGVIRT(IUnknown, AddRef)
757 ULONG ( STDMETHODCALLTYPE *AddRef )(
758 DirectMLPyTorchCreatorID * This);
759
760 DECLSPEC_XFGVIRT(IUnknown, Release)
761 ULONG ( STDMETHODCALLTYPE *Release )(
762 DirectMLPyTorchCreatorID * This);
763
764 END_INTERFACE
765 } DirectMLPyTorchCreatorIDVtbl;
766
767 interface DirectMLPyTorchCreatorID
768 {
769 CONST_VTBL struct DirectMLPyTorchCreatorIDVtbl *lpVtbl;
770 };
771
772
773
774#ifdef COBJMACROS
775
776
777#define DirectMLPyTorchCreatorID_QueryInterface(This,riid,ppvObject) \
778 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
779
780#define DirectMLPyTorchCreatorID_AddRef(This) \
781 ( (This)->lpVtbl -> AddRef(This) )
782
783#define DirectMLPyTorchCreatorID_Release(This) \
784 ( (This)->lpVtbl -> Release(This) )
785
786
787#endif /* COBJMACROS */
788
789
790#endif /* C style interface */
791
792
793
794
795#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
796
797
798#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
799#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
800
801/* interface DirectMLWebNNCreatorID */
802/* [unique][local][object][uuid] */
803
804
805EXTERN_C const IID IID_DirectMLWebNNCreatorID;
806
807#if defined(__cplusplus) && !defined(CINTERFACE)
808
809 MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
810 DirectMLWebNNCreatorID : public IUnknown
811 {
812 public:
813 };
814
815
816#else /* C style interface */
817
818 typedef struct DirectMLWebNNCreatorIDVtbl
819 {
820 BEGIN_INTERFACE
821
822 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824 DirectMLWebNNCreatorID * This,
825 REFIID riid,
826 _COM_Outptr_ void **ppvObject);
827
828 DECLSPEC_XFGVIRT(IUnknown, AddRef)
829 ULONG ( STDMETHODCALLTYPE *AddRef )(
830 DirectMLWebNNCreatorID * This);
831
832 DECLSPEC_XFGVIRT(IUnknown, Release)
833 ULONG ( STDMETHODCALLTYPE *Release )(
834 DirectMLWebNNCreatorID * This);
835
836 END_INTERFACE
837 } DirectMLWebNNCreatorIDVtbl;
838
839 interface DirectMLWebNNCreatorID
840 {
841 CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
842 };
843
844
845
846#ifdef COBJMACROS
847
848
849#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
850 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
851
852#define DirectMLWebNNCreatorID_AddRef(This) \
853 ( (This)->lpVtbl -> AddRef(This) )
854
855#define DirectMLWebNNCreatorID_Release(This) \
856 ( (This)->lpVtbl -> Release(This) )
857
858
859#endif /* COBJMACROS */
860
861
862#endif /* C style interface */
863
864
865
866
867#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
868
869
870/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
871/* [local] */
872
873#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
874#pragma endregion
875DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
876DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
877DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
878DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
879DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
880DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
881DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
882DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
883DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
884
885
886extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
887extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
888
889/* Additional Prototypes for ALL interfaces */
890
891/* end of Additional Prototypes */
892
893#ifdef __cplusplus
894}
895#endif
896
897#endif
898
899
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl
new file mode 100644
index 0000000..019afc9
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl
@@ -0,0 +1,101 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
77interface VulkanOn12CreatorID : IUnknown { };
78
79[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
80interface DirectMLTensorFlowCreatorID : IUnknown { };
81
82[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
83interface DirectMLPyTorchCreatorID : IUnknown { };
84
85[uuid(fdf01a76-1e11-450f-902b-74f04ea08094), object, local, pointer_default(unique)]
86interface DirectMLWebNNCreatorID : IUnknown { };
87
88
89cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
90#pragma endregion
91
92
93cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
94cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
95cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
96cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
97cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
98cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
99cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
100cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
101cpp_quote( "DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h
new file mode 100644
index 0000000..1d8fe3b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h
@@ -0,0 +1,977 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compiler_h__
39#define __d3d12compiler_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
56#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
57typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
58
59#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
63#define __ID3D12CompilerCacheSession_FWD_DEFINED__
64typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
65
66#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
70#define __ID3D12CompilerStateObject_FWD_DEFINED__
71typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
72
73#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Compiler_FWD_DEFINED__
77#define __ID3D12Compiler_FWD_DEFINED__
78typedef interface ID3D12Compiler ID3D12Compiler;
79
80#endif /* __ID3D12Compiler_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
84#define __ID3D12CompilerFactory_FWD_DEFINED__
85typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
86
87#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
88
89
90/* header files for imported files */
91#include "oaidl.h"
92#include "ocidl.h"
93#include "dxgicommon.h"
94#include "d3d12.h"
95
96#ifdef __cplusplus
97extern "C"{
98#endif
99
100
101/* interface __MIDL_itf_d3d12compiler_0000_0000 */
102/* [local] */
103
104#include <winapifamily.h>
105#pragma region App Family
106#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
107typedef struct D3D12_ADAPTER_FAMILY
108 {
109 WCHAR szAdapterFamily[ 128 ];
110 } D3D12_ADAPTER_FAMILY;
111
112typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
113 _In_ LPCWSTR pPluginCompilerDllPath,
114 _In_ REFIID riid,
115 _COM_Outptr_opt_ void** ppFactory );
116
117HRESULT WINAPI D3D12CompilerCreateFactory(
118 _In_ LPCWSTR pPluginCompilerDllPath,
119 _In_ REFIID riid, // Expected: ID3D12CompilerFactory
120 _COM_Outptr_opt_ void** ppFactory );
121
122typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
123 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
124 _Out_ ID3DBlob** ppBlob,
125 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
126
127HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
128 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
129 _Out_ ID3DBlob** ppBlob,
130 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
131
132
133
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
135extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
136
137#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
138#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
139
140/* interface ID3D12CompilerFactoryChild */
141/* [unique][local][object][uuid] */
142
143
144EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
145
146#if defined(__cplusplus) && !defined(CINTERFACE)
147
148 MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
149 ID3D12CompilerFactoryChild : public IUnknown
150 {
151 public:
152 virtual HRESULT STDMETHODCALLTYPE GetFactory(
153 _In_ REFIID riid,
154 _COM_Outptr_ void **ppCompilerFactory) = 0;
155
156 };
157
158
159#else /* C style interface */
160
161 typedef struct ID3D12CompilerFactoryChildVtbl
162 {
163 BEGIN_INTERFACE
164
165 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
166 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
167 ID3D12CompilerFactoryChild * This,
168 REFIID riid,
169 _COM_Outptr_ void **ppvObject);
170
171 DECLSPEC_XFGVIRT(IUnknown, AddRef)
172 ULONG ( STDMETHODCALLTYPE *AddRef )(
173 ID3D12CompilerFactoryChild * This);
174
175 DECLSPEC_XFGVIRT(IUnknown, Release)
176 ULONG ( STDMETHODCALLTYPE *Release )(
177 ID3D12CompilerFactoryChild * This);
178
179 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
180 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
181 ID3D12CompilerFactoryChild * This,
182 _In_ REFIID riid,
183 _COM_Outptr_ void **ppCompilerFactory);
184
185 END_INTERFACE
186 } ID3D12CompilerFactoryChildVtbl;
187
188 interface ID3D12CompilerFactoryChild
189 {
190 CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
191 };
192
193
194
195#ifdef COBJMACROS
196
197
198#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
200
201#define ID3D12CompilerFactoryChild_AddRef(This) \
202 ( (This)->lpVtbl -> AddRef(This) )
203
204#define ID3D12CompilerFactoryChild_Release(This) \
205 ( (This)->lpVtbl -> Release(This) )
206
207
208#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
209 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
210
211#endif /* COBJMACROS */
212
213
214#endif /* C style interface */
215
216
217
218
219#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
220
221
222/* interface __MIDL_itf_d3d12compiler_0000_0001 */
223/* [local] */
224
225typedef
226enum D3D12_COMPILER_VALUE_TYPE
227 {
228 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
229 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
230 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
231 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
232 } D3D12_COMPILER_VALUE_TYPE;
233
234typedef
235enum D3D12_COMPILER_VALUE_TYPE_FLAGS
236 {
237 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
238 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
239 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
240 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
241 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
242 } D3D12_COMPILER_VALUE_TYPE_FLAGS;
243
244DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
245typedef struct D3D12_COMPILER_DATABASE_PATH
246 {
247 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
248 LPCWSTR pPath;
249 } D3D12_COMPILER_DATABASE_PATH;
250
251typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
252 {
253 _Field_size_bytes_full_(KeySize) const void *pKey;
254 UINT KeySize;
255 } D3D12_COMPILER_CACHE_GROUP_KEY;
256
257typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
258 {
259 _Field_size_bytes_full_(KeySize) const void *pKey;
260 UINT KeySize;
261 } D3D12_COMPILER_CACHE_VALUE_KEY;
262
263typedef struct D3D12_COMPILER_CACHE_VALUE
264 {
265 _Field_size_bytes_full_(ValueSize) void *pValue;
266 UINT ValueSize;
267 } D3D12_COMPILER_CACHE_VALUE;
268
269typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
270 {
271 D3D12_COMPILER_VALUE_TYPE Type;
272 D3D12_COMPILER_CACHE_VALUE Value;
273 } D3D12_COMPILER_CACHE_TYPED_VALUE;
274
275typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
276 {
277 _Field_size_bytes_full_(ValueSize) const void *pValue;
278 UINT ValueSize;
279 } D3D12_COMPILER_CACHE_CONST_VALUE;
280
281typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
282 {
283 D3D12_COMPILER_VALUE_TYPE Type;
284 D3D12_COMPILER_CACHE_CONST_VALUE Value;
285 } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
286
287typedef struct D3D12_COMPILER_TARGET
288 {
289 UINT AdapterFamilyIndex;
290 UINT64 ABIVersion;
291 } D3D12_COMPILER_TARGET;
292
293typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
294 SIZE_T SizeInBytes,
295 _Inout_opt_ void *pContext);
296
297typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
298 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
299 _Inout_opt_ void *pContext);
300
301typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
302 UINT ValueKeyIndex,
303 _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
304 _Inout_opt_ void *pContext);
305
306
307
308extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
309extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
310
311#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
312#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
313
314/* interface ID3D12CompilerCacheSession */
315/* [unique][local][object][uuid] */
316
317
318EXTERN_C const IID IID_ID3D12CompilerCacheSession;
319
320#if defined(__cplusplus) && !defined(CINTERFACE)
321
322 MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
323 ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
324 {
325 public:
326 virtual HRESULT STDMETHODCALLTYPE FindGroup(
327 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
328 _Out_opt_ UINT *pGroupVersion) = 0;
329
330 virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
331 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
332 _In_opt_ const UINT *pExpectedGroupVersion,
333 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
334 _Inout_opt_ void *pContext) = 0;
335
336 virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
337 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
338 _In_opt_ const UINT *pExpectedGroupVersion,
339 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
340 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
341 _Inout_opt_ void *pContext) = 0;
342
343 virtual HRESULT STDMETHODCALLTYPE FindValue(
344 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
345 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
346 UINT NumTypedValues,
347 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
348 _Inout_opt_ void *pContext) = 0;
349
350 virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
351
352#if defined(_MSC_VER) || !defined(_WIN32)
353 virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
354#else
355 virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
356 D3D12_COMPILER_TARGET * RetVal) = 0;
357#endif
358
359 virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
360
361 virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
362 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
363 UINT GroupVersion,
364 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
365 UINT NumValueKeys) = 0;
366
367 virtual HRESULT STDMETHODCALLTYPE StoreValue(
368 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
369 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
370 UINT NumTypedValues) = 0;
371
372 };
373
374
375#else /* C style interface */
376
377 typedef struct ID3D12CompilerCacheSessionVtbl
378 {
379 BEGIN_INTERFACE
380
381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
383 ID3D12CompilerCacheSession * This,
384 REFIID riid,
385 _COM_Outptr_ void **ppvObject);
386
387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
388 ULONG ( STDMETHODCALLTYPE *AddRef )(
389 ID3D12CompilerCacheSession * This);
390
391 DECLSPEC_XFGVIRT(IUnknown, Release)
392 ULONG ( STDMETHODCALLTYPE *Release )(
393 ID3D12CompilerCacheSession * This);
394
395 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
396 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
397 ID3D12CompilerCacheSession * This,
398 _In_ REFIID riid,
399 _COM_Outptr_ void **ppCompilerFactory);
400
401 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
402 HRESULT ( STDMETHODCALLTYPE *FindGroup )(
403 ID3D12CompilerCacheSession * This,
404 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
405 _Out_opt_ UINT *pGroupVersion);
406
407 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
408 HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
409 ID3D12CompilerCacheSession * This,
410 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
411 _In_opt_ const UINT *pExpectedGroupVersion,
412 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
413 _Inout_opt_ void *pContext);
414
415 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
416 HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
417 ID3D12CompilerCacheSession * This,
418 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
419 _In_opt_ const UINT *pExpectedGroupVersion,
420 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
421 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
422 _Inout_opt_ void *pContext);
423
424 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
425 HRESULT ( STDMETHODCALLTYPE *FindValue )(
426 ID3D12CompilerCacheSession * This,
427 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
428 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
429 UINT NumTypedValues,
430 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
431 _Inout_opt_ void *pContext);
432
433 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
434 const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
435 ID3D12CompilerCacheSession * This);
436
437 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
438#if !defined(_WIN32)
439 D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
440 ID3D12CompilerCacheSession * This);
441
442#else
443 D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
444 ID3D12CompilerCacheSession * This,
445 D3D12_COMPILER_TARGET * RetVal);
446
447#endif
448
449 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
450 D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
451 ID3D12CompilerCacheSession * This);
452
453 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
454 HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
455 ID3D12CompilerCacheSession * This,
456 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
457 UINT GroupVersion,
458 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
459 UINT NumValueKeys);
460
461 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
462 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
463 ID3D12CompilerCacheSession * This,
464 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
465 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
466 UINT NumTypedValues);
467
468 END_INTERFACE
469 } ID3D12CompilerCacheSessionVtbl;
470
471 interface ID3D12CompilerCacheSession
472 {
473 CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
474 };
475
476
477
478#ifdef COBJMACROS
479
480
481#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
482 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
483
484#define ID3D12CompilerCacheSession_AddRef(This) \
485 ( (This)->lpVtbl -> AddRef(This) )
486
487#define ID3D12CompilerCacheSession_Release(This) \
488 ( (This)->lpVtbl -> Release(This) )
489
490
491#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
492 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
493
494
495#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
496 ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
497
498#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
499 ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
500
501#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
502 ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
503
504#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
505 ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
506
507#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
508 ( (This)->lpVtbl -> GetApplicationDesc(This) )
509#if !defined(_WIN32)
510
511#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
512 ( (This)->lpVtbl -> GetCompilerTarget(This) )
513#else
514#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
515 ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
516#endif
517
518#define ID3D12CompilerCacheSession_GetValueTypes(This) \
519 ( (This)->lpVtbl -> GetValueTypes(This) )
520
521#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
522 ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
523
524#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
525 ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
526
527#endif /* COBJMACROS */
528
529
530#endif /* C style interface */
531
532
533
534
535#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
536
537
538#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
539#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
540
541/* interface ID3D12CompilerStateObject */
542/* [unique][local][object][uuid] */
543
544
545EXTERN_C const IID IID_ID3D12CompilerStateObject;
546
547#if defined(__cplusplus) && !defined(CINTERFACE)
548
549 MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
550 ID3D12CompilerStateObject : public IUnknown
551 {
552 public:
553 virtual HRESULT STDMETHODCALLTYPE GetCompiler(
554 _In_ REFIID riid,
555 _COM_Outptr_ void **ppCompiler) = 0;
556
557 };
558
559
560#else /* C style interface */
561
562 typedef struct ID3D12CompilerStateObjectVtbl
563 {
564 BEGIN_INTERFACE
565
566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
568 ID3D12CompilerStateObject * This,
569 REFIID riid,
570 _COM_Outptr_ void **ppvObject);
571
572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
573 ULONG ( STDMETHODCALLTYPE *AddRef )(
574 ID3D12CompilerStateObject * This);
575
576 DECLSPEC_XFGVIRT(IUnknown, Release)
577 ULONG ( STDMETHODCALLTYPE *Release )(
578 ID3D12CompilerStateObject * This);
579
580 DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
581 HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
582 ID3D12CompilerStateObject * This,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppCompiler);
585
586 END_INTERFACE
587 } ID3D12CompilerStateObjectVtbl;
588
589 interface ID3D12CompilerStateObject
590 {
591 CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
592 };
593
594
595
596#ifdef COBJMACROS
597
598
599#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
600 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
601
602#define ID3D12CompilerStateObject_AddRef(This) \
603 ( (This)->lpVtbl -> AddRef(This) )
604
605#define ID3D12CompilerStateObject_Release(This) \
606 ( (This)->lpVtbl -> Release(This) )
607
608
609#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
610 ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
611
612#endif /* COBJMACROS */
613
614
615#endif /* C style interface */
616
617
618
619
620#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
621
622
623/* interface __MIDL_itf_d3d12compiler_0000_0003 */
624/* [local] */
625
626typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
627 {
628 ID3D12CompilerStateObject *pExistingCollection;
629 UINT NumExports;
630 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
631 } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
632
633
634
635extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
636extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
637
638#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
639#define __ID3D12Compiler_INTERFACE_DEFINED__
640
641/* interface ID3D12Compiler */
642/* [unique][local][object][uuid] */
643
644
645EXTERN_C const IID IID_ID3D12Compiler;
646
647#if defined(__cplusplus) && !defined(CINTERFACE)
648
649 MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
650 ID3D12Compiler : public ID3D12CompilerFactoryChild
651 {
652 public:
653 virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
654 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
655 UINT GroupVersion,
656 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
657
658 virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
659 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
660 UINT GroupVersion,
661 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
662 _In_ REFIID riid,
663 _COM_Outptr_ void **ppCompilerStateObject) = 0;
664
665 virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
666 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
667 UINT GroupVersion,
668 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
669 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
670 _In_ REFIID riid,
671 _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
672
673 virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
674 _In_ REFIID riid,
675 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
676
677 };
678
679
680#else /* C style interface */
681
682 typedef struct ID3D12CompilerVtbl
683 {
684 BEGIN_INTERFACE
685
686 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
687 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
688 ID3D12Compiler * This,
689 REFIID riid,
690 _COM_Outptr_ void **ppvObject);
691
692 DECLSPEC_XFGVIRT(IUnknown, AddRef)
693 ULONG ( STDMETHODCALLTYPE *AddRef )(
694 ID3D12Compiler * This);
695
696 DECLSPEC_XFGVIRT(IUnknown, Release)
697 ULONG ( STDMETHODCALLTYPE *Release )(
698 ID3D12Compiler * This);
699
700 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
701 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
702 ID3D12Compiler * This,
703 _In_ REFIID riid,
704 _COM_Outptr_ void **ppCompilerFactory);
705
706 DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
707 HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
708 ID3D12Compiler * This,
709 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
710 UINT GroupVersion,
711 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
712
713 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
714 HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
715 ID3D12Compiler * This,
716 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
717 UINT GroupVersion,
718 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
719 _In_ REFIID riid,
720 _COM_Outptr_ void **ppCompilerStateObject);
721
722 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
723 HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
724 ID3D12Compiler * This,
725 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
726 UINT GroupVersion,
727 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
728 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
729 _In_ REFIID riid,
730 _COM_Outptr_ void **ppNewCompilerStateObject);
731
732 DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
733 HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
734 ID3D12Compiler * This,
735 _In_ REFIID riid,
736 _COM_Outptr_ void **ppCompilerCacheSession);
737
738 END_INTERFACE
739 } ID3D12CompilerVtbl;
740
741 interface ID3D12Compiler
742 {
743 CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
744 };
745
746
747
748#ifdef COBJMACROS
749
750
751#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
752 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
753
754#define ID3D12Compiler_AddRef(This) \
755 ( (This)->lpVtbl -> AddRef(This) )
756
757#define ID3D12Compiler_Release(This) \
758 ( (This)->lpVtbl -> Release(This) )
759
760
761#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
762 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
763
764
765#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
766 ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
767
768#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
769 ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
770
771#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
772 ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
773
774#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
775 ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
776
777#endif /* COBJMACROS */
778
779
780#endif /* C style interface */
781
782
783
784
785#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
786
787
788#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
789#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
790
791/* interface ID3D12CompilerFactory */
792/* [unique][local][object][uuid] */
793
794
795EXTERN_C const IID IID_ID3D12CompilerFactory;
796
797#if defined(__cplusplus) && !defined(CINTERFACE)
798
799 MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
800 ID3D12CompilerFactory : public IUnknown
801 {
802 public:
803 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
804 UINT AdapterFamilyIndex,
805 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
806
807 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
808 UINT AdapterFamilyIndex,
809 _Inout_ UINT32 *pNumABIVersions,
810 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
811
812 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
813 UINT AdapterFamilyIndex,
814 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
815
816 virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
817 _In_ const D3D12_COMPILER_TARGET *pTarget,
818 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
819 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
820
821 virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
822 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
823 UINT NumPaths,
824 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
825 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
826 _In_ REFIID riid,
827 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
828
829 virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
830 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
831 _In_ REFIID riid,
832 _COM_Outptr_ void **ppCompiler) = 0;
833
834 };
835
836
837#else /* C style interface */
838
839 typedef struct ID3D12CompilerFactoryVtbl
840 {
841 BEGIN_INTERFACE
842
843 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
844 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
845 ID3D12CompilerFactory * This,
846 REFIID riid,
847 _COM_Outptr_ void **ppvObject);
848
849 DECLSPEC_XFGVIRT(IUnknown, AddRef)
850 ULONG ( STDMETHODCALLTYPE *AddRef )(
851 ID3D12CompilerFactory * This);
852
853 DECLSPEC_XFGVIRT(IUnknown, Release)
854 ULONG ( STDMETHODCALLTYPE *Release )(
855 ID3D12CompilerFactory * This);
856
857 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
858 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
859 ID3D12CompilerFactory * This,
860 UINT AdapterFamilyIndex,
861 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
862
863 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
864 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
865 ID3D12CompilerFactory * This,
866 UINT AdapterFamilyIndex,
867 _Inout_ UINT32 *pNumABIVersions,
868 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
869
870 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
871 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
872 ID3D12CompilerFactory * This,
873 UINT AdapterFamilyIndex,
874 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
875
876 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
877 HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
878 ID3D12CompilerFactory * This,
879 _In_ const D3D12_COMPILER_TARGET *pTarget,
880 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
881 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
882
883 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
884 HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
885 ID3D12CompilerFactory * This,
886 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
887 UINT NumPaths,
888 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
889 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
890 _In_ REFIID riid,
891 _COM_Outptr_ void **ppCompilerCacheSession);
892
893 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
894 HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
895 ID3D12CompilerFactory * This,
896 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
897 _In_ REFIID riid,
898 _COM_Outptr_ void **ppCompiler);
899
900 END_INTERFACE
901 } ID3D12CompilerFactoryVtbl;
902
903 interface ID3D12CompilerFactory
904 {
905 CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
906 };
907
908
909
910#ifdef COBJMACROS
911
912
913#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
914 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
915
916#define ID3D12CompilerFactory_AddRef(This) \
917 ( (This)->lpVtbl -> AddRef(This) )
918
919#define ID3D12CompilerFactory_Release(This) \
920 ( (This)->lpVtbl -> Release(This) )
921
922
923#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
924 ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
925
926#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
927 ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
928
929#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
930 ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
931
932#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
933 ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
934
935#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
936 ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
937
938#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
939 ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
940
941#endif /* COBJMACROS */
942
943
944#endif /* C style interface */
945
946
947
948
949#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
950
951
952/* interface __MIDL_itf_d3d12compiler_0000_0005 */
953/* [local] */
954
955#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
956#pragma endregion
957DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
958DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
959DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
960DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
961DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
962
963
964extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
965extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
966
967/* Additional Prototypes for ALL interfaces */
968
969/* end of Additional Prototypes */
970
971#ifdef __cplusplus
972}
973#endif
974
975#endif
976
977
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl
new file mode 100644
index 0000000..c8ae4b4
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl
@@ -0,0 +1,291 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18
19typedef struct D3D12_ADAPTER_FAMILY
20{
21 WCHAR szAdapterFamily[128];
22} D3D12_ADAPTER_FAMILY;
23
24cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)( ")
25cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
26cpp_quote(" _In_ REFIID riid,")
27cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
28cpp_quote("")
29cpp_quote("HRESULT WINAPI D3D12CompilerCreateFactory(")
30cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
31cpp_quote(" _In_ REFIID riid, // Expected: ID3D12CompilerFactory")
32cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
33cpp_quote("")
34cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(")
35cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
36cpp_quote(" _Out_ ID3DBlob** ppBlob,")
37cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
38cpp_quote("")
39cpp_quote("HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(")
40cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
41cpp_quote(" _Out_ ID3DBlob** ppBlob,")
42cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
43cpp_quote("")
44
45[uuid(e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc), object, local, pointer_default(unique)]
46interface ID3D12CompilerFactoryChild
47 : IUnknown
48{
49 HRESULT GetFactory(
50 [annotation("_In_")] REFIID riid, // ID3D12CompilerFactory
51 [annotation("_COM_Outptr_")] void** ppCompilerFactory
52 );
53};
54
55typedef enum D3D12_COMPILER_VALUE_TYPE
56{
57 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
58 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
59 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
60 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3,
61
62} D3D12_COMPILER_VALUE_TYPE;
63
64typedef enum D3D12_COMPILER_VALUE_TYPE_FLAGS
65{
66 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0x00000000,
67 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = (1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE),
68 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = (1 << D3D12_COMPILER_VALUE_TYPE_METADATA),
69 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = (1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB),
70 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = (1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA),
71
72
73} D3D12_COMPILER_VALUE_TYPE_FLAGS;
74cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )")
75
76typedef struct D3D12_COMPILER_DATABASE_PATH
77{
78 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
79 LPCWSTR pPath;
80} D3D12_COMPILER_DATABASE_PATH;
81
82typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
83{
84 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
85 UINT KeySize;
86} D3D12_COMPILER_CACHE_GROUP_KEY;
87
88typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
89{
90 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
91 UINT KeySize;
92} D3D12_COMPILER_CACHE_VALUE_KEY;
93
94typedef struct D3D12_COMPILER_CACHE_VALUE
95{
96 [annotation("_Field_size_bytes_full_(ValueSize)")] void* pValue;
97 UINT ValueSize;
98} D3D12_COMPILER_CACHE_VALUE;
99
100typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
101{
102 D3D12_COMPILER_VALUE_TYPE Type;
103 D3D12_COMPILER_CACHE_VALUE Value;
104} D3D12_COMPILER_CACHE_TYPED_VALUE;
105
106typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
107{
108 [annotation("_Field_size_bytes_full_(ValueSize)")] const void* pValue;
109 UINT ValueSize;
110} D3D12_COMPILER_CACHE_CONST_VALUE;
111
112typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
113{
114 D3D12_COMPILER_VALUE_TYPE Type;
115 D3D12_COMPILER_CACHE_CONST_VALUE Value;
116} D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
117
118typedef struct D3D12_COMPILER_TARGET
119{
120 UINT AdapterFamilyIndex;
121 UINT64 ABIVersion;
122} D3D12_COMPILER_TARGET;
123
124typedef void* (__stdcall* D3D12CompilerCacheSessionAllocationFunc) (
125 SIZE_T SizeInBytes,
126 [annotation("_Inout_opt_")] void* pContext
127 );
128
129typedef void(__stdcall* D3D12CompilerCacheSessionGroupValueKeysFunc) (
130 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
131 [annotation("_Inout_opt_")] void* pContext
132 );
133
134typedef void(__stdcall* D3D12CompilerCacheSessionGroupValuesFunc) (
135 UINT ValueKeyIndex,
136 [annotation("_In_")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValue,
137 [annotation("_Inout_opt_")] void* pContext
138 );
139
140[uuid(5704e5e6-054b-4738-b661-7b0d68d8dde2), object, local, pointer_default(unique)]
141interface ID3D12CompilerCacheSession
142 : ID3D12CompilerFactoryChild
143{
144 HRESULT FindGroup(
145 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
146 [annotation("_Out_opt_")] UINT* pGroupVersion
147 );
148
149 HRESULT FindGroupValueKeys(
150 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
151 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
152 [annotation("_In_")] D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
153 [annotation("_Inout_opt_")] void* pContext
154 );
155
156 HRESULT FindGroupValues(
157 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
158 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
159 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
160 [annotation("_In_opt_")] D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
161 [annotation("_Inout_opt_")] void* pContext
162 );
163
164 HRESULT FindValue(
165 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
166 [annotation("_Inout_count_(NumTypedValues)")] D3D12_COMPILER_CACHE_TYPED_VALUE* pTypedValues,
167 UINT NumTypedValues,
168 [annotation("_In_opt_")] D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
169 [annotation("_Inout_opt_")] void* pContext
170 );
171
172 const D3D12_APPLICATION_DESC* GetApplicationDesc();
173
174 D3D12_COMPILER_TARGET GetCompilerTarget();
175
176 D3D12_COMPILER_VALUE_TYPE_FLAGS GetValueTypes();
177
178 HRESULT StoreGroupValueKeys(
179 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
180 UINT GroupVersion,
181 [annotation("_In_reads_(NumValueKeys)")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKeys,
182 UINT NumValueKeys
183 );
184
185 HRESULT StoreValue(
186 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
187 [annotation("_In_reads_(NumTypedValues)")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValues,
188 UINT NumTypedValues
189 );
190};
191
192[uuid(5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a), object, local, pointer_default(unique)]
193interface ID3D12CompilerStateObject
194 : IUnknown
195{
196 HRESULT GetCompiler(
197 [annotation("_In_")] REFIID riid, // ID3D12Compiler
198 [annotation("_COM_Outptr_")] void** ppCompiler
199 );
200};
201
202typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
203{
204 ID3D12CompilerStateObject* pExistingCollection;
205 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
206 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
207} D3D12_COMPILER_EXISTING_COLLECTION_DESC;
208
209[uuid(8c403c12-993b-4583-80f1-6824138fa68e), object, local, pointer_default(unique)]
210interface ID3D12Compiler
211 : ID3D12CompilerFactoryChild
212{
213 HRESULT CompilePipelineState(
214 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
215 UINT GroupVersion,
216 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc
217 );
218
219 HRESULT CompileStateObject(
220 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
221 UINT GroupVersion,
222 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
223 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
224 [annotation("_COM_Outptr_")] void** ppCompilerStateObject
225 );
226
227 HRESULT CompileAddToStateObject(
228 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
229 UINT GroupVersion,
230 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pAddition,
231 [annotation("_In_")] ID3D12CompilerStateObject* pCompilerStateObjectToGrowFrom,
232 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
233 [annotation("_COM_Outptr_")] void** ppNewCompilerStateObject
234 );
235
236 HRESULT GetCacheSession(
237 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
238 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
239 );
240};
241
242[uuid(c1ee4b59-3f59-47a5-9b4e-a855c858a878), object, local, pointer_default(unique)]
243interface ID3D12CompilerFactory
244 : IUnknown
245{
246 HRESULT EnumerateAdapterFamilies(
247 UINT AdapterFamilyIndex,
248 [annotation("_Out_")] D3D12_ADAPTER_FAMILY* pAdapterFamily
249 );
250
251 HRESULT EnumerateAdapterFamilyABIVersions(
252 UINT AdapterFamilyIndex,
253 [annotation("_Inout_")] UINT32* pNumABIVersions,
254 [annotation("_Out_writes_opt_(*pNumABIVersions)")] UINT64 * pABIVersions
255 );
256
257 HRESULT EnumerateAdapterFamilyCompilerVersion(
258 UINT AdapterFamilyIndex,
259 [annotation("_Out_")] D3D12_VERSION_NUMBER* pCompilerVersion
260 );
261
262 HRESULT GetApplicationProfileVersion(
263 [annotation("_In_")] const D3D12_COMPILER_TARGET* pTarget,
264 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
265 [annotation("_Out_")] D3D12_VERSION_NUMBER* pApplicationProfileVersion
266 );
267
268 HRESULT CreateCompilerCacheSession(
269 [annotation("_In_reads_(NumPaths)")] const D3D12_COMPILER_DATABASE_PATH* pPaths,
270 UINT NumPaths,
271 [annotation("_In_opt_")] const D3D12_COMPILER_TARGET* pTarget,
272 [annotation("_In_opt_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
273 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
274 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
275 );
276
277 HRESULT CreateCompiler(
278 [annotation("_In_")] ID3D12CompilerCacheSession* pCompilerCacheSession,
279 [annotation("_In_")] REFIID riid, // ID3D12Compiler
280 [annotation("_COM_Outptr_")] void** ppCompiler
281 );
282};
283
284cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
285#pragma endregion
286
287cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);" )
288cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);" )
289cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);" )
290cpp_quote( "DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);" )
291cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl
new file mode 100644
index 0000000..1384b73
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl
@@ -0,0 +1,119 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 *
5 *-------------------------------------------------------------------------------------*/
6typedef enum D3D12_MARKER_API {
7 D3D12_MARKER_API_SETMARKER = 0,
8 D3D12_MARKER_API_BEGINEVENT = 1,
9 D3D12_MARKER_API_ENDEVENT = 2,
10 D3D12_MARKER_API_DRAWINSTANCED = 3,
11 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
12 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
13 D3D12_MARKER_API_DISPATCH = 6,
14 D3D12_MARKER_API_COPYBUFFERREGION = 7,
15 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16 D3D12_MARKER_API_COPYRESOURCE = 9,
17 D3D12_MARKER_API_COPYTILES = 10,
18 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
19 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
20 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
21 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
22 D3D12_MARKER_API_RESOURCEBARRIER = 15,
23 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
24 D3D12_MARKER_API_PRESENT = 17,
25 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
26 D3D12_MARKER_API_BEGINSUBMISSION = 19,
27 D3D12_MARKER_API_ENDSUBMISSION = 20,
28 D3D12_MARKER_API_DECODEFRAME = 21,
29 D3D12_MARKER_API_PROCESSFRAMES = 22,
30 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
31 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
32 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
33 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
34 D3D12_MARKER_API_DECODEFRAME1 = 27,
35 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
36 D3D12_MARKER_API_DECODEFRAME2 = 29,
37 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
38 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
39 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
40 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
41 D3D12_MARKER_API_DISPATCHRAYS = 34,
42 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
43 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
44 D3D12_MARKER_API_ESTIMATEMOTION = 37,
45 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
46 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
47 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
48 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
49 D3D12_MARKER_API_DISPATCHMESH = 42,
50 D3D12_MARKER_API_ENCODEFRAME = 43,
51 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
52 D3D12_MARKER_API_BARRIER = 45,
53 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
54 D3D12_MARKER_API_DISPATCHGRAPH = 47,
55 D3D12_MARKER_API_SETPROGRAM = 48,
56 D3D12_MARKER_API_ENCODEFRAME1 = 49,
57 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
58 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
59 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
60 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53,
61} D3D12_MARKER_API;
62
63typedef enum D3D12_AUTO_BREADCRUMB_OP {
64 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
65 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
66 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
67 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
68 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
69 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
70 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
71 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
72 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
73 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
74 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
75 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
76 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
77 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
78 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
79 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
80 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
81 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
82 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
83 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
84 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
85 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
86 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
87 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
88 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
89 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
90 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
91 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
92 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
93 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
94 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
95 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
96 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
97 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
98 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
99 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
100 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
101 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
102 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
103 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
104 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
105 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
106 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
107 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
108 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
109 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
110 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
111 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
112 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
113 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
114 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
116 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
117 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS,
118} D3D12_AUTO_BREADCRUMB_OP;
119
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h
new file mode 100644
index 0000000..96c812b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h
@@ -0,0 +1,4280 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Debug6_FWD_DEFINED__
98#define __ID3D12Debug6_FWD_DEFINED__
99typedef interface ID3D12Debug6 ID3D12Debug6;
100
101#endif /* __ID3D12Debug6_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
105#define __ID3D12DebugDevice1_FWD_DEFINED__
106typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
107
108#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice_FWD_DEFINED__
112#define __ID3D12DebugDevice_FWD_DEFINED__
113typedef interface ID3D12DebugDevice ID3D12DebugDevice;
114
115#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
119#define __ID3D12DebugDevice2_FWD_DEFINED__
120typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
121
122#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
126#define __ID3D12DebugCommandQueue_FWD_DEFINED__
127typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
128
129#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandQueue1_FWD_DEFINED__
133#define __ID3D12DebugCommandQueue1_FWD_DEFINED__
134typedef interface ID3D12DebugCommandQueue1 ID3D12DebugCommandQueue1;
135
136#endif /* __ID3D12DebugCommandQueue1_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
140#define __ID3D12DebugCommandList1_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
142
143#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
147#define __ID3D12DebugCommandList_FWD_DEFINED__
148typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
149
150#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
154#define __ID3D12DebugCommandList2_FWD_DEFINED__
155typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
156
157#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12DebugCommandList3_FWD_DEFINED__
161#define __ID3D12DebugCommandList3_FWD_DEFINED__
162typedef interface ID3D12DebugCommandList3 ID3D12DebugCommandList3;
163
164#endif /* __ID3D12DebugCommandList3_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12SharingContract_FWD_DEFINED__
168#define __ID3D12SharingContract_FWD_DEFINED__
169typedef interface ID3D12SharingContract ID3D12SharingContract;
170
171#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
175#define __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
176typedef interface ID3D12ManualWriteTrackingResource ID3D12ManualWriteTrackingResource;
177
178#endif /* __ID3D12ManualWriteTrackingResource_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12InfoQueue_FWD_DEFINED__
182#define __ID3D12InfoQueue_FWD_DEFINED__
183typedef interface ID3D12InfoQueue ID3D12InfoQueue;
184
185#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
189#define __ID3D12InfoQueue1_FWD_DEFINED__
190typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
191
192#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "oaidl.h"
197#include "ocidl.h"
198#include "d3d12.h"
199
200#ifdef __cplusplus
201extern "C"{
202#endif
203
204
205/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
206/* [local] */
207
208#include <winapifamily.h>
209#pragma region App Family
210#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
211
212
213extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
214extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
215
216#ifndef __ID3D12Debug_INTERFACE_DEFINED__
217#define __ID3D12Debug_INTERFACE_DEFINED__
218
219/* interface ID3D12Debug */
220/* [unique][local][object][uuid] */
221
222
223EXTERN_C const IID IID_ID3D12Debug;
224
225#if defined(__cplusplus) && !defined(CINTERFACE)
226
227 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
228 ID3D12Debug : public IUnknown
229 {
230 public:
231 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
232
233 };
234
235
236#else /* C style interface */
237
238 typedef struct ID3D12DebugVtbl
239 {
240 BEGIN_INTERFACE
241
242 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
243 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
244 ID3D12Debug * This,
245 REFIID riid,
246 _COM_Outptr_ void **ppvObject);
247
248 DECLSPEC_XFGVIRT(IUnknown, AddRef)
249 ULONG ( STDMETHODCALLTYPE *AddRef )(
250 ID3D12Debug * This);
251
252 DECLSPEC_XFGVIRT(IUnknown, Release)
253 ULONG ( STDMETHODCALLTYPE *Release )(
254 ID3D12Debug * This);
255
256 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
257 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
258 ID3D12Debug * This);
259
260 END_INTERFACE
261 } ID3D12DebugVtbl;
262
263 interface ID3D12Debug
264 {
265 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
266 };
267
268
269
270#ifdef COBJMACROS
271
272
273#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
274 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
275
276#define ID3D12Debug_AddRef(This) \
277 ( (This)->lpVtbl -> AddRef(This) )
278
279#define ID3D12Debug_Release(This) \
280 ( (This)->lpVtbl -> Release(This) )
281
282
283#define ID3D12Debug_EnableDebugLayer(This) \
284 ( (This)->lpVtbl -> EnableDebugLayer(This) )
285
286#endif /* COBJMACROS */
287
288
289#endif /* C style interface */
290
291
292
293
294#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
295
296
297/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
298/* [local] */
299
300typedef
301enum D3D12_GPU_BASED_VALIDATION_FLAGS
302 {
303 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
304 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
305 } D3D12_GPU_BASED_VALIDATION_FLAGS;
306
307DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
308
309
310extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
311extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
312
313#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
314#define __ID3D12Debug1_INTERFACE_DEFINED__
315
316/* interface ID3D12Debug1 */
317/* [unique][local][object][uuid] */
318
319
320EXTERN_C const IID IID_ID3D12Debug1;
321
322#if defined(__cplusplus) && !defined(CINTERFACE)
323
324 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
325 ID3D12Debug1 : public IUnknown
326 {
327 public:
328 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
329
330 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
331 BOOL Enable) = 0;
332
333 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
334 BOOL Enable) = 0;
335
336 };
337
338
339#else /* C style interface */
340
341 typedef struct ID3D12Debug1Vtbl
342 {
343 BEGIN_INTERFACE
344
345 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
346 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
347 ID3D12Debug1 * This,
348 REFIID riid,
349 _COM_Outptr_ void **ppvObject);
350
351 DECLSPEC_XFGVIRT(IUnknown, AddRef)
352 ULONG ( STDMETHODCALLTYPE *AddRef )(
353 ID3D12Debug1 * This);
354
355 DECLSPEC_XFGVIRT(IUnknown, Release)
356 ULONG ( STDMETHODCALLTYPE *Release )(
357 ID3D12Debug1 * This);
358
359 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
360 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
361 ID3D12Debug1 * This);
362
363 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
364 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
365 ID3D12Debug1 * This,
366 BOOL Enable);
367
368 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
369 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
370 ID3D12Debug1 * This,
371 BOOL Enable);
372
373 END_INTERFACE
374 } ID3D12Debug1Vtbl;
375
376 interface ID3D12Debug1
377 {
378 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
379 };
380
381
382
383#ifdef COBJMACROS
384
385
386#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
388
389#define ID3D12Debug1_AddRef(This) \
390 ( (This)->lpVtbl -> AddRef(This) )
391
392#define ID3D12Debug1_Release(This) \
393 ( (This)->lpVtbl -> Release(This) )
394
395
396#define ID3D12Debug1_EnableDebugLayer(This) \
397 ( (This)->lpVtbl -> EnableDebugLayer(This) )
398
399#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
400 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
401
402#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
403 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
404
405#endif /* COBJMACROS */
406
407
408#endif /* C style interface */
409
410
411
412
413#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
414
415
416#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
417#define __ID3D12Debug2_INTERFACE_DEFINED__
418
419/* interface ID3D12Debug2 */
420/* [unique][local][object][uuid] */
421
422
423EXTERN_C const IID IID_ID3D12Debug2;
424
425#if defined(__cplusplus) && !defined(CINTERFACE)
426
427 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
428 ID3D12Debug2 : public IUnknown
429 {
430 public:
431 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12Debug2Vtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12Debug2 * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12Debug2 * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12Debug2 * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
458 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
459 ID3D12Debug2 * This,
460 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
461
462 END_INTERFACE
463 } ID3D12Debug2Vtbl;
464
465 interface ID3D12Debug2
466 {
467 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D12Debug2_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D12Debug2_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
486 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
487
488#endif /* COBJMACROS */
489
490
491#endif /* C style interface */
492
493
494
495
496#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
497
498
499#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
500#define __ID3D12Debug3_INTERFACE_DEFINED__
501
502/* interface ID3D12Debug3 */
503/* [unique][local][object][uuid] */
504
505
506EXTERN_C const IID IID_ID3D12Debug3;
507
508#if defined(__cplusplus) && !defined(CINTERFACE)
509
510 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
511 ID3D12Debug3 : public ID3D12Debug
512 {
513 public:
514 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
515 BOOL Enable) = 0;
516
517 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
518 BOOL Enable) = 0;
519
520 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
521 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
522
523 };
524
525
526#else /* C style interface */
527
528 typedef struct ID3D12Debug3Vtbl
529 {
530 BEGIN_INTERFACE
531
532 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
533 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
534 ID3D12Debug3 * This,
535 REFIID riid,
536 _COM_Outptr_ void **ppvObject);
537
538 DECLSPEC_XFGVIRT(IUnknown, AddRef)
539 ULONG ( STDMETHODCALLTYPE *AddRef )(
540 ID3D12Debug3 * This);
541
542 DECLSPEC_XFGVIRT(IUnknown, Release)
543 ULONG ( STDMETHODCALLTYPE *Release )(
544 ID3D12Debug3 * This);
545
546 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
547 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
548 ID3D12Debug3 * This);
549
550 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
551 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
552 ID3D12Debug3 * This,
553 BOOL Enable);
554
555 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
556 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
557 ID3D12Debug3 * This,
558 BOOL Enable);
559
560 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
561 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
562 ID3D12Debug3 * This,
563 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
564
565 END_INTERFACE
566 } ID3D12Debug3Vtbl;
567
568 interface ID3D12Debug3
569 {
570 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
571 };
572
573
574
575#ifdef COBJMACROS
576
577
578#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
579 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
580
581#define ID3D12Debug3_AddRef(This) \
582 ( (This)->lpVtbl -> AddRef(This) )
583
584#define ID3D12Debug3_Release(This) \
585 ( (This)->lpVtbl -> Release(This) )
586
587
588#define ID3D12Debug3_EnableDebugLayer(This) \
589 ( (This)->lpVtbl -> EnableDebugLayer(This) )
590
591
592#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
593 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
594
595#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
596 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
597
598#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
599 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
600
601#endif /* COBJMACROS */
602
603
604#endif /* C style interface */
605
606
607
608
609#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
610
611
612#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
613#define __ID3D12Debug4_INTERFACE_DEFINED__
614
615/* interface ID3D12Debug4 */
616/* [unique][local][object][uuid] */
617
618
619EXTERN_C const IID IID_ID3D12Debug4;
620
621#if defined(__cplusplus) && !defined(CINTERFACE)
622
623 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
624 ID3D12Debug4 : public ID3D12Debug3
625 {
626 public:
627 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
628
629 };
630
631
632#else /* C style interface */
633
634 typedef struct ID3D12Debug4Vtbl
635 {
636 BEGIN_INTERFACE
637
638 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
639 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
640 ID3D12Debug4 * This,
641 REFIID riid,
642 _COM_Outptr_ void **ppvObject);
643
644 DECLSPEC_XFGVIRT(IUnknown, AddRef)
645 ULONG ( STDMETHODCALLTYPE *AddRef )(
646 ID3D12Debug4 * This);
647
648 DECLSPEC_XFGVIRT(IUnknown, Release)
649 ULONG ( STDMETHODCALLTYPE *Release )(
650 ID3D12Debug4 * This);
651
652 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
653 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
654 ID3D12Debug4 * This);
655
656 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
657 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
658 ID3D12Debug4 * This,
659 BOOL Enable);
660
661 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
662 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
663 ID3D12Debug4 * This,
664 BOOL Enable);
665
666 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
667 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
668 ID3D12Debug4 * This,
669 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
670
671 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
672 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
673 ID3D12Debug4 * This);
674
675 END_INTERFACE
676 } ID3D12Debug4Vtbl;
677
678 interface ID3D12Debug4
679 {
680 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
681 };
682
683
684
685#ifdef COBJMACROS
686
687
688#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
690
691#define ID3D12Debug4_AddRef(This) \
692 ( (This)->lpVtbl -> AddRef(This) )
693
694#define ID3D12Debug4_Release(This) \
695 ( (This)->lpVtbl -> Release(This) )
696
697
698#define ID3D12Debug4_EnableDebugLayer(This) \
699 ( (This)->lpVtbl -> EnableDebugLayer(This) )
700
701
702#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
703 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
704
705#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
706 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
707
708#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
709 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
710
711
712#define ID3D12Debug4_DisableDebugLayer(This) \
713 ( (This)->lpVtbl -> DisableDebugLayer(This) )
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
724
725
726#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
727#define __ID3D12Debug5_INTERFACE_DEFINED__
728
729/* interface ID3D12Debug5 */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_ID3D12Debug5;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
738 ID3D12Debug5 : public ID3D12Debug4
739 {
740 public:
741 virtual void STDMETHODCALLTYPE SetEnableAutoName(
742 BOOL Enable) = 0;
743
744 };
745
746
747#else /* C style interface */
748
749 typedef struct ID3D12Debug5Vtbl
750 {
751 BEGIN_INTERFACE
752
753 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
754 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
755 ID3D12Debug5 * This,
756 REFIID riid,
757 _COM_Outptr_ void **ppvObject);
758
759 DECLSPEC_XFGVIRT(IUnknown, AddRef)
760 ULONG ( STDMETHODCALLTYPE *AddRef )(
761 ID3D12Debug5 * This);
762
763 DECLSPEC_XFGVIRT(IUnknown, Release)
764 ULONG ( STDMETHODCALLTYPE *Release )(
765 ID3D12Debug5 * This);
766
767 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
768 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
769 ID3D12Debug5 * This);
770
771 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
772 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
773 ID3D12Debug5 * This,
774 BOOL Enable);
775
776 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
777 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
778 ID3D12Debug5 * This,
779 BOOL Enable);
780
781 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
782 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
783 ID3D12Debug5 * This,
784 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
785
786 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
787 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
788 ID3D12Debug5 * This);
789
790 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
791 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
792 ID3D12Debug5 * This,
793 BOOL Enable);
794
795 END_INTERFACE
796 } ID3D12Debug5Vtbl;
797
798 interface ID3D12Debug5
799 {
800 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
801 };
802
803
804
805#ifdef COBJMACROS
806
807
808#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
810
811#define ID3D12Debug5_AddRef(This) \
812 ( (This)->lpVtbl -> AddRef(This) )
813
814#define ID3D12Debug5_Release(This) \
815 ( (This)->lpVtbl -> Release(This) )
816
817
818#define ID3D12Debug5_EnableDebugLayer(This) \
819 ( (This)->lpVtbl -> EnableDebugLayer(This) )
820
821
822#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
823 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
824
825#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
826 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
827
828#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
829 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
830
831
832#define ID3D12Debug5_DisableDebugLayer(This) \
833 ( (This)->lpVtbl -> DisableDebugLayer(This) )
834
835
836#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
837 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
838
839#endif /* COBJMACROS */
840
841
842#endif /* C style interface */
843
844
845
846
847#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
848
849
850#ifndef __ID3D12Debug6_INTERFACE_DEFINED__
851#define __ID3D12Debug6_INTERFACE_DEFINED__
852
853/* interface ID3D12Debug6 */
854/* [unique][local][object][uuid] */
855
856
857EXTERN_C const IID IID_ID3D12Debug6;
858
859#if defined(__cplusplus) && !defined(CINTERFACE)
860
861 MIDL_INTERFACE("82a816d6-5d01-4157-97d0-4975463fd1ed")
862 ID3D12Debug6 : public ID3D12Debug5
863 {
864 public:
865 virtual void STDMETHODCALLTYPE SetForceLegacyBarrierValidation(
866 BOOL Enable) = 0;
867
868 };
869
870
871#else /* C style interface */
872
873 typedef struct ID3D12Debug6Vtbl
874 {
875 BEGIN_INTERFACE
876
877 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
878 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
879 ID3D12Debug6 * This,
880 REFIID riid,
881 _COM_Outptr_ void **ppvObject);
882
883 DECLSPEC_XFGVIRT(IUnknown, AddRef)
884 ULONG ( STDMETHODCALLTYPE *AddRef )(
885 ID3D12Debug6 * This);
886
887 DECLSPEC_XFGVIRT(IUnknown, Release)
888 ULONG ( STDMETHODCALLTYPE *Release )(
889 ID3D12Debug6 * This);
890
891 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
892 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
893 ID3D12Debug6 * This);
894
895 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
896 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
897 ID3D12Debug6 * This,
898 BOOL Enable);
899
900 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
901 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
902 ID3D12Debug6 * This,
903 BOOL Enable);
904
905 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
906 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
907 ID3D12Debug6 * This,
908 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
909
910 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
911 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
912 ID3D12Debug6 * This);
913
914 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
915 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
916 ID3D12Debug6 * This,
917 BOOL Enable);
918
919 DECLSPEC_XFGVIRT(ID3D12Debug6, SetForceLegacyBarrierValidation)
920 void ( STDMETHODCALLTYPE *SetForceLegacyBarrierValidation )(
921 ID3D12Debug6 * This,
922 BOOL Enable);
923
924 END_INTERFACE
925 } ID3D12Debug6Vtbl;
926
927 interface ID3D12Debug6
928 {
929 CONST_VTBL struct ID3D12Debug6Vtbl *lpVtbl;
930 };
931
932
933
934#ifdef COBJMACROS
935
936
937#define ID3D12Debug6_QueryInterface(This,riid,ppvObject) \
938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
939
940#define ID3D12Debug6_AddRef(This) \
941 ( (This)->lpVtbl -> AddRef(This) )
942
943#define ID3D12Debug6_Release(This) \
944 ( (This)->lpVtbl -> Release(This) )
945
946
947#define ID3D12Debug6_EnableDebugLayer(This) \
948 ( (This)->lpVtbl -> EnableDebugLayer(This) )
949
950
951#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable) \
952 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
953
954#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
955 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
956
957#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags) \
958 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
959
960
961#define ID3D12Debug6_DisableDebugLayer(This) \
962 ( (This)->lpVtbl -> DisableDebugLayer(This) )
963
964
965#define ID3D12Debug6_SetEnableAutoName(This,Enable) \
966 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
967
968
969#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable) \
970 ( (This)->lpVtbl -> SetForceLegacyBarrierValidation(This,Enable) )
971
972#endif /* COBJMACROS */
973
974
975#endif /* C style interface */
976
977
978
979
980#endif /* __ID3D12Debug6_INTERFACE_DEFINED__ */
981
982
983/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */
984/* [local] */
985
986DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
987typedef
988enum D3D12_RLDO_FLAGS
989 {
990 D3D12_RLDO_NONE = 0,
991 D3D12_RLDO_SUMMARY = 0x1,
992 D3D12_RLDO_DETAIL = 0x2,
993 D3D12_RLDO_IGNORE_INTERNAL = 0x4
994 } D3D12_RLDO_FLAGS;
995
996DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
997typedef
998enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
999 {
1000 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
1001 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
1002 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
1003 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
1004 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
1005
1006typedef
1007enum D3D12_DEBUG_FEATURE
1008 {
1009 D3D12_DEBUG_FEATURE_NONE = 0,
1010 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
1011 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
1012 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
1013 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
1014 } D3D12_DEBUG_FEATURE;
1015
1016DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
1017typedef
1018enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
1019 {
1020 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
1021 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
1022 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
1023 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
1024 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
1025 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
1026
1027typedef
1028enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
1029 {
1030 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
1031 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
1032 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
1033 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
1034 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
1035 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
1036
1037DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
1038typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
1039 {
1040 UINT MaxMessagesPerCommandList;
1041 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
1042 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
1043 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
1044
1045typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
1046 {
1047 FLOAT SlowdownFactor;
1048 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
1049
1050typedef
1051enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
1052 {
1053 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
1054 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
1055 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
1056 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
1057 } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
1065#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
1066
1067/* interface ID3D12DebugDevice1 */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12DebugDevice1;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
1076 ID3D12DebugDevice1 : public IUnknown
1077 {
1078 public:
1079 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1080 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1081 _In_reads_bytes_(DataSize) const void *pData,
1082 UINT DataSize) = 0;
1083
1084 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1085 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1086 _Out_writes_bytes_(DataSize) void *pData,
1087 UINT DataSize) = 0;
1088
1089 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1090 D3D12_RLDO_FLAGS Flags) = 0;
1091
1092 };
1093
1094
1095#else /* C style interface */
1096
1097 typedef struct ID3D12DebugDevice1Vtbl
1098 {
1099 BEGIN_INTERFACE
1100
1101 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1102 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1103 ID3D12DebugDevice1 * This,
1104 REFIID riid,
1105 _COM_Outptr_ void **ppvObject);
1106
1107 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1108 ULONG ( STDMETHODCALLTYPE *AddRef )(
1109 ID3D12DebugDevice1 * This);
1110
1111 DECLSPEC_XFGVIRT(IUnknown, Release)
1112 ULONG ( STDMETHODCALLTYPE *Release )(
1113 ID3D12DebugDevice1 * This);
1114
1115 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
1116 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1117 ID3D12DebugDevice1 * This,
1118 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1119 _In_reads_bytes_(DataSize) const void *pData,
1120 UINT DataSize);
1121
1122 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
1123 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1124 ID3D12DebugDevice1 * This,
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _Out_writes_bytes_(DataSize) void *pData,
1127 UINT DataSize);
1128
1129 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
1130 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1131 ID3D12DebugDevice1 * This,
1132 D3D12_RLDO_FLAGS Flags);
1133
1134 END_INTERFACE
1135 } ID3D12DebugDevice1Vtbl;
1136
1137 interface ID3D12DebugDevice1
1138 {
1139 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
1140 };
1141
1142
1143
1144#ifdef COBJMACROS
1145
1146
1147#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
1148 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1149
1150#define ID3D12DebugDevice1_AddRef(This) \
1151 ( (This)->lpVtbl -> AddRef(This) )
1152
1153#define ID3D12DebugDevice1_Release(This) \
1154 ( (This)->lpVtbl -> Release(This) )
1155
1156
1157#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
1158 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1159
1160#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
1161 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1162
1163#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
1164 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1165
1166#endif /* COBJMACROS */
1167
1168
1169#endif /* C style interface */
1170
1171
1172
1173
1174#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1175
1176
1177#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1178#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1179
1180/* interface ID3D12DebugDevice */
1181/* [unique][local][object][uuid] */
1182
1183
1184EXTERN_C const IID IID_ID3D12DebugDevice;
1185
1186#if defined(__cplusplus) && !defined(CINTERFACE)
1187
1188 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1189 ID3D12DebugDevice : public IUnknown
1190 {
1191 public:
1192 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1193 D3D12_DEBUG_FEATURE Mask) = 0;
1194
1195 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1196
1197 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1198 D3D12_RLDO_FLAGS Flags) = 0;
1199
1200 };
1201
1202
1203#else /* C style interface */
1204
1205 typedef struct ID3D12DebugDeviceVtbl
1206 {
1207 BEGIN_INTERFACE
1208
1209 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1210 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1211 ID3D12DebugDevice * This,
1212 REFIID riid,
1213 _COM_Outptr_ void **ppvObject);
1214
1215 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1216 ULONG ( STDMETHODCALLTYPE *AddRef )(
1217 ID3D12DebugDevice * This);
1218
1219 DECLSPEC_XFGVIRT(IUnknown, Release)
1220 ULONG ( STDMETHODCALLTYPE *Release )(
1221 ID3D12DebugDevice * This);
1222
1223 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1224 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1225 ID3D12DebugDevice * This,
1226 D3D12_DEBUG_FEATURE Mask);
1227
1228 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1229 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1230 ID3D12DebugDevice * This);
1231
1232 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1233 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1234 ID3D12DebugDevice * This,
1235 D3D12_RLDO_FLAGS Flags);
1236
1237 END_INTERFACE
1238 } ID3D12DebugDeviceVtbl;
1239
1240 interface ID3D12DebugDevice
1241 {
1242 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1243 };
1244
1245
1246
1247#ifdef COBJMACROS
1248
1249
1250#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1252
1253#define ID3D12DebugDevice_AddRef(This) \
1254 ( (This)->lpVtbl -> AddRef(This) )
1255
1256#define ID3D12DebugDevice_Release(This) \
1257 ( (This)->lpVtbl -> Release(This) )
1258
1259
1260#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1261 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1262
1263#define ID3D12DebugDevice_GetFeatureMask(This) \
1264 ( (This)->lpVtbl -> GetFeatureMask(This) )
1265
1266#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1267 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1268
1269#endif /* COBJMACROS */
1270
1271
1272#endif /* C style interface */
1273
1274
1275
1276
1277#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1278
1279
1280#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1281#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1282
1283/* interface ID3D12DebugDevice2 */
1284/* [unique][local][object][uuid] */
1285
1286
1287EXTERN_C const IID IID_ID3D12DebugDevice2;
1288
1289#if defined(__cplusplus) && !defined(CINTERFACE)
1290
1291 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1292 ID3D12DebugDevice2 : public ID3D12DebugDevice
1293 {
1294 public:
1295 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1296 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1297 _In_reads_bytes_(DataSize) const void *pData,
1298 UINT DataSize) = 0;
1299
1300 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1301 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1302 _Out_writes_bytes_(DataSize) void *pData,
1303 UINT DataSize) = 0;
1304
1305 };
1306
1307
1308#else /* C style interface */
1309
1310 typedef struct ID3D12DebugDevice2Vtbl
1311 {
1312 BEGIN_INTERFACE
1313
1314 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1315 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1316 ID3D12DebugDevice2 * This,
1317 REFIID riid,
1318 _COM_Outptr_ void **ppvObject);
1319
1320 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1321 ULONG ( STDMETHODCALLTYPE *AddRef )(
1322 ID3D12DebugDevice2 * This);
1323
1324 DECLSPEC_XFGVIRT(IUnknown, Release)
1325 ULONG ( STDMETHODCALLTYPE *Release )(
1326 ID3D12DebugDevice2 * This);
1327
1328 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1329 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1330 ID3D12DebugDevice2 * This,
1331 D3D12_DEBUG_FEATURE Mask);
1332
1333 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1334 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1335 ID3D12DebugDevice2 * This);
1336
1337 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1338 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1339 ID3D12DebugDevice2 * This,
1340 D3D12_RLDO_FLAGS Flags);
1341
1342 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1343 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1344 ID3D12DebugDevice2 * This,
1345 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1346 _In_reads_bytes_(DataSize) const void *pData,
1347 UINT DataSize);
1348
1349 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1350 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1351 ID3D12DebugDevice2 * This,
1352 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1353 _Out_writes_bytes_(DataSize) void *pData,
1354 UINT DataSize);
1355
1356 END_INTERFACE
1357 } ID3D12DebugDevice2Vtbl;
1358
1359 interface ID3D12DebugDevice2
1360 {
1361 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1362 };
1363
1364
1365
1366#ifdef COBJMACROS
1367
1368
1369#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1370 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1371
1372#define ID3D12DebugDevice2_AddRef(This) \
1373 ( (This)->lpVtbl -> AddRef(This) )
1374
1375#define ID3D12DebugDevice2_Release(This) \
1376 ( (This)->lpVtbl -> Release(This) )
1377
1378
1379#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1380 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1381
1382#define ID3D12DebugDevice2_GetFeatureMask(This) \
1383 ( (This)->lpVtbl -> GetFeatureMask(This) )
1384
1385#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1386 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1387
1388
1389#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1390 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1391
1392#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1393 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1394
1395#endif /* COBJMACROS */
1396
1397
1398#endif /* C style interface */
1399
1400
1401
1402
1403#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1404
1405
1406/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1407/* [local] */
1408
1409DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1410
1411
1412extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1413extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1414
1415#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1416#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1417
1418/* interface ID3D12DebugCommandQueue */
1419/* [unique][local][object][uuid] */
1420
1421
1422EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1423
1424#if defined(__cplusplus) && !defined(CINTERFACE)
1425
1426 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1427 ID3D12DebugCommandQueue : public IUnknown
1428 {
1429 public:
1430 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1431 _In_ ID3D12Resource *pResource,
1432 UINT Subresource,
1433 UINT State) = 0;
1434
1435 };
1436
1437
1438#else /* C style interface */
1439
1440 typedef struct ID3D12DebugCommandQueueVtbl
1441 {
1442 BEGIN_INTERFACE
1443
1444 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1445 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1446 ID3D12DebugCommandQueue * This,
1447 REFIID riid,
1448 _COM_Outptr_ void **ppvObject);
1449
1450 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1451 ULONG ( STDMETHODCALLTYPE *AddRef )(
1452 ID3D12DebugCommandQueue * This);
1453
1454 DECLSPEC_XFGVIRT(IUnknown, Release)
1455 ULONG ( STDMETHODCALLTYPE *Release )(
1456 ID3D12DebugCommandQueue * This);
1457
1458 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1459 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1460 ID3D12DebugCommandQueue * This,
1461 _In_ ID3D12Resource *pResource,
1462 UINT Subresource,
1463 UINT State);
1464
1465 END_INTERFACE
1466 } ID3D12DebugCommandQueueVtbl;
1467
1468 interface ID3D12DebugCommandQueue
1469 {
1470 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1471 };
1472
1473
1474
1475#ifdef COBJMACROS
1476
1477
1478#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1479 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1480
1481#define ID3D12DebugCommandQueue_AddRef(This) \
1482 ( (This)->lpVtbl -> AddRef(This) )
1483
1484#define ID3D12DebugCommandQueue_Release(This) \
1485 ( (This)->lpVtbl -> Release(This) )
1486
1487
1488#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1489 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1490
1491#endif /* COBJMACROS */
1492
1493
1494#endif /* C style interface */
1495
1496
1497
1498
1499#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1500
1501
1502#ifndef __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1503#define __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1504
1505/* interface ID3D12DebugCommandQueue1 */
1506/* [unique][local][object][uuid] */
1507
1508
1509EXTERN_C const IID IID_ID3D12DebugCommandQueue1;
1510
1511#if defined(__cplusplus) && !defined(CINTERFACE)
1512
1513 MIDL_INTERFACE("16be35a2-bfd6-49f2-bcae-eaae4aff862d")
1514 ID3D12DebugCommandQueue1 : public ID3D12DebugCommandQueue
1515 {
1516 public:
1517 virtual void STDMETHODCALLTYPE AssertResourceAccess(
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 D3D12_BARRIER_ACCESS Access) = 0;
1521
1522 virtual void STDMETHODCALLTYPE AssertTextureLayout(
1523 _In_ ID3D12Resource *pResource,
1524 UINT Subresource,
1525 D3D12_BARRIER_LAYOUT Layout) = 0;
1526
1527 };
1528
1529
1530#else /* C style interface */
1531
1532 typedef struct ID3D12DebugCommandQueue1Vtbl
1533 {
1534 BEGIN_INTERFACE
1535
1536 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1537 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1538 ID3D12DebugCommandQueue1 * This,
1539 REFIID riid,
1540 _COM_Outptr_ void **ppvObject);
1541
1542 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1543 ULONG ( STDMETHODCALLTYPE *AddRef )(
1544 ID3D12DebugCommandQueue1 * This);
1545
1546 DECLSPEC_XFGVIRT(IUnknown, Release)
1547 ULONG ( STDMETHODCALLTYPE *Release )(
1548 ID3D12DebugCommandQueue1 * This);
1549
1550 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1551 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1552 ID3D12DebugCommandQueue1 * This,
1553 _In_ ID3D12Resource *pResource,
1554 UINT Subresource,
1555 UINT State);
1556
1557 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertResourceAccess)
1558 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
1559 ID3D12DebugCommandQueue1 * This,
1560 _In_ ID3D12Resource *pResource,
1561 UINT Subresource,
1562 D3D12_BARRIER_ACCESS Access);
1563
1564 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertTextureLayout)
1565 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
1566 ID3D12DebugCommandQueue1 * This,
1567 _In_ ID3D12Resource *pResource,
1568 UINT Subresource,
1569 D3D12_BARRIER_LAYOUT Layout);
1570
1571 END_INTERFACE
1572 } ID3D12DebugCommandQueue1Vtbl;
1573
1574 interface ID3D12DebugCommandQueue1
1575 {
1576 CONST_VTBL struct ID3D12DebugCommandQueue1Vtbl *lpVtbl;
1577 };
1578
1579
1580
1581#ifdef COBJMACROS
1582
1583
1584#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject) \
1585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1586
1587#define ID3D12DebugCommandQueue1_AddRef(This) \
1588 ( (This)->lpVtbl -> AddRef(This) )
1589
1590#define ID3D12DebugCommandQueue1_Release(This) \
1591 ( (This)->lpVtbl -> Release(This) )
1592
1593
1594#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State) \
1595 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1596
1597
1598#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access) \
1599 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
1600
1601#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout) \
1602 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
1603
1604#endif /* COBJMACROS */
1605
1606
1607#endif /* C style interface */
1608
1609
1610
1611
1612#endif /* __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__ */
1613
1614
1615/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */
1616/* [local] */
1617
1618typedef
1619enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1620 {
1621 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1622 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1623
1624typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1625 {
1626 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1627 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1628
1629
1630
1631extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec;
1632extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec;
1633
1634#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1635#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1636
1637/* interface ID3D12DebugCommandList1 */
1638/* [unique][local][object][uuid] */
1639
1640
1641EXTERN_C const IID IID_ID3D12DebugCommandList1;
1642
1643#if defined(__cplusplus) && !defined(CINTERFACE)
1644
1645 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1646 ID3D12DebugCommandList1 : public IUnknown
1647 {
1648 public:
1649 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1650 _In_ ID3D12Resource *pResource,
1651 UINT Subresource,
1652 UINT State) = 0;
1653
1654 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1655 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1656 _In_reads_bytes_(DataSize) const void *pData,
1657 UINT DataSize) = 0;
1658
1659 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1660 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1661 _Out_writes_bytes_(DataSize) void *pData,
1662 UINT DataSize) = 0;
1663
1664 };
1665
1666
1667#else /* C style interface */
1668
1669 typedef struct ID3D12DebugCommandList1Vtbl
1670 {
1671 BEGIN_INTERFACE
1672
1673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1675 ID3D12DebugCommandList1 * This,
1676 REFIID riid,
1677 _COM_Outptr_ void **ppvObject);
1678
1679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1680 ULONG ( STDMETHODCALLTYPE *AddRef )(
1681 ID3D12DebugCommandList1 * This);
1682
1683 DECLSPEC_XFGVIRT(IUnknown, Release)
1684 ULONG ( STDMETHODCALLTYPE *Release )(
1685 ID3D12DebugCommandList1 * This);
1686
1687 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1688 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1689 ID3D12DebugCommandList1 * This,
1690 _In_ ID3D12Resource *pResource,
1691 UINT Subresource,
1692 UINT State);
1693
1694 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1695 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1696 ID3D12DebugCommandList1 * This,
1697 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1698 _In_reads_bytes_(DataSize) const void *pData,
1699 UINT DataSize);
1700
1701 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1702 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1703 ID3D12DebugCommandList1 * This,
1704 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1705 _Out_writes_bytes_(DataSize) void *pData,
1706 UINT DataSize);
1707
1708 END_INTERFACE
1709 } ID3D12DebugCommandList1Vtbl;
1710
1711 interface ID3D12DebugCommandList1
1712 {
1713 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1714 };
1715
1716
1717
1718#ifdef COBJMACROS
1719
1720
1721#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1722 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1723
1724#define ID3D12DebugCommandList1_AddRef(This) \
1725 ( (This)->lpVtbl -> AddRef(This) )
1726
1727#define ID3D12DebugCommandList1_Release(This) \
1728 ( (This)->lpVtbl -> Release(This) )
1729
1730
1731#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1732 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1733
1734#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1735 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1736
1737#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1738 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1739
1740#endif /* COBJMACROS */
1741
1742
1743#endif /* C style interface */
1744
1745
1746
1747
1748#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1749
1750
1751#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1752#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1753
1754/* interface ID3D12DebugCommandList */
1755/* [unique][local][object][uuid] */
1756
1757
1758EXTERN_C const IID IID_ID3D12DebugCommandList;
1759
1760#if defined(__cplusplus) && !defined(CINTERFACE)
1761
1762 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1763 ID3D12DebugCommandList : public IUnknown
1764 {
1765 public:
1766 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1767 _In_ ID3D12Resource *pResource,
1768 UINT Subresource,
1769 UINT State) = 0;
1770
1771 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1772 D3D12_DEBUG_FEATURE Mask) = 0;
1773
1774 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1775
1776 };
1777
1778
1779#else /* C style interface */
1780
1781 typedef struct ID3D12DebugCommandListVtbl
1782 {
1783 BEGIN_INTERFACE
1784
1785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1787 ID3D12DebugCommandList * This,
1788 REFIID riid,
1789 _COM_Outptr_ void **ppvObject);
1790
1791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1792 ULONG ( STDMETHODCALLTYPE *AddRef )(
1793 ID3D12DebugCommandList * This);
1794
1795 DECLSPEC_XFGVIRT(IUnknown, Release)
1796 ULONG ( STDMETHODCALLTYPE *Release )(
1797 ID3D12DebugCommandList * This);
1798
1799 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1800 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1801 ID3D12DebugCommandList * This,
1802 _In_ ID3D12Resource *pResource,
1803 UINT Subresource,
1804 UINT State);
1805
1806 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1807 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1808 ID3D12DebugCommandList * This,
1809 D3D12_DEBUG_FEATURE Mask);
1810
1811 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1812 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1813 ID3D12DebugCommandList * This);
1814
1815 END_INTERFACE
1816 } ID3D12DebugCommandListVtbl;
1817
1818 interface ID3D12DebugCommandList
1819 {
1820 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1821 };
1822
1823
1824
1825#ifdef COBJMACROS
1826
1827
1828#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1829 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1830
1831#define ID3D12DebugCommandList_AddRef(This) \
1832 ( (This)->lpVtbl -> AddRef(This) )
1833
1834#define ID3D12DebugCommandList_Release(This) \
1835 ( (This)->lpVtbl -> Release(This) )
1836
1837
1838#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1839 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1840
1841#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1842 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1843
1844#define ID3D12DebugCommandList_GetFeatureMask(This) \
1845 ( (This)->lpVtbl -> GetFeatureMask(This) )
1846
1847#endif /* COBJMACROS */
1848
1849
1850#endif /* C style interface */
1851
1852
1853
1854
1855#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1856
1857
1858#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1859#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1860
1861/* interface ID3D12DebugCommandList2 */
1862/* [unique][local][object][uuid] */
1863
1864
1865EXTERN_C const IID IID_ID3D12DebugCommandList2;
1866
1867#if defined(__cplusplus) && !defined(CINTERFACE)
1868
1869 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1870 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1871 {
1872 public:
1873 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1874 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1875 _In_reads_bytes_(DataSize) const void *pData,
1876 UINT DataSize) = 0;
1877
1878 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1879 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1880 _Out_writes_bytes_(DataSize) void *pData,
1881 UINT DataSize) = 0;
1882
1883 };
1884
1885
1886#else /* C style interface */
1887
1888 typedef struct ID3D12DebugCommandList2Vtbl
1889 {
1890 BEGIN_INTERFACE
1891
1892 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1893 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1894 ID3D12DebugCommandList2 * This,
1895 REFIID riid,
1896 _COM_Outptr_ void **ppvObject);
1897
1898 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1899 ULONG ( STDMETHODCALLTYPE *AddRef )(
1900 ID3D12DebugCommandList2 * This);
1901
1902 DECLSPEC_XFGVIRT(IUnknown, Release)
1903 ULONG ( STDMETHODCALLTYPE *Release )(
1904 ID3D12DebugCommandList2 * This);
1905
1906 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1907 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1908 ID3D12DebugCommandList2 * This,
1909 _In_ ID3D12Resource *pResource,
1910 UINT Subresource,
1911 UINT State);
1912
1913 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1914 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1915 ID3D12DebugCommandList2 * This,
1916 D3D12_DEBUG_FEATURE Mask);
1917
1918 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1919 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1920 ID3D12DebugCommandList2 * This);
1921
1922 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1923 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1924 ID3D12DebugCommandList2 * This,
1925 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1926 _In_reads_bytes_(DataSize) const void *pData,
1927 UINT DataSize);
1928
1929 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1930 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1931 ID3D12DebugCommandList2 * This,
1932 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1933 _Out_writes_bytes_(DataSize) void *pData,
1934 UINT DataSize);
1935
1936 END_INTERFACE
1937 } ID3D12DebugCommandList2Vtbl;
1938
1939 interface ID3D12DebugCommandList2
1940 {
1941 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1942 };
1943
1944
1945
1946#ifdef COBJMACROS
1947
1948
1949#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1951
1952#define ID3D12DebugCommandList2_AddRef(This) \
1953 ( (This)->lpVtbl -> AddRef(This) )
1954
1955#define ID3D12DebugCommandList2_Release(This) \
1956 ( (This)->lpVtbl -> Release(This) )
1957
1958
1959#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1960 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1961
1962#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1963 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1964
1965#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1966 ( (This)->lpVtbl -> GetFeatureMask(This) )
1967
1968
1969#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1970 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1971
1972#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1973 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1974
1975#endif /* COBJMACROS */
1976
1977
1978#endif /* C style interface */
1979
1980
1981
1982
1983#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1984
1985
1986#ifndef __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1987#define __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1988
1989/* interface ID3D12DebugCommandList3 */
1990/* [unique][local][object][uuid] */
1991
1992
1993EXTERN_C const IID IID_ID3D12DebugCommandList3;
1994
1995#if defined(__cplusplus) && !defined(CINTERFACE)
1996
1997 MIDL_INTERFACE("197d5e15-4d37-4d34-af78-724cd70fdb1f")
1998 ID3D12DebugCommandList3 : public ID3D12DebugCommandList2
1999 {
2000 public:
2001 virtual void STDMETHODCALLTYPE AssertResourceAccess(
2002 _In_ ID3D12Resource *pResource,
2003 UINT Subresource,
2004 D3D12_BARRIER_ACCESS Access) = 0;
2005
2006 virtual void STDMETHODCALLTYPE AssertTextureLayout(
2007 _In_ ID3D12Resource *pResource,
2008 UINT Subresource,
2009 D3D12_BARRIER_LAYOUT Layout) = 0;
2010
2011 };
2012
2013
2014#else /* C style interface */
2015
2016 typedef struct ID3D12DebugCommandList3Vtbl
2017 {
2018 BEGIN_INTERFACE
2019
2020 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2021 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2022 ID3D12DebugCommandList3 * This,
2023 REFIID riid,
2024 _COM_Outptr_ void **ppvObject);
2025
2026 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2027 ULONG ( STDMETHODCALLTYPE *AddRef )(
2028 ID3D12DebugCommandList3 * This);
2029
2030 DECLSPEC_XFGVIRT(IUnknown, Release)
2031 ULONG ( STDMETHODCALLTYPE *Release )(
2032 ID3D12DebugCommandList3 * This);
2033
2034 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
2035 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
2036 ID3D12DebugCommandList3 * This,
2037 _In_ ID3D12Resource *pResource,
2038 UINT Subresource,
2039 UINT State);
2040
2041 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
2042 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
2043 ID3D12DebugCommandList3 * This,
2044 D3D12_DEBUG_FEATURE Mask);
2045
2046 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
2047 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
2048 ID3D12DebugCommandList3 * This);
2049
2050 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
2051 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
2052 ID3D12DebugCommandList3 * This,
2053 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2054 _In_reads_bytes_(DataSize) const void *pData,
2055 UINT DataSize);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
2058 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
2059 ID3D12DebugCommandList3 * This,
2060 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2061 _Out_writes_bytes_(DataSize) void *pData,
2062 UINT DataSize);
2063
2064 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertResourceAccess)
2065 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
2066 ID3D12DebugCommandList3 * This,
2067 _In_ ID3D12Resource *pResource,
2068 UINT Subresource,
2069 D3D12_BARRIER_ACCESS Access);
2070
2071 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertTextureLayout)
2072 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
2073 ID3D12DebugCommandList3 * This,
2074 _In_ ID3D12Resource *pResource,
2075 UINT Subresource,
2076 D3D12_BARRIER_LAYOUT Layout);
2077
2078 END_INTERFACE
2079 } ID3D12DebugCommandList3Vtbl;
2080
2081 interface ID3D12DebugCommandList3
2082 {
2083 CONST_VTBL struct ID3D12DebugCommandList3Vtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12DebugCommandList3_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12DebugCommandList3_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State) \
2102 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
2103
2104#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask) \
2105 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
2106
2107#define ID3D12DebugCommandList3_GetFeatureMask(This) \
2108 ( (This)->lpVtbl -> GetFeatureMask(This) )
2109
2110
2111#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize) \
2112 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
2113
2114#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize) \
2115 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
2116
2117
2118#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access) \
2119 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
2120
2121#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout) \
2122 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
2123
2124#endif /* COBJMACROS */
2125
2126
2127#endif /* C style interface */
2128
2129
2130
2131
2132#endif /* __ID3D12DebugCommandList3_INTERFACE_DEFINED__ */
2133
2134
2135#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
2136#define __ID3D12SharingContract_INTERFACE_DEFINED__
2137
2138/* interface ID3D12SharingContract */
2139/* [unique][local][object][uuid] */
2140
2141
2142EXTERN_C const IID IID_ID3D12SharingContract;
2143
2144#if defined(__cplusplus) && !defined(CINTERFACE)
2145
2146 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
2147 ID3D12SharingContract : public IUnknown
2148 {
2149 public:
2150 virtual void STDMETHODCALLTYPE Present(
2151 _In_ ID3D12Resource *pResource,
2152 UINT Subresource,
2153 _In_ HWND window) = 0;
2154
2155 virtual void STDMETHODCALLTYPE SharedFenceSignal(
2156 _In_ ID3D12Fence *pFence,
2157 UINT64 FenceValue) = 0;
2158
2159 virtual void STDMETHODCALLTYPE BeginCapturableWork(
2160 _In_ REFGUID guid) = 0;
2161
2162 virtual void STDMETHODCALLTYPE EndCapturableWork(
2163 _In_ REFGUID guid) = 0;
2164
2165 };
2166
2167
2168#else /* C style interface */
2169
2170 typedef struct ID3D12SharingContractVtbl
2171 {
2172 BEGIN_INTERFACE
2173
2174 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2175 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2176 ID3D12SharingContract * This,
2177 REFIID riid,
2178 _COM_Outptr_ void **ppvObject);
2179
2180 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2181 ULONG ( STDMETHODCALLTYPE *AddRef )(
2182 ID3D12SharingContract * This);
2183
2184 DECLSPEC_XFGVIRT(IUnknown, Release)
2185 ULONG ( STDMETHODCALLTYPE *Release )(
2186 ID3D12SharingContract * This);
2187
2188 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
2189 void ( STDMETHODCALLTYPE *Present )(
2190 ID3D12SharingContract * This,
2191 _In_ ID3D12Resource *pResource,
2192 UINT Subresource,
2193 _In_ HWND window);
2194
2195 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
2196 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
2197 ID3D12SharingContract * This,
2198 _In_ ID3D12Fence *pFence,
2199 UINT64 FenceValue);
2200
2201 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
2202 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
2203 ID3D12SharingContract * This,
2204 _In_ REFGUID guid);
2205
2206 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
2207 void ( STDMETHODCALLTYPE *EndCapturableWork )(
2208 ID3D12SharingContract * This,
2209 _In_ REFGUID guid);
2210
2211 END_INTERFACE
2212 } ID3D12SharingContractVtbl;
2213
2214 interface ID3D12SharingContract
2215 {
2216 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
2217 };
2218
2219
2220
2221#ifdef COBJMACROS
2222
2223
2224#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
2225 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2226
2227#define ID3D12SharingContract_AddRef(This) \
2228 ( (This)->lpVtbl -> AddRef(This) )
2229
2230#define ID3D12SharingContract_Release(This) \
2231 ( (This)->lpVtbl -> Release(This) )
2232
2233
2234#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
2235 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
2236
2237#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
2238 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
2239
2240#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
2241 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
2242
2243#define ID3D12SharingContract_EndCapturableWork(This,guid) \
2244 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
2245
2246#endif /* COBJMACROS */
2247
2248
2249#endif /* C style interface */
2250
2251
2252
2253
2254#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
2255
2256
2257#ifndef __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2258#define __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2259
2260/* interface ID3D12ManualWriteTrackingResource */
2261/* [unique][local][object][uuid] */
2262
2263
2264EXTERN_C const IID IID_ID3D12ManualWriteTrackingResource;
2265
2266#if defined(__cplusplus) && !defined(CINTERFACE)
2267
2268 MIDL_INTERFACE("86ca3b85-49ad-4b6e-aed5-eddb18540f41")
2269 ID3D12ManualWriteTrackingResource : public IUnknown
2270 {
2271 public:
2272 virtual void STDMETHODCALLTYPE TrackWrite(
2273 UINT Subresource,
2274 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
2275
2276 };
2277
2278
2279#else /* C style interface */
2280
2281 typedef struct ID3D12ManualWriteTrackingResourceVtbl
2282 {
2283 BEGIN_INTERFACE
2284
2285 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2286 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2287 ID3D12ManualWriteTrackingResource * This,
2288 REFIID riid,
2289 _COM_Outptr_ void **ppvObject);
2290
2291 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2292 ULONG ( STDMETHODCALLTYPE *AddRef )(
2293 ID3D12ManualWriteTrackingResource * This);
2294
2295 DECLSPEC_XFGVIRT(IUnknown, Release)
2296 ULONG ( STDMETHODCALLTYPE *Release )(
2297 ID3D12ManualWriteTrackingResource * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12ManualWriteTrackingResource, TrackWrite)
2300 void ( STDMETHODCALLTYPE *TrackWrite )(
2301 ID3D12ManualWriteTrackingResource * This,
2302 UINT Subresource,
2303 _In_opt_ const D3D12_RANGE *pWrittenRange);
2304
2305 END_INTERFACE
2306 } ID3D12ManualWriteTrackingResourceVtbl;
2307
2308 interface ID3D12ManualWriteTrackingResource
2309 {
2310 CONST_VTBL struct ID3D12ManualWriteTrackingResourceVtbl *lpVtbl;
2311 };
2312
2313
2314
2315#ifdef COBJMACROS
2316
2317
2318#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject) \
2319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2320
2321#define ID3D12ManualWriteTrackingResource_AddRef(This) \
2322 ( (This)->lpVtbl -> AddRef(This) )
2323
2324#define ID3D12ManualWriteTrackingResource_Release(This) \
2325 ( (This)->lpVtbl -> Release(This) )
2326
2327
2328#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange) \
2329 ( (This)->lpVtbl -> TrackWrite(This,Subresource,pWrittenRange) )
2330
2331#endif /* COBJMACROS */
2332
2333
2334#endif /* C style interface */
2335
2336
2337
2338
2339#endif /* __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__ */
2340
2341
2342/* interface __MIDL_itf_d3d12sdklayers_0000_0018 */
2343/* [local] */
2344
2345typedef
2346enum D3D12_MESSAGE_CATEGORY
2347 {
2348 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
2349 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
2350 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
2351 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
2352 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
2353 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
2354 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
2355 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
2356 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
2357 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
2358 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
2359 } D3D12_MESSAGE_CATEGORY;
2360
2361typedef
2362enum D3D12_MESSAGE_SEVERITY
2363 {
2364 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
2365 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
2366 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
2367 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
2368 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
2369 } D3D12_MESSAGE_SEVERITY;
2370
2371typedef
2372enum D3D12_MESSAGE_ID
2373 {
2374 D3D12_MESSAGE_ID_UNKNOWN = 0,
2375 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
2376 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
2377 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
2378 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
2379 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
2380 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
2381 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
2382 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
2383 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
2384 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
2385 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
2386 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
2387 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
2388 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
2389 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
2390 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
2391 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
2392 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
2393 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
2394 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
2395 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
2396 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
2397 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
2398 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
2399 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
2400 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
2401 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
2402 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
2403 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
2404 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
2405 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
2406 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
2407 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
2408 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
2409 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
2410 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
2411 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
2412 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
2413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
2414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
2415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
2416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
2417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
2418 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
2419 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
2420 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
2421 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
2422 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
2423 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
2424 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
2425 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
2426 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
2427 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
2428 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
2429 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
2430 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
2431 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
2432 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
2433 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
2434 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
2435 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
2436 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
2437 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
2438 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
2439 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
2440 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
2441 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
2442 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
2443 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
2444 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
2445 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
2446 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
2447 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
2448 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
2449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
2450 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
2451 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
2452 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
2453 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
2454 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
2455 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
2456 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
2457 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
2458 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
2459 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
2460 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
2461 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
2462 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
2463 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
2464 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
2465 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
2466 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
2467 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
2468 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
2469 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
2470 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
2471 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
2472 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
2473 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
2474 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
2475 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
2476 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
2477 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
2478 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
2479 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
2480 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
2481 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
2482 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
2483 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
2484 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
2485 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
2486 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
2487 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
2488 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
2489 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
2490 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
2491 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
2492 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
2493 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
2494 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
2495 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
2496 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
2497 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
2498 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
2499 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
2500 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
2501 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
2502 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
2503 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
2504 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
2505 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
2506 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
2507 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
2508 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
2509 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
2510 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
2511 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
2512 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
2513 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
2514 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
2515 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
2516 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
2517 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
2518 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
2519 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
2520 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2521 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2522 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2523 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2524 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2525 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2526 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2527 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2528 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2529 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2530 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2531 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2532 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2533 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2534 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2535 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2536 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2537 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2538 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2539 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2540 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2541 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2542 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2543 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2544 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2545 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2546 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2547 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2548 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2549 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2550 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2551 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2552 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2553 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2554 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2555 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2556 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2557 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2558 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2559 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2560 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2561 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2562 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2563 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2564 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2565 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2566 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2567 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2568 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2569 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2570 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2571 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2572 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2573 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2574 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2575 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2576 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2577 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2578 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2579 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2580 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2581 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2582 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2583 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2584 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2585 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2586 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2587 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2588 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2589 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2590 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2591 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2592 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2593 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2594 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2595 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2596 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2597 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2598 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2599 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2600 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2601 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2602 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2603 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2604 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2605 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2606 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2607 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2608 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2609 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2610 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2611 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2612 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2613 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2614 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2615 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2616 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2617 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2618 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2619 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2620 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2621 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2622 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2623 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2624 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2625 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2626 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2627 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2628 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2629 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2630 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2631 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2632 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2633 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2634 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2635 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2636 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2637 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2638 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2639 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2640 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2641 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2642 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2643 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2644 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2645 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2646 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2647 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2648 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2649 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2650 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2651 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2652 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2653 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2654 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2655 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2656 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2657 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2658 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2659 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2660 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2661 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2662 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2663 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2664 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2665 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2666 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2667 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2668 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2669 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2670 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2671 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2672 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2673 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2674 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2675 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2688 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2689 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2690 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2691 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2692 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2693 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2694 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2695 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2696 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2697 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2698 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2699 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2700 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2701 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2702 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2703 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2704 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2705 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2706 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2707 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2708 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2709 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2710 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2711 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2712 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2713 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2714 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2715 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2716 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2717 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2718 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2719 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2720 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2721 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2722 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2723 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2724 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2725 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2726 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2727 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2728 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2729 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2730 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2731 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2732 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2733 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2734 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2735 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2736 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2737 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2738 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2739 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2740 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2741 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2742 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2743 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2744 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2745 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2746 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2747 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2748 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2749 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2750 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2751 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2752 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2753 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2754 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2755 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2756 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2757 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2758 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2759 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2760 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2761 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2762 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2763 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2764 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2765 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2766 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2767 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2768 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2769 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2770 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2771 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2772 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2773 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2774 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2775 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2776 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2777 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2778 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2779 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2780 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2781 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2782 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2783 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2784 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2785 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2786 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2787 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2788 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2789 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2804 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2805 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2806 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2807 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2808 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2809 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2810 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2811 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2812 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2813 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2814 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2815 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2816 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2817 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2818 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2819 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2820 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2821 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2822 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2823 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2824 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2825 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2826 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2827 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2828 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2829 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2830 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2831 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2832 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2833 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2834 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2835 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2836 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2837 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2838 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2839 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2840 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2841 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2842 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2843 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2844 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2845 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2846 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2847 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2848 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2849 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2850 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2851 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2852 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2854 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2855 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2856 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2857 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2858 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2859 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2860 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2861 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2862 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2863 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2864 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2865 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2866 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2867 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2868 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2869 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2870 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2871 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2872 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2873 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2874 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2875 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2876 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2877 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2884 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2885 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2886 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2887 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2888 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2889 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2894 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2895 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2897 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2898 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2900 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2901 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2902 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2903 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2904 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2905 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2906 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2907 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2908 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2909 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2910 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2911 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2912 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2913 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2914 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2915 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2916 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2917 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2918 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2919 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2920 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2921 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2922 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2923 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2924 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2925 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2926 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2927 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2928 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2929 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2930 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2931 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2932 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2933 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2934 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2935 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2936 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2937 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2938 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2939 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2940 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2941 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2942 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2943 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2944 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2945 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2946 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2947 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2948 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2949 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2950 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2951 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2952 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2953 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2954 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2955 D3D12_MESSAGE_ID_END_EVENT = 1015,
2956 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2957 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2958 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2959 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2960 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2961 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2962 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2963 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2964 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2965 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2968 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2969 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2970 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2971 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2972 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2973 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2974 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2975 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2976 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2977 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2978 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2979 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2980 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2981 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2982 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2983 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2984 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2985 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2986 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2987 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2988 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2989 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2990 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2991 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2992 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2993 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2994 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2995 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2996 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2997 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2998 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2999 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
3000 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
3001 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
3002 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
3003 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
3004 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
3005 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
3006 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
3007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
3008 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
3009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
3010 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
3011 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
3012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
3013 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
3014 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
3015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
3016 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
3017 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
3018 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
3019 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
3020 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
3021 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
3022 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
3023 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
3024 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
3025 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
3026 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
3027 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
3028 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
3029 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
3030 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
3031 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
3032 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
3033 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
3034 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
3035 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
3036 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
3037 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
3038 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
3039 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
3040 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
3041 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
3042 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
3043 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
3044 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
3045 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
3046 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
3047 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
3048 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
3049 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
3050 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
3051 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
3052 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
3053 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
3054 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
3055 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
3056 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
3057 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
3058 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
3059 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
3060 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
3061 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
3062 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
3063 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
3064 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
3065 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
3066 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
3067 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
3068 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
3069 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
3070 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
3071 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
3072 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
3073 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
3074 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
3075 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
3076 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
3077 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
3078 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
3079 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
3080 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
3081 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
3082 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
3083 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
3084 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
3085 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
3086 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
3087 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
3088 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
3089 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
3090 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
3091 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
3092 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
3093 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
3094 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
3095 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
3096 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
3097 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
3098 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
3099 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
3100 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
3101 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
3102 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
3103 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
3104 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
3105 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
3106 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
3107 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
3108 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
3109 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
3110 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
3111 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
3112 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
3113 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
3114 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
3115 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
3116 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
3117 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
3118 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
3119 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
3120 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
3121 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
3122 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
3123 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
3124 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
3125 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
3126 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
3127 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
3128 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
3129 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
3130 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
3131 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
3132 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
3133 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
3134 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
3135 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
3136 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
3137 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
3138 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
3139 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
3140 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
3141 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
3142 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
3143 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
3144 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
3145 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
3146 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
3147 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
3148 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
3149 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
3150 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
3151 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
3152 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
3153 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
3154 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
3155 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
3156 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
3157 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
3158 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
3159 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
3160 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
3161 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
3162 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
3163 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
3164 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
3165 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
3166 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
3167 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
3168 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
3169 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
3170 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
3171 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
3172 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
3173 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
3174 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
3175 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
3176 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
3177 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
3178 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
3179 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
3180 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
3181 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
3182 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
3183 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
3184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
3185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
3186 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
3187 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
3188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
3189 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
3190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
3191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
3192 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
3193 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
3194 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
3195 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
3196 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
3197 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
3198 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
3199 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
3200 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
3201 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
3202 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
3203 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
3204 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
3205 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
3206 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
3207 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
3208 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
3209 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
3210 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
3211 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
3212 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
3213 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
3214 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
3215 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
3216 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
3217 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
3218 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
3219 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
3220 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
3221 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
3222 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
3223 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
3224 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
3225 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
3226 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
3227 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
3228 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
3229 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
3230 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
3231 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
3232 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
3233 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
3234 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
3235 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
3236 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
3237 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
3238 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
3239 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
3240 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
3241 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
3242 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
3243 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
3244 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
3245 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
3246 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
3247 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
3248 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
3249 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
3250 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
3251 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
3252 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
3253 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
3254 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
3255 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
3256 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
3257 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
3258 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
3259 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
3260 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
3261 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
3262 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
3263 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
3264 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
3265 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
3266 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
3267 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
3268 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
3269 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
3270 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
3271 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
3272 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
3273 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
3274 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
3275 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
3276 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
3277 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
3278 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
3279 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
3280 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
3281 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
3282 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
3283 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
3284 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
3285 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
3286 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
3287 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
3288 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
3289 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
3290 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
3291 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
3292 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
3293 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
3294 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
3295 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
3296 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
3297 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
3298 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
3299 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
3300 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
3301 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
3302 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
3303 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
3304 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
3305 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
3306 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
3307 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
3308 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
3309 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
3310 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
3311 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
3312 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
3313 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
3314 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
3315 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
3316 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
3317 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
3318 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
3319 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
3320 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
3321 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
3322 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
3323 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
3324 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
3325 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
3326 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
3327 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
3328 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
3329 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
3330 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
3331 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
3332 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
3333 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
3334 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
3335 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
3336 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
3337 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
3338 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
3339 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
3340 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
3341 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
3342 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
3343 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
3344 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
3345 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
3346 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
3347 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
3348 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
3349 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
3350 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
3351 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
3352 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
3353 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
3354 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
3355 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
3356 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
3357 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
3358 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
3359 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
3360 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
3361 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
3362 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
3363 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
3364 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
3365 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
3366 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
3367 } D3D12_MESSAGE_ID;
3368
3369typedef struct D3D12_MESSAGE
3370 {
3371 D3D12_MESSAGE_CATEGORY Category;
3372 D3D12_MESSAGE_SEVERITY Severity;
3373 D3D12_MESSAGE_ID ID;
3374 _Field_size_(DescriptionByteLength) const char *pDescription;
3375 SIZE_T DescriptionByteLength;
3376 } D3D12_MESSAGE;
3377
3378typedef struct D3D12_INFO_QUEUE_FILTER_DESC
3379 {
3380 UINT NumCategories;
3381 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
3382 UINT NumSeverities;
3383 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
3384 UINT NumIDs;
3385 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
3386 } D3D12_INFO_QUEUE_FILTER_DESC;
3387
3388typedef struct D3D12_INFO_QUEUE_FILTER
3389 {
3390 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
3391 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
3392 } D3D12_INFO_QUEUE_FILTER;
3393
3394#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
3395
3396
3397extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_c_ifspec;
3398extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_s_ifspec;
3399
3400#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
3401#define __ID3D12InfoQueue_INTERFACE_DEFINED__
3402
3403/* interface ID3D12InfoQueue */
3404/* [unique][local][object][uuid] */
3405
3406
3407EXTERN_C const IID IID_ID3D12InfoQueue;
3408
3409#if defined(__cplusplus) && !defined(CINTERFACE)
3410
3411 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
3412 ID3D12InfoQueue : public IUnknown
3413 {
3414 public:
3415 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
3416 _In_ UINT64 MessageCountLimit) = 0;
3417
3418 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
3419
3420 virtual HRESULT STDMETHODCALLTYPE GetMessage(
3421 _In_ UINT64 MessageIndex,
3422 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3423 _Inout_ SIZE_T *pMessageByteLength) = 0;
3424
3425 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
3426
3427 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
3428
3429 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
3430
3431 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
3432
3433 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
3434
3435 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
3436
3437 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
3438 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3439
3440 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
3441 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3442 _Inout_ SIZE_T *pFilterByteLength) = 0;
3443
3444 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
3445
3446 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
3447
3448 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
3449
3450 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
3451 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3452
3453 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
3454
3455 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
3456
3457 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
3458 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3459
3460 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
3461 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3462 _Inout_ SIZE_T *pFilterByteLength) = 0;
3463
3464 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
3465
3466 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
3467
3468 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
3469
3470 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
3471 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3472
3473 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
3474
3475 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
3476
3477 virtual HRESULT STDMETHODCALLTYPE AddMessage(
3478 _In_ D3D12_MESSAGE_CATEGORY Category,
3479 _In_ D3D12_MESSAGE_SEVERITY Severity,
3480 _In_ D3D12_MESSAGE_ID ID,
3481 _In_ LPCSTR pDescription) = 0;
3482
3483 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
3484 _In_ D3D12_MESSAGE_SEVERITY Severity,
3485 _In_ LPCSTR pDescription) = 0;
3486
3487 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
3488 _In_ D3D12_MESSAGE_CATEGORY Category,
3489 _In_ BOOL bEnable) = 0;
3490
3491 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
3492 _In_ D3D12_MESSAGE_SEVERITY Severity,
3493 _In_ BOOL bEnable) = 0;
3494
3495 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
3496 _In_ D3D12_MESSAGE_ID ID,
3497 _In_ BOOL bEnable) = 0;
3498
3499 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
3500 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
3501
3502 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
3503 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
3504
3505 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
3506 _In_ D3D12_MESSAGE_ID ID) = 0;
3507
3508 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
3509 _In_ BOOL bMute) = 0;
3510
3511 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
3512
3513 };
3514
3515
3516#else /* C style interface */
3517
3518 typedef struct ID3D12InfoQueueVtbl
3519 {
3520 BEGIN_INTERFACE
3521
3522 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3523 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3524 ID3D12InfoQueue * This,
3525 REFIID riid,
3526 _COM_Outptr_ void **ppvObject);
3527
3528 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3529 ULONG ( STDMETHODCALLTYPE *AddRef )(
3530 ID3D12InfoQueue * This);
3531
3532 DECLSPEC_XFGVIRT(IUnknown, Release)
3533 ULONG ( STDMETHODCALLTYPE *Release )(
3534 ID3D12InfoQueue * This);
3535
3536 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3537 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3538 ID3D12InfoQueue * This,
3539 _In_ UINT64 MessageCountLimit);
3540
3541 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3542 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3543 ID3D12InfoQueue * This);
3544
3545 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3546 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3547 ID3D12InfoQueue * This,
3548 _In_ UINT64 MessageIndex,
3549 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3550 _Inout_ SIZE_T *pMessageByteLength);
3551
3552 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3553 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3554 ID3D12InfoQueue * This);
3555
3556 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3557 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3558 ID3D12InfoQueue * This);
3559
3560 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3561 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3562 ID3D12InfoQueue * This);
3563
3564 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3565 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3566 ID3D12InfoQueue * This);
3567
3568 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3569 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3570 ID3D12InfoQueue * This);
3571
3572 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3573 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3574 ID3D12InfoQueue * This);
3575
3576 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3577 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3578 ID3D12InfoQueue * This,
3579 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3580
3581 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3582 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3583 ID3D12InfoQueue * This,
3584 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3585 _Inout_ SIZE_T *pFilterByteLength);
3586
3587 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3588 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3589 ID3D12InfoQueue * This);
3590
3591 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3592 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3593 ID3D12InfoQueue * This);
3594
3595 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3596 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3597 ID3D12InfoQueue * This);
3598
3599 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3600 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3601 ID3D12InfoQueue * This,
3602 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3603
3604 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3605 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3606 ID3D12InfoQueue * This);
3607
3608 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3609 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3610 ID3D12InfoQueue * This);
3611
3612 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3613 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3614 ID3D12InfoQueue * This,
3615 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3616
3617 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3618 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3619 ID3D12InfoQueue * This,
3620 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3621 _Inout_ SIZE_T *pFilterByteLength);
3622
3623 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3624 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3625 ID3D12InfoQueue * This);
3626
3627 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3628 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3629 ID3D12InfoQueue * This);
3630
3631 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3632 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3633 ID3D12InfoQueue * This);
3634
3635 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3636 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3637 ID3D12InfoQueue * This,
3638 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3639
3640 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3641 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3642 ID3D12InfoQueue * This);
3643
3644 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3645 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3646 ID3D12InfoQueue * This);
3647
3648 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3649 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3650 ID3D12InfoQueue * This,
3651 _In_ D3D12_MESSAGE_CATEGORY Category,
3652 _In_ D3D12_MESSAGE_SEVERITY Severity,
3653 _In_ D3D12_MESSAGE_ID ID,
3654 _In_ LPCSTR pDescription);
3655
3656 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3657 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3658 ID3D12InfoQueue * This,
3659 _In_ D3D12_MESSAGE_SEVERITY Severity,
3660 _In_ LPCSTR pDescription);
3661
3662 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3663 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3664 ID3D12InfoQueue * This,
3665 _In_ D3D12_MESSAGE_CATEGORY Category,
3666 _In_ BOOL bEnable);
3667
3668 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3669 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3670 ID3D12InfoQueue * This,
3671 _In_ D3D12_MESSAGE_SEVERITY Severity,
3672 _In_ BOOL bEnable);
3673
3674 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3675 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3676 ID3D12InfoQueue * This,
3677 _In_ D3D12_MESSAGE_ID ID,
3678 _In_ BOOL bEnable);
3679
3680 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3681 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3682 ID3D12InfoQueue * This,
3683 _In_ D3D12_MESSAGE_CATEGORY Category);
3684
3685 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3686 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3687 ID3D12InfoQueue * This,
3688 _In_ D3D12_MESSAGE_SEVERITY Severity);
3689
3690 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3691 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3692 ID3D12InfoQueue * This,
3693 _In_ D3D12_MESSAGE_ID ID);
3694
3695 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3696 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3697 ID3D12InfoQueue * This,
3698 _In_ BOOL bMute);
3699
3700 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3701 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3702 ID3D12InfoQueue * This);
3703
3704 END_INTERFACE
3705 } ID3D12InfoQueueVtbl;
3706
3707 interface ID3D12InfoQueue
3708 {
3709 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3710 };
3711
3712
3713
3714#ifdef COBJMACROS
3715
3716
3717#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3718 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3719
3720#define ID3D12InfoQueue_AddRef(This) \
3721 ( (This)->lpVtbl -> AddRef(This) )
3722
3723#define ID3D12InfoQueue_Release(This) \
3724 ( (This)->lpVtbl -> Release(This) )
3725
3726
3727#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3728 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3729
3730#define ID3D12InfoQueue_ClearStoredMessages(This) \
3731 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3732
3733#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3734 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3735
3736#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3737 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3738
3739#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3740 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3741
3742#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3743 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3744
3745#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3746 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3747
3748#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3749 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3750
3751#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3752 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3753
3754#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3755 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3756
3757#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3758 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3759
3760#define ID3D12InfoQueue_ClearStorageFilter(This) \
3761 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3762
3763#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3764 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3765
3766#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3767 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3768
3769#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3770 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3771
3772#define ID3D12InfoQueue_PopStorageFilter(This) \
3773 ( (This)->lpVtbl -> PopStorageFilter(This) )
3774
3775#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3776 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3777
3778#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3779 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3780
3781#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3782 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3783
3784#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3785 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3786
3787#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3788 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3789
3790#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3791 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3792
3793#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3794 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3795
3796#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3797 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3798
3799#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3800 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3801
3802#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3803 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3804
3805#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3806 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3807
3808#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3809 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3810
3811#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3812 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3813
3814#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3815 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3816
3817#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3818 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3819
3820#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3821 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3822
3823#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3824 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3825
3826#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3827 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3828
3829#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3830 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3831
3832#endif /* COBJMACROS */
3833
3834
3835#endif /* C style interface */
3836
3837
3838
3839
3840#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3841
3842
3843/* interface __MIDL_itf_d3d12sdklayers_0000_0019 */
3844/* [local] */
3845
3846typedef
3847enum D3D12_MESSAGE_CALLBACK_FLAGS
3848 {
3849 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3850 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3851 } D3D12_MESSAGE_CALLBACK_FLAGS;
3852
3853DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3854typedef void ( __stdcall *D3D12MessageFunc )(
3855 D3D12_MESSAGE_CATEGORY Category,
3856 D3D12_MESSAGE_SEVERITY Severity,
3857 D3D12_MESSAGE_ID ID,
3858 LPCSTR pDescription,
3859 void *pContext);
3860
3861
3862
3863extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_c_ifspec;
3864extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_s_ifspec;
3865
3866#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3867#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3868
3869/* interface ID3D12InfoQueue1 */
3870/* [unique][local][object][uuid] */
3871
3872
3873EXTERN_C const IID IID_ID3D12InfoQueue1;
3874
3875#if defined(__cplusplus) && !defined(CINTERFACE)
3876
3877 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3878 ID3D12InfoQueue1 : public ID3D12InfoQueue
3879 {
3880 public:
3881 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3882 _In_ D3D12MessageFunc CallbackFunc,
3883 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3884 _Inout_ void *pContext,
3885 _Inout_ DWORD *pCallbackCookie) = 0;
3886
3887 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3888 _In_ DWORD CallbackCookie) = 0;
3889
3890 };
3891
3892
3893#else /* C style interface */
3894
3895 typedef struct ID3D12InfoQueue1Vtbl
3896 {
3897 BEGIN_INTERFACE
3898
3899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3901 ID3D12InfoQueue1 * This,
3902 REFIID riid,
3903 _COM_Outptr_ void **ppvObject);
3904
3905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3906 ULONG ( STDMETHODCALLTYPE *AddRef )(
3907 ID3D12InfoQueue1 * This);
3908
3909 DECLSPEC_XFGVIRT(IUnknown, Release)
3910 ULONG ( STDMETHODCALLTYPE *Release )(
3911 ID3D12InfoQueue1 * This);
3912
3913 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3914 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3915 ID3D12InfoQueue1 * This,
3916 _In_ UINT64 MessageCountLimit);
3917
3918 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3919 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3920 ID3D12InfoQueue1 * This);
3921
3922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3923 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3924 ID3D12InfoQueue1 * This,
3925 _In_ UINT64 MessageIndex,
3926 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3927 _Inout_ SIZE_T *pMessageByteLength);
3928
3929 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3930 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3931 ID3D12InfoQueue1 * This);
3932
3933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3935 ID3D12InfoQueue1 * This);
3936
3937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3938 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3939 ID3D12InfoQueue1 * This);
3940
3941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3943 ID3D12InfoQueue1 * This);
3944
3945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3946 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3947 ID3D12InfoQueue1 * This);
3948
3949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3950 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3951 ID3D12InfoQueue1 * This);
3952
3953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3954 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3955 ID3D12InfoQueue1 * This,
3956 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3957
3958 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3959 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3960 ID3D12InfoQueue1 * This,
3961 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3962 _Inout_ SIZE_T *pFilterByteLength);
3963
3964 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3965 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3966 ID3D12InfoQueue1 * This);
3967
3968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3969 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3970 ID3D12InfoQueue1 * This);
3971
3972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3973 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3974 ID3D12InfoQueue1 * This);
3975
3976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3977 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3978 ID3D12InfoQueue1 * This,
3979 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3980
3981 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3982 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3983 ID3D12InfoQueue1 * This);
3984
3985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3986 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3987 ID3D12InfoQueue1 * This);
3988
3989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3990 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3991 ID3D12InfoQueue1 * This,
3992 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3993
3994 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3995 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3996 ID3D12InfoQueue1 * This,
3997 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3998 _Inout_ SIZE_T *pFilterByteLength);
3999
4000 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
4001 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
4002 ID3D12InfoQueue1 * This);
4003
4004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
4005 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
4006 ID3D12InfoQueue1 * This);
4007
4008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
4009 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
4010 ID3D12InfoQueue1 * This);
4011
4012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
4013 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
4014 ID3D12InfoQueue1 * This,
4015 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
4016
4017 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
4018 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
4019 ID3D12InfoQueue1 * This);
4020
4021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
4022 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
4023 ID3D12InfoQueue1 * This);
4024
4025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
4026 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
4027 ID3D12InfoQueue1 * This,
4028 _In_ D3D12_MESSAGE_CATEGORY Category,
4029 _In_ D3D12_MESSAGE_SEVERITY Severity,
4030 _In_ D3D12_MESSAGE_ID ID,
4031 _In_ LPCSTR pDescription);
4032
4033 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
4034 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
4035 ID3D12InfoQueue1 * This,
4036 _In_ D3D12_MESSAGE_SEVERITY Severity,
4037 _In_ LPCSTR pDescription);
4038
4039 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
4040 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
4041 ID3D12InfoQueue1 * This,
4042 _In_ D3D12_MESSAGE_CATEGORY Category,
4043 _In_ BOOL bEnable);
4044
4045 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
4046 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
4047 ID3D12InfoQueue1 * This,
4048 _In_ D3D12_MESSAGE_SEVERITY Severity,
4049 _In_ BOOL bEnable);
4050
4051 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
4052 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
4053 ID3D12InfoQueue1 * This,
4054 _In_ D3D12_MESSAGE_ID ID,
4055 _In_ BOOL bEnable);
4056
4057 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
4058 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
4059 ID3D12InfoQueue1 * This,
4060 _In_ D3D12_MESSAGE_CATEGORY Category);
4061
4062 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
4063 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
4064 ID3D12InfoQueue1 * This,
4065 _In_ D3D12_MESSAGE_SEVERITY Severity);
4066
4067 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
4068 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
4069 ID3D12InfoQueue1 * This,
4070 _In_ D3D12_MESSAGE_ID ID);
4071
4072 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
4073 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
4074 ID3D12InfoQueue1 * This,
4075 _In_ BOOL bMute);
4076
4077 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
4078 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
4079 ID3D12InfoQueue1 * This);
4080
4081 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
4082 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
4083 ID3D12InfoQueue1 * This,
4084 _In_ D3D12MessageFunc CallbackFunc,
4085 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
4086 _Inout_ void *pContext,
4087 _Inout_ DWORD *pCallbackCookie);
4088
4089 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
4090 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
4091 ID3D12InfoQueue1 * This,
4092 _In_ DWORD CallbackCookie);
4093
4094 END_INTERFACE
4095 } ID3D12InfoQueue1Vtbl;
4096
4097 interface ID3D12InfoQueue1
4098 {
4099 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
4100 };
4101
4102
4103
4104#ifdef COBJMACROS
4105
4106
4107#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
4108 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4109
4110#define ID3D12InfoQueue1_AddRef(This) \
4111 ( (This)->lpVtbl -> AddRef(This) )
4112
4113#define ID3D12InfoQueue1_Release(This) \
4114 ( (This)->lpVtbl -> Release(This) )
4115
4116
4117#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
4118 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
4119
4120#define ID3D12InfoQueue1_ClearStoredMessages(This) \
4121 ( (This)->lpVtbl -> ClearStoredMessages(This) )
4122
4123#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
4124 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
4125
4126#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
4127 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
4128
4129#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
4130 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
4131
4132#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
4133 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
4134
4135#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
4136 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
4137
4138#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
4139 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
4140
4141#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
4142 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
4143
4144#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
4145 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
4146
4147#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
4148 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
4149
4150#define ID3D12InfoQueue1_ClearStorageFilter(This) \
4151 ( (This)->lpVtbl -> ClearStorageFilter(This) )
4152
4153#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
4154 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
4155
4156#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
4157 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
4158
4159#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
4160 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
4161
4162#define ID3D12InfoQueue1_PopStorageFilter(This) \
4163 ( (This)->lpVtbl -> PopStorageFilter(This) )
4164
4165#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
4166 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
4167
4168#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
4169 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
4170
4171#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
4172 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
4173
4174#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
4175 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
4176
4177#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
4178 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
4179
4180#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
4181 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
4182
4183#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
4184 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
4185
4186#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
4187 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
4188
4189#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
4190 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
4191
4192#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
4193 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
4194
4195#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
4196 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
4197
4198#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
4199 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
4200
4201#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
4202 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
4203
4204#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
4205 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
4206
4207#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
4208 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
4209
4210#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
4211 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
4212
4213#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
4214 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
4215
4216#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
4217 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
4218
4219#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
4220 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
4221
4222
4223#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
4224 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
4225
4226#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
4227 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
4228
4229#endif /* COBJMACROS */
4230
4231
4232#endif /* C style interface */
4233
4234
4235
4236
4237#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
4238
4239
4240/* interface __MIDL_itf_d3d12sdklayers_0000_0020 */
4241/* [local] */
4242
4243#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
4244#pragma endregion
4245DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
4246DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
4247DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
4248DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
4249DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
4250DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
4251DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);
4252DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
4253DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
4254DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
4255DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
4256DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);
4257DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
4258DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
4259DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
4260DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);
4261DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
4262DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);
4263DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
4264DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
4265
4266
4267extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_c_ifspec;
4268extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_s_ifspec;
4269
4270/* Additional Prototypes for ALL interfaces */
4271
4272/* end of Additional Prototypes */
4273
4274#ifdef __cplusplus
4275}
4276#endif
4277
4278#endif
4279
4280
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl
new file mode 100644
index 0000000..082565d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl
@@ -0,0 +1,1860 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
79interface ID3D12Debug6
80 : ID3D12Debug5
81{
82 void SetForceLegacyBarrierValidation(BOOL Enable);
83}
84
85cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
86
87typedef enum D3D12_RLDO_FLAGS
88{
89 D3D12_RLDO_NONE = 0x0,
90 D3D12_RLDO_SUMMARY = 0x1,
91 D3D12_RLDO_DETAIL = 0x2,
92 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
93
94} D3D12_RLDO_FLAGS;
95
96cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
97
98typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
99{
100 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
101 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
102 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
103 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE
104} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
105
106typedef enum D3D12_DEBUG_FEATURE
107{
108 D3D12_DEBUG_FEATURE_NONE = 0x00,
109 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
110 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
111 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
112 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
113} D3D12_DEBUG_FEATURE;
114
115cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
116
117typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
118{
119 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
120 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
121 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
122 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
123 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
124} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
125
126typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
127{
128 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
129 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
130 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
131 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
132 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
133} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
134
135cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
136
137typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
138{
139 UINT MaxMessagesPerCommandList;
140 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
141 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
142} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
143
144typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
145{
146 FLOAT SlowdownFactor;
147} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
148
149typedef enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
150{
151 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED,
152 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED,
153 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE,
154 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT =
155 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
156} D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
157
158[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
159interface ID3D12DebugDevice1
160 : IUnknown
161{
162 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
163 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
164 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
165}
166
167[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
168interface ID3D12DebugDevice
169 : IUnknown
170{
171 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
172 D3D12_DEBUG_FEATURE GetFeatureMask();
173 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
174}
175
176[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
177interface ID3D12DebugDevice2
178 : ID3D12DebugDevice
179{
180 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
181 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
182}
183
184cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
185
186
187[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
188interface ID3D12DebugCommandQueue
189 : IUnknown
190{
191 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
192// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
193};
194
195[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
196interface ID3D12DebugCommandQueue1
197 : ID3D12DebugCommandQueue
198{
199 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
200 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
201};
202
203typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
204{
205 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
206} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
207
208typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
209{
210 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
211} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
212
213[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
214interface ID3D12DebugCommandList1
215 : IUnknown
216{
217 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
218 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
219 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
220};
221
222[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
223interface ID3D12DebugCommandList
224 : IUnknown
225{
226 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
227 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
228 D3D12_DEBUG_FEATURE GetFeatureMask();
229};
230
231[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
232interface ID3D12DebugCommandList2
233 : ID3D12DebugCommandList
234{
235 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
236 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
237};
238
239[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
240interface ID3D12DebugCommandList3
241 : ID3D12DebugCommandList2
242{
243 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
244 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
245};
246
247[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
248interface ID3D12SharingContract
249 : IUnknown
250{
251 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
252 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
253 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
254 void EndCapturableWork([annotation("_In_")] REFGUID guid);
255};
256
257[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
258interface ID3D12ManualWriteTrackingResource
259 : IUnknown
260{
261 void TrackWrite(
262 UINT Subresource,
263 [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
264};
265
266
267//==================================================================================================================================
268//
269// Info Queue
270//
271//==================================================================================================================================
272typedef enum D3D12_MESSAGE_CATEGORY {
273 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
274 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
275 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
276 D3D12_MESSAGE_CATEGORY_CLEANUP,
277 D3D12_MESSAGE_CATEGORY_COMPILATION,
278 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
279 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
280 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
281 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
282 D3D12_MESSAGE_CATEGORY_EXECUTION,
283 D3D12_MESSAGE_CATEGORY_SHADER,
284} D3D12_MESSAGE_CATEGORY;
285
286typedef enum D3D12_MESSAGE_SEVERITY {
287 D3D12_MESSAGE_SEVERITY_CORRUPTION,
288 D3D12_MESSAGE_SEVERITY_ERROR,
289 D3D12_MESSAGE_SEVERITY_WARNING,
290 D3D12_MESSAGE_SEVERITY_INFO,
291 D3D12_MESSAGE_SEVERITY_MESSAGE
292} D3D12_MESSAGE_SEVERITY;
293
294// Unique ID for every error
295// CAUTION: New enum values should be appended to the list only. Inserting
296// new enum values into the middle of the list results in changing the numeric
297// values of some ID's from one SDK release to the next. This in-turn breaks
298// PIX and customer tools/filters.
299typedef enum D3D12_MESSAGE_ID {
300 D3D12_MESSAGE_ID_UNKNOWN = 0,
301
302 //--------------------------------------------------------------------------
303 // Messages Used by Core
304 // Message IDs generated from core are at the beginning
305 // since the core changes less frequently than the debug layer.
306
307 // End of Messages used by Core
308 // ------------------------------------------------------------------------
309 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
310 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
311 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
312 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
313 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
314 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
315 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
316 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
317 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
318 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
319 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
320 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
321 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
322 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
323 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
324 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
325 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
326 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
327 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
328
329 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
330 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
331 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
332 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
333
334 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
335 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
336 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
337 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
338 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
339 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
340 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
341
342 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
343 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
344 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
345 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
346 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
347 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
348 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
349 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
350
351 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
352 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
353 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
354 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
355 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
356
357 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
358 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
359 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
360 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
361 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
362 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
363 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
364 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
365 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
366 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
367 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
368 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
369 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
370 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
371
372 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
373 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
374 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
375
376 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
377 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
378 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
379
380 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
381 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
382 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
383 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
384 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
385 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
386 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
387 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
388 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
389 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
390 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
391 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
392 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
393 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
394 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
395 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
396 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
397 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
398
399 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
400 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
401 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
402
403 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
404 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
405 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
406 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
407
408 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
409 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
410 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
411 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
418
419 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
420 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
421 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
422 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
423 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
424 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
425 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
426
427 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
428 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
429 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
430
431 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
432
433 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
434 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
435 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
436 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
437 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
438 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
439 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
440 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
441 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
442 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
443 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
444 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
445 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
446 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
447
448 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
450 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
451
452 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
453
454 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
455 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
456 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
457
458 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
459 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
460 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
461 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
462 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
463
464 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
465 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
466 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
467 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
468
469 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
470 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
471 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
472 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
473
474 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
475 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
476 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
477 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
478
479 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
480
481 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
482
483 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
484 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
485 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
486
487 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
488 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
489 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
490 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
491 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
492 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
493 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
494
495 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
496 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
497 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
498 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
499 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
500 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
501 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
502 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
503
504 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
505
506 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
507
508 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
509 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
510 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
511 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
512 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
513 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
514 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
515
516 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
517 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
518 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
519 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
520 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
521 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
522 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
523
524 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
525 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
526
527 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
528 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
529
530 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
531 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
532
533 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
534 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
535 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
536 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
537 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
538 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
539 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
540 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
541 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
542 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
543 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
544 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
545 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
546 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
547 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
548 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
549 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
550 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
551 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
552 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
553 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
554 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
555 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
556 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
557 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
558 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
559 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
560 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
561 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
562 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
563 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
564
565 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
566 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
567 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
568 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
569 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
570 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
571 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
572 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
573 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
574 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
575 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
576 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
577
578 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
579 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
580 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
581 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
582 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
583 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
584 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
585 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
586 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
587 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
588 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
589 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
590
591 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
592 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
593 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
594 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
595 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
596 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
597 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
598 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
599 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
600 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
601 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
602 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
603
604 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
605 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
606 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
607 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
608 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
609 // This was shipped, but is no longer used. Do not reuse.
610 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
611 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
612 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
613 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
614 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
615 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
616 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
617 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
618 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
619 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
620 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
621 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
622 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
623 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
624 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
625 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
626 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
627 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
628 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
629 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
630 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
631 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
632 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
633 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
634 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
635 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
636 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
637 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
638 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
639 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
640 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
641 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
642 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
643 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
644 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
645 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
646 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
647 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
648 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
649 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
650 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
651 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
652 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
653 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
654 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
655 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
656 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
657 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
658 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
659 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
660 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
661 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
662 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
665 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
666 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
668 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
671 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
673 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
674 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
675 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
688 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
689 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
690 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
691 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
692 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
693 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
694 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
695 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
696 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
697 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
698 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
699 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
700 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
701 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
702 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
703 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
704 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
705 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
706 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
707 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
708 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
709 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
710 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
711 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
712 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
713 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
714 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
715 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
716 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
717 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
718 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
719 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
720 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
721 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
722 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
723 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
724 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
725 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
726 // This was shipped, but is no longer used. Do not reuse.
727 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
728 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
729 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
730 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
731 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
732 // Note: These are the same as the above two, with the original (incorrect) name
733 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
734 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
735 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
736 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
737 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
738 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
739 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
740
741 // These values shipped, but are no longer used. Do not reuse.
742 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
743 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
744 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
745 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
746 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
747 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
748 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
749 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
750 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
751 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
752 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
753 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
754 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
755 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
756 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
757 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
758 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
759 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
760 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
761 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
762 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
763 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
764 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
765 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
766 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
767 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
768 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
769 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
770 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
771 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
772 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
773 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
774 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
775 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
776 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
777 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
778 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
779 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
780 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
781 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
782 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
783 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
784 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
785 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
786 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
787 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
788 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
789 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
804
805 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
806 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
807 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
808 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
809
810 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
811 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
812 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
813
814 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
815 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
816 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
817 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
818 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
819 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
820 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
821 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
822 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
823 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
824 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
825 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
826 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
827 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
828 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
829
830 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
831 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
832
833 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
834 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
835 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
836 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
837 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
838 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
839 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
840 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
841 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
842 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
843
844 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
845 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
846 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
847 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
848 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
849 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
850 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
851 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
852 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
854
855 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
856 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
857
858 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
859
860 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
861
862 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
863
864 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
865
866 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
867 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
868 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
869 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
870
871 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
872 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
873
874 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
875
876 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
877 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
884
885 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
886 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
887 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
888 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
889
890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
894
895 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
897 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
898
899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
900
901 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
902
903 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
904
905 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
906
907 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
908
909 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
910
911 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
912
913 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
914
915 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
916 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
917 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
918 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
919 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
920 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
921 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
922
923 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
924 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
925 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
926 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
927 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
928
929 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
930
931 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
932
933 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
934 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
935 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
936 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
937 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
938 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
939 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
940 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
941 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
942 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
943 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
944 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
945 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
946
947 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
948
949 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
950
951 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
952 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
953 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
954 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
955
956 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
957 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
958 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
959
960 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
961
962 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
963
964 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
965
966 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
967 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
968 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
969 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
970
971 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
972 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
973
974 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
975
976 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
977 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
978 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
979
980 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
981 D3D12_MESSAGE_ID_END_EVENT = 1015,
982
983 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
984
985 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
986
987 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
988 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
989 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
990 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
991 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
992
993 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
994
995 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
996 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
997
998 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
999 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
1000 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
1001 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
1002 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
1003 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
1004 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
1005 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
1006 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
1007 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
1008 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
1009 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
1010 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
1011 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
1012 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
1013
1014 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
1015
1016 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
1017
1018 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
1019
1020 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
1021
1022 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
1023
1024 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
1025
1026 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
1027
1028 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
1029
1030 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
1031
1032 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
1033
1034 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
1035 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
1036 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
1037 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
1038 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
1039 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
1040 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
1041 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
1042 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
1043 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
1044 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1045 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1046 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1047 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1048 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1049
1050 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1051
1052 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1053
1054 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1055 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1056 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1057 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1058 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1059 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1060 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1061 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1062 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1063 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1064
1065 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1066
1067 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1068
1069 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1070 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1071 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1072
1073 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1074 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1075 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1076
1077 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1078 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1079 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1080 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1081
1082 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1083 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1084 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1085 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1086
1087 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1088 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1089 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1090
1091 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1092 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1093
1094 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1095 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1096 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1097 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1098
1099 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1100 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1101 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1102
1103 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1104
1105 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1106 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1107 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1108
1109 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1110
1111 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1112 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1113
1114 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1115
1116 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1117
1118 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1119 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1120 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1121 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1123 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1124 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1125
1126 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1127 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1128 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1129 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1130
1131 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1132
1133 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1134 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1135
1136 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1137 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1138 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1139
1140 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1141 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1142 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1143 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1144
1145 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1146
1147 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1148 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1149 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1150 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1151 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1152 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1153 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1154 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1155 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1156 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1157 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1158 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1159 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1160 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1161 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1162 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1163
1164 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1165 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1166
1167 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1168
1169 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1170
1171 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1172
1173 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1174 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1175 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1176 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1177 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1178
1179 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1180 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1181 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1182 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1183
1184 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1185 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1186 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1187
1188 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1189
1190 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1191 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1192 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1193 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1194 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1195 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1196
1197 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1198 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1199 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1200
1201 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1202 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1203 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1204
1205 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1206 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1207 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1208
1209 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1210 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1211 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1212
1213 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1214 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1215 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1216 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1217 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1218 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1219 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1220 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1221 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1222 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1223 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1224 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1225 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1226
1227 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1228 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1229 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1230 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1231 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1232 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1233 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1234 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1235 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1236
1237 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1238 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1239
1240 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1241 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1242
1243 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1244
1245 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1246 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1247
1248 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1249 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1250 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1251 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1252
1253 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1254 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1255 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1256
1257 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1258 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1259 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1260 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1261 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1262
1263 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1264
1265 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1266 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1267 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1268 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1269 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1270 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1271 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1272 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1273 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1274 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1275 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1276 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1277
1278 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1279
1280 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1281 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1282
1283 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1284
1285 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1286
1287 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1288 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1289 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1290 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1291 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1292 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1293
1294 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1295
1296
1297 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1298 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1299 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1300 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1301 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1302 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1303 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1304 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1305 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1306 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1307
1308 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1309 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1310 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1311
1312 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1313 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1314 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1315
1316 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1317
1318 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1319 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1320
1321 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1322 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1323 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1324
1325 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1326
1327 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1328 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1329
1330 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1331 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1332 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1333
1334 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1335 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1336 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1337
1338 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1339 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1340 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1341 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1342
1343 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1344 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1345 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1346 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1347 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1348 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1349
1350 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1351 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1352 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1353 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1354 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1355 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1356 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1357
1358 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1359 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1360 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1361 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1362 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1363 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1364 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1365 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1366 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1367 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1368 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1369 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1370 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1371 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1372 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1373 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1374 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1375 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1376 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1377 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1378 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1379 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1380 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1381 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1382 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1383 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
1384 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
1385 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
1386
1387 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
1388 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
1389 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
1390 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
1391 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
1392 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
1393 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
1394
1395 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
1396
1397 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
1398
1399 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
1400
1401 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
1402
1403 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
1404
1405 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
1406
1407 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
1408
1409 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
1410
1411 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
1412
1413 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
1414
1415 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
1416 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
1417
1418 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
1419
1420 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
1421 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
1422
1423 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
1424
1425 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
1426
1427 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
1428
1429 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
1430
1431 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
1432 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
1433
1434 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
1435
1436 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
1437 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
1438 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
1439 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
1440
1441 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
1442 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
1443 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
1444 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
1445
1446 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
1447
1448 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
1449
1450 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
1451 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
1452 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
1453 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
1454 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
1455 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
1456
1457 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
1458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
1459
1460 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
1461 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
1462
1463 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
1464
1465 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
1466 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
1467
1468 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
1469 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
1470
1471 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
1472
1473 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
1474
1475 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
1476 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
1477 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
1478 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
1479 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
1480 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
1481 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
1482 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
1483 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
1484 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
1485 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
1486 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
1487 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
1488 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
1489 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
1490 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
1491 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
1492 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
1493 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
1494 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
1495 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
1496 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
1497 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
1498 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
1499 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
1500 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
1501 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
1502 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
1503 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
1504 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
1505 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
1506 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
1507 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
1508 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
1509 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
1510 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
1511 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
1512 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
1513 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
1514 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442, // This must be the last entry in the enum.
1515} D3D12_MESSAGE_ID;
1516
1517typedef struct D3D12_MESSAGE
1518{
1519 D3D12_MESSAGE_CATEGORY Category;
1520 D3D12_MESSAGE_SEVERITY Severity;
1521 D3D12_MESSAGE_ID ID;
1522 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1523 SIZE_T DescriptionByteLength;
1524} D3D12_MESSAGE;
1525
1526typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1527{
1528 UINT NumCategories;
1529 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1530 UINT NumSeverities;
1531 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1532 UINT NumIDs;
1533 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1534} D3D12_INFO_QUEUE_FILTER_DESC;
1535
1536// To use, memset to 0, then fill in what you need.
1537typedef struct D3D12_INFO_QUEUE_FILTER
1538{
1539 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1540 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1541} D3D12_INFO_QUEUE_FILTER;
1542
1543//=============================================================================
1544// ID3D12InfoQueue
1545//
1546// Logs D3D12 Messages.
1547// This interface can be queried from ID3D12Device, as long as the device
1548// was created with the debug layer.
1549//
1550//
1551cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1552[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1553interface ID3D12InfoQueue
1554 : IUnknown
1555{
1556 //=========================================================================
1557 // Methods for configuring how much data is stored in the queue.
1558
1559 // SetMessageCountLimit()
1560 // This sets how many messages are stored. When the queue is full,
1561 // new messages coming in push old messages out.
1562 // Passing -1 to SetMessageCountLimit means the queue has
1563 // unlimited size (go until out of memory or ClearStoredMessages()).
1564 // The default message count size is
1565 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1566 // Returns S_OK or E_INVALIDARG.
1567 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1568
1569 // ClearStoredMessages
1570 void ClearStoredMessages();
1571
1572 //=========================================================================
1573 // Methods for retrieving data or statistics from the queue.
1574
1575 // GetMessage()
1576 // Retrieves messages, one at a time, from the queue which pass any
1577 // retrieval filter currently defined. If there is no retrieval filter,
1578 // all messages can be retrieved.
1579 // The MessageIndex parameter is a 0 based index into the results passing
1580 // the filter. The number of results is returned by
1581 // GetNumStoredMessagesAllowedByRetrievalFilter().
1582 //
1583 // Note this does not remove the message from the queue.
1584 //
1585 // pMessageByteLength inputs the size of the buffer passed in via
1586 // pMessage, and outputs the size of the message. pMessage can be NULL
1587 // when the size of the required buffer is being queried (return S_FALSE).
1588 //
1589 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1590 // it includes extra memory after the D3D12_MESSAGE for storing the string
1591 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1592 // applications should check the size needed for pMessage as described above.
1593 //
1594 // Watch out for thread safety when making consecutive calls first to
1595 // determine the buffer size required and then to pass in the buffer and
1596 // retrieve the message, and also between calling
1597 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1598 // the results via GetMessagE().
1599 //
1600 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1601 HRESULT GetMessage(
1602 [annotation("_In_")] UINT64 MessageIndex,
1603 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1604 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1605
1606 // GetNumMessagesAllowedByStorageFilter()
1607 // Returns how many messages sent to the queue passed
1608 // whatever storage filter was active upon receipt of
1609 // the message.
1610 // This can be a larger value than the message count limit,
1611 // returned by GetMessageCountLimit(), since old messages are discarded
1612 // when the queue is full to prevent overflow.
1613 UINT64 GetNumMessagesAllowedByStorageFilter();
1614
1615 // GetNumMessagesDeniedByStorageFilter()
1616 UINT64 GetNumMessagesDeniedByStorageFilter();
1617
1618 // GetNumStoredMessages()
1619 // Returns how many messages are currently stored in the queue.
1620 UINT64 GetNumStoredMessages();
1621
1622 // GetNumStoredMessagesAllowedByRetrievalFilter()
1623 // Returns how many messages that are currently in the queue
1624 // pass any retrieval filter that is currently set.
1625 // The MessageIndex parameter to GetMessage() indexes
1626 // an array of this many results.
1627 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1628
1629 // GetNumMessagesDiscardedByMessageCountLimit()
1630 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1631
1632 // GetMessageCountLimit
1633 // This is how many messages can be stored in the queue.
1634 // When the queue is full, new messages coming in push old messages out.
1635 // -1 means there is no limit.
1636 UINT64 GetMessageCountLimit();
1637
1638 //=========================================================================
1639 // Methods for filtering what gets stored in the queue
1640
1641 // AddStorageFilterEntries()
1642 // Adds to the existing entries at top of stack
1643 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1644 HRESULT AddStorageFilterEntries(
1645 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1646
1647 // GetStorageFilter()
1648 // Gets all entries at top of stack.
1649 // The application must allocate the output buffer. The size required can be
1650 // queried by passing null for pFilter and looking at the returned
1651 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1652 // pointers - these will point to locations within the same
1653 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1654 // data. So the application needs to only allocate/free the memory for pFilter.
1655 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1656 HRESULT GetStorageFilter(
1657 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1658 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1659
1660 // ClearStorageFilter()
1661 // Clears filter at the top of the stack (if there is one)
1662 void ClearStorageFilter();
1663
1664 // PushEmptyStorageFilter()
1665 // Push an empty storage filter on the stack to allow local filtering changes.
1666 // For convenience, this is automatically called by SetStorageFilter()
1667 // if the stack is empty. Thus if the stack is not needed, filters can be
1668 // defined without ever bothering to push or pop.
1669 // Returns S_OK or E_OUTOFMEMORY
1670 HRESULT PushEmptyStorageFilter();
1671
1672 // PushCopyOfStorageFilter()
1673 // Push a copy of the current filter so that local modifications can be made
1674 // starting from what currently exists.
1675 // Returns S_OK or E_OUTOFMEMORY
1676 HRESULT PushCopyOfStorageFilter();
1677
1678 // PushStorageFilter()
1679 // Push a filter passed as a parameter onto the stack. This is
1680 // just a helper for calling PushEmptyStorageFilter() followed
1681 // by AddStorageFilterEntries()
1682 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1683 HRESULT PushStorageFilter(
1684 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1685
1686 // PopStorageFilter()
1687 // Pop the current storage filter off the stack (if there is one)
1688 void PopStorageFilter();
1689
1690 // GetStorageFilterStackSize()
1691 UINT GetStorageFilterStackSize();
1692
1693 //=========================================================================
1694 // Methods for filtering what gets read out of the queue by GetMessage().
1695
1696 // AddRetrievalFilterEntries()
1697 // Adds to the existing entries at top of stack
1698 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1699 HRESULT AddRetrievalFilterEntries(
1700 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1701
1702 // GetRetrievalFilter()
1703 // Gets all entries at top of stack.
1704 // The application must allocate the output buffer. The size required can be
1705 // queried by passing null for pFilter and looking at the returned
1706 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1707 // pointers - these will point to locations within the same
1708 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1709 // data. So the application needs to only allocate/free the memory for pFilter.
1710 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1711 HRESULT GetRetrievalFilter(
1712 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1713 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1714
1715 // ClearRetrievalFilter()
1716 // Clears filter at the top of the stack (if there is one)
1717 void ClearRetrievalFilter();
1718
1719 // PushEmptyRetrievalFilter()
1720 // Push an empty storage filter on the stack to allow local filtering changes.
1721 // For convenience, this is automatically called by SetRetrievalFilter()
1722 // if the stack is empty. Thus if the stack is not needed, filters can be
1723 // defined without ever bothering to push or pop.
1724 // Returns S_OK or E_OUTOFMEMORY
1725 HRESULT PushEmptyRetrievalFilter();
1726
1727 // PushCopyOfRetrievalFilter()
1728 // Push a copy of the current filter so that local modifications can be made
1729 // starting from what currently exists.
1730 // Returns S_OK or E_OUTOFMEMORY
1731 HRESULT PushCopyOfRetrievalFilter();
1732
1733 // PushRetrievalFilter()
1734 // Push a filter passed as a parameter onto the stack. This is
1735 // just a helper for calling PushEmptyRetrievalFilter() followed
1736 // by AddRetrievalFilterEntries()
1737 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1738 HRESULT PushRetrievalFilter(
1739 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1740
1741 // PopRetrievalFilter()
1742 // Pop the current storage filter off the stack (if there is one)
1743 void PopRetrievalFilter();
1744
1745 // GetRetrievalFilterStackSize()
1746 UINT GetRetrievalFilterStackSize();
1747
1748 //=========================================================================
1749 // Methods for adding entries to the queue.
1750
1751 // AddMessage()
1752 // This is used by D3D12 components to log messages. Nothing stops
1753 // applications from calling this, but it isn’t particularly useful.
1754 // If an application wishes to insert custom strings into the queue,
1755 // AddApplicationMessage() below is suggested. See below.
1756 //
1757 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1758 HRESULT AddMessage(
1759 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1760 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1761 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1762 [annotation("_In_")] LPCSTR pDescription);
1763
1764 // AddApplicationMessage()
1765 // This is a convenience for applications that want
1766 // to insert strings of their own into the queue, perhaps to log issues
1767 // of its own, or to mark out points in time in the queue. This
1768 // has the same effect as calling AddMessage() above with the
1769 // following settings:
1770 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1771 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1772 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1773 // pDescription = <application provided string>
1774 //
1775 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1776 HRESULT AddApplicationMessage(
1777 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1778 [annotation("_In_")] LPCSTR pDescription);
1779
1780 //=========================================================================
1781 // Methods for breaking on errors that pass the storage filter.
1782 HRESULT SetBreakOnCategory(
1783 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1784 [annotation("_In_")] BOOL bEnable);
1785 HRESULT SetBreakOnSeverity(
1786 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1787 [annotation("_In_")] BOOL bEnable);
1788 HRESULT SetBreakOnID(
1789 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1790 [annotation("_In_")] BOOL bEnable);
1791
1792 BOOL GetBreakOnCategory(
1793 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1794 BOOL GetBreakOnSeverity(
1795 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1796 BOOL GetBreakOnID(
1797 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1798
1799 //=========================================================================
1800 // Methods for globally muting debug spte from the InfoQueue
1801 void SetMuteDebugOutput(
1802 [annotation("_In_")] BOOL bMute);
1803 BOOL GetMuteDebugOutput();
1804};
1805
1806typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1807{
1808 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1809 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1810
1811} D3D12_MESSAGE_CALLBACK_FLAGS;
1812
1813cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1814
1815typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1816 D3D12_MESSAGE_SEVERITY Severity,
1817 D3D12_MESSAGE_ID ID,
1818 LPCSTR pDescription,
1819 void* pContext);
1820
1821[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1822interface ID3D12InfoQueue1
1823 : ID3D12InfoQueue
1824{
1825 HRESULT RegisterMessageCallback(
1826 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1827 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1828 [annotation("_Inout_")] void* pContext,
1829 [annotation("_Inout_")] DWORD *pCallbackCookie);
1830
1831 HRESULT UnregisterMessageCallback(
1832 [annotation("_In_")] DWORD CallbackCookie);
1833};
1834
1835
1836
1837cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1838#pragma endregion
1839
1840
1841cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1842cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1843cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1844cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1845cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1846cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1847cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
1848cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1849cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1850cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1851cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1852cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
1853cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1854cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1855cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1856cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
1857cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1858cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
1859cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1860cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h
new file mode 100644
index 0000000..56455b5
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h
@@ -0,0 +1,495 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 // D3D12 Shaders
28 D3D12_SHVER_LIBRARY = 6,
29
30 D3D12_SHVER_RAY_GENERATION_SHADER = 7,
31 D3D12_SHVER_INTERSECTION_SHADER = 8,
32 D3D12_SHVER_ANY_HIT_SHADER = 9,
33 D3D12_SHVER_CLOSEST_HIT_SHADER = 10,
34 D3D12_SHVER_MISS_SHADER = 11,
35 D3D12_SHVER_CALLABLE_SHADER = 12,
36
37 D3D12_SHVER_MESH_SHADER = 13,
38 D3D12_SHVER_AMPLIFICATION_SHADER = 14,
39
40 D3D12_SHVER_NODE_SHADER = 15,
41
42 D3D12_SHVER_RESERVED0 = 0xFFF0,
43} D3D12_SHADER_VERSION_TYPE;
44
45#define D3D12_SHVER_GET_TYPE(_Version) \
46 (((_Version) >> 16) & 0xffff)
47#define D3D12_SHVER_GET_MAJOR(_Version) \
48 (((_Version) >> 4) & 0xf)
49#define D3D12_SHVER_GET_MINOR(_Version) \
50 (((_Version) >> 0) & 0xf)
51
52// Slot ID for library function return
53#define D3D_RETURN_PARAMETER_INDEX (-1)
54
55typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
56
57typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
58
59
60typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
61{
62 LPCSTR SemanticName; // Name of the semantic
63 UINT SemanticIndex; // Index of the semantic
64 UINT Register; // Number of member variables
65 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
66 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
67 BYTE Mask; // Mask to indicate which components of the register
68 // are used (combination of D3D10_COMPONENT_MASK values)
69 BYTE ReadWriteMask; // Mask to indicate whether a given component is
70 // never written (if this is an output signature) or
71 // always read (if this is an input signature).
72 // (combination of D3D_MASK_* values)
73 UINT Stream; // Stream index
74 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
75} D3D12_SIGNATURE_PARAMETER_DESC;
76
77typedef struct _D3D12_SHADER_BUFFER_DESC
78{
79 LPCSTR Name; // Name of the constant buffer
80 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
81 UINT Variables; // Number of member variables
82 UINT Size; // Size of CB (in bytes)
83 UINT uFlags; // Buffer description flags
84} D3D12_SHADER_BUFFER_DESC;
85
86typedef struct _D3D12_SHADER_VARIABLE_DESC
87{
88 LPCSTR Name; // Name of the variable
89 UINT StartOffset; // Offset in constant buffer's backing store
90 UINT Size; // Size of variable (in bytes)
91 UINT uFlags; // Variable flags
92 LPVOID DefaultValue; // Raw pointer to default value
93 UINT StartTexture; // First texture index (or -1 if no textures used)
94 UINT TextureSize; // Number of texture slots possibly used.
95 UINT StartSampler; // First sampler index (or -1 if no textures used)
96 UINT SamplerSize; // Number of sampler slots possibly used.
97} D3D12_SHADER_VARIABLE_DESC;
98
99typedef struct _D3D12_SHADER_TYPE_DESC
100{
101 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
102 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
103 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
104 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
105 UINT Elements; // Number of elements (0 if not an array)
106 UINT Members; // Number of members (0 if not a structure)
107 UINT Offset; // Offset from the start of structure (0 if not a structure member)
108 LPCSTR Name; // Name of type, can be NULL
109} D3D12_SHADER_TYPE_DESC;
110
111typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
112
113typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
114
115typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
116
117typedef struct _D3D12_SHADER_DESC
118{
119 UINT Version; // Shader version
120 LPCSTR Creator; // Creator string
121 UINT Flags; // Shader compilation/parse flags
122
123 UINT ConstantBuffers; // Number of constant buffers
124 UINT BoundResources; // Number of bound resources
125 UINT InputParameters; // Number of parameters in the input signature
126 UINT OutputParameters; // Number of parameters in the output signature
127
128 UINT InstructionCount; // Number of emitted instructions
129 UINT TempRegisterCount; // Number of temporary registers used
130 UINT TempArrayCount; // Number of temporary arrays used
131 UINT DefCount; // Number of constant defines
132 UINT DclCount; // Number of declarations (input + output)
133 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
134 UINT TextureLoadInstructions; // Number of texture load instructions
135 UINT TextureCompInstructions; // Number of texture comparison instructions
136 UINT TextureBiasInstructions; // Number of texture bias instructions
137 UINT TextureGradientInstructions; // Number of texture gradient instructions
138 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
139 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
140 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
141 UINT StaticFlowControlCount; // Number of static flow control instructions used
142 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
143 UINT MacroInstructionCount; // Number of macro instructions used
144 UINT ArrayInstructionCount; // Number of array instructions used
145 UINT CutInstructionCount; // Number of cut instructions used
146 UINT EmitInstructionCount; // Number of emit instructions used
147 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
148 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
149 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
150 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
151 UINT cGSInstanceCount; // Number of Geometry shader instances
152 UINT cControlPoints; // Number of control points in the HS->DS stage
153 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
154 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
155 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
156 // instruction counts
157 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
158 UINT cInterlockedInstructions; // Number of interlocked instructions
159 UINT cTextureStoreInstructions; // Number of texture writes
160} D3D12_SHADER_DESC;
161
162typedef struct _D3D12_SHADER_INPUT_BIND_DESC
163{
164 LPCSTR Name; // Name of the resource
165 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
166 UINT BindPoint; // Starting bind point
167 UINT BindCount; // Number of contiguous bind points (for arrays)
168
169 UINT uFlags; // Input binding flags
170 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
171 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
172 UINT NumSamples; // Number of samples (0 if not MS texture)
173 UINT Space; // Register space
174 UINT uID; // Range ID in the bytecode
175} D3D12_SHADER_INPUT_BIND_DESC;
176
177#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
178#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
179#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
180#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
181#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
182#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
183#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
184#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
185#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
186#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
187#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
188#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
189#define D3D_SHADER_REQUIRES_ROVS 0x00001000
190#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
191#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
192#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
193#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
194#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
195#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
196#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
197#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
198#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
199#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
200#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
201#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
202#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
203#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
204#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
205#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
206#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
207#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
208#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
209#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
210
211
212typedef struct _D3D12_LIBRARY_DESC
213{
214 LPCSTR Creator; // The name of the originator of the library.
215 UINT Flags; // Compilation flags.
216 UINT FunctionCount; // Number of functions exported from the library.
217} D3D12_LIBRARY_DESC;
218
219typedef struct _D3D12_FUNCTION_DESC
220{
221 UINT Version; // Shader version
222 LPCSTR Creator; // Creator string
223 UINT Flags; // Shader compilation/parse flags
224
225 UINT ConstantBuffers; // Number of constant buffers
226 UINT BoundResources; // Number of bound resources
227
228 UINT InstructionCount; // Number of emitted instructions
229 UINT TempRegisterCount; // Number of temporary registers used
230 UINT TempArrayCount; // Number of temporary arrays used
231 UINT DefCount; // Number of constant defines
232 UINT DclCount; // Number of declarations (input + output)
233 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
234 UINT TextureLoadInstructions; // Number of texture load instructions
235 UINT TextureCompInstructions; // Number of texture comparison instructions
236 UINT TextureBiasInstructions; // Number of texture bias instructions
237 UINT TextureGradientInstructions; // Number of texture gradient instructions
238 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
239 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
240 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
241 UINT StaticFlowControlCount; // Number of static flow control instructions used
242 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
243 UINT MacroInstructionCount; // Number of macro instructions used
244 UINT ArrayInstructionCount; // Number of array instructions used
245 UINT MovInstructionCount; // Number of mov instructions used
246 UINT MovcInstructionCount; // Number of movc instructions used
247 UINT ConversionInstructionCount; // Number of type conversion instructions used
248 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
249 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
250 UINT64 RequiredFeatureFlags; // Required feature flags
251
252 LPCSTR Name; // Function name
253 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
254 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
255 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
256 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
257} D3D12_FUNCTION_DESC;
258
259typedef struct _D3D12_PARAMETER_DESC
260{
261 LPCSTR Name; // Parameter name.
262 LPCSTR SemanticName; // Parameter semantic name (+index).
263 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
264 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
265 UINT Rows; // Rows are for matrix parameters.
266 UINT Columns; // Components or Columns in matrix.
267 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
268 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
269
270 UINT FirstInRegister; // The first input register for this parameter.
271 UINT FirstInComponent; // The first input register component for this parameter.
272 UINT FirstOutRegister; // The first output register for this parameter.
273 UINT FirstOutComponent; // The first output register component for this parameter.
274} D3D12_PARAMETER_DESC;
275
276
277//////////////////////////////////////////////////////////////////////////////
278// Interfaces ////////////////////////////////////////////////////////////////
279//////////////////////////////////////////////////////////////////////////////
280
281typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
282typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
283
284typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
285typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
286
287typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
288typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
289
290typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
291typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
292
293typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
294typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
295
296typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
297typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
298
299typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
300typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
301
302
303// {E913C351-783D-48CA-A1D1-4F306284AD56}
304interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
305DEFINE_GUID(IID_ID3D12ShaderReflectionType,
3060xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
307
308#undef INTERFACE
309#define INTERFACE ID3D12ShaderReflectionType
310
311DECLARE_INTERFACE(ID3D12ShaderReflectionType)
312{
313 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
314
315 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
316 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
317 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
318
319 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
322 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
323 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
324 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
325 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
326};
327
328// {8337A8A6-A216-444A-B2F4-314733A73AEA}
329interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
330DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3310x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
332
333#undef INTERFACE
334#define INTERFACE ID3D12ShaderReflectionVariable
335
336DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
337{
338 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
339
340 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
341 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
342
343 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
344};
345
346// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
347interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
348DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3490xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
350
351#undef INTERFACE
352#define INTERFACE ID3D12ShaderReflectionConstantBuffer
353
354DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
355{
356 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
357
358 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
359 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
360};
361
362// The ID3D12ShaderReflection IID may change from SDK version to SDK version
363// if the reflection API changes. This prevents new code with the new API
364// from working with an old binary. Recompiling with the new header
365// will pick up the new IID.
366
367// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
368interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
369DEFINE_GUID(IID_ID3D12ShaderReflection,
3700x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
371
372#undef INTERFACE
373#define INTERFACE ID3D12ShaderReflection
374
375DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
376{
377 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
378 _Out_ LPVOID *ppv) PURE;
379 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
380 STDMETHOD_(ULONG, Release)(THIS) PURE;
381
382 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
383
384 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
385 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
386
387 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
388 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
389
390 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
391 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
392 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
393 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
394 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
395 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
396
397 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
398
399 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
400 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
401
402 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
403 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
404 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
405 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
406
407 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
408 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
409
410 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
411 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
412
413 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
414 _Out_opt_ UINT* pSizeX,
415 _Out_opt_ UINT* pSizeY,
416 _Out_opt_ UINT* pSizeZ) PURE;
417
418 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
419};
420
421// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
422interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
423DEFINE_GUID(IID_ID3D12LibraryReflection,
4240x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
425
426#undef INTERFACE
427#define INTERFACE ID3D12LibraryReflection
428
429DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
430{
431 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
432 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
433 STDMETHOD_(ULONG, Release)(THIS) PURE;
434
435 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
436
437 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
438};
439
440// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
441interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
442DEFINE_GUID(IID_ID3D12FunctionReflection,
4430x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
444
445#undef INTERFACE
446#define INTERFACE ID3D12FunctionReflection
447
448DECLARE_INTERFACE(ID3D12FunctionReflection)
449{
450 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
451
452 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
453 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
454
455 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
456 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
457
458 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
459
460 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
461 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
462
463 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
464 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
465};
466
467// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
468interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
469DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4700xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
471
472#undef INTERFACE
473#define INTERFACE ID3D12FunctionParameterReflection
474
475DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
476{
477 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
478};
479
480
481//////////////////////////////////////////////////////////////////////////////
482// APIs //////////////////////////////////////////////////////////////////////
483//////////////////////////////////////////////////////////////////////////////
484
485#ifdef __cplusplus
486extern "C" {
487#endif //__cplusplus
488
489#ifdef __cplusplus
490}
491#endif //__cplusplus
492
493#endif //__D3D12SHADER_H__
494
495
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
new file mode 100644
index 0000000..843e78d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
@@ -0,0 +1,10726 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210#define __ID3D12VideoEncoder_FWD_DEFINED__
211typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224#define __ID3D12VideoDevice3_FWD_DEFINED__
225typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252#define __ID3D12VideoDevice4_FWD_DEFINED__
253typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
261
262#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
263
264
265/* header files for imported files */
266#include "oaidl.h"
267#include "ocidl.h"
268#include "dxgicommon.h"
269#include "d3d12.h"
270
271#ifdef __cplusplus
272extern "C"{
273#endif
274
275
276/* interface __MIDL_itf_d3d12video_0000_0000 */
277/* [local] */
278
279#include <winapifamily.h>
280#pragma region App Family
281#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
282typedef
283enum D3D12_VIDEO_FIELD_TYPE
284 {
285 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
286 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
287 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
288 } D3D12_VIDEO_FIELD_TYPE;
289
290typedef
291enum D3D12_VIDEO_FRAME_STEREO_FORMAT
292 {
293 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
294 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
295 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
296 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
297 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
298 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
299
300typedef struct D3D12_VIDEO_FORMAT
301 {
302 DXGI_FORMAT Format;
303 DXGI_COLOR_SPACE_TYPE ColorSpace;
304 } D3D12_VIDEO_FORMAT;
305
306typedef struct D3D12_VIDEO_SAMPLE
307 {
308 UINT Width;
309 UINT Height;
310 D3D12_VIDEO_FORMAT Format;
311 } D3D12_VIDEO_SAMPLE;
312
313typedef
314enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
315 {
316 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
317 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
318 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
319
320typedef
321enum D3D12_FEATURE_VIDEO
322 {
323 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
324 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
325 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
326 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
327 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
328 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
329 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
330 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
331 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
332 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
333 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
334 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
335 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
336 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
337 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
338 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
339 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
340 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
341 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
342 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
343 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
344 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
345 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
346 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
347 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
348 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
349 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
350 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
351 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
352 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
353 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
354 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
355 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
356 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
357 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
358 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
359 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
360 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
361 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
362 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
363 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
364 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
365 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
366 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
367 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
368 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
369 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
370 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
371 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
372 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
373 } D3D12_FEATURE_VIDEO;
374
375typedef
376enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377 {
378 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
382 {
383 GUID DecodeProfile;
384 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
385 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
386 } D3D12_VIDEO_DECODE_CONFIGURATION;
387
388typedef struct D3D12_VIDEO_DECODER_DESC
389 {
390 UINT NodeMask;
391 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392 } D3D12_VIDEO_DECODER_DESC;
393
394typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
395 {
396 UINT NodeMask;
397 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
398 UINT DecodeWidth;
399 UINT DecodeHeight;
400 DXGI_FORMAT Format;
401 DXGI_RATIONAL FrameRate;
402 UINT BitRate;
403 UINT MaxDecodePictureBufferCount;
404 } D3D12_VIDEO_DECODER_HEAP_DESC;
405
406typedef struct D3D12_VIDEO_SIZE_RANGE
407 {
408 UINT MaxWidth;
409 UINT MaxHeight;
410 UINT MinWidth;
411 UINT MinHeight;
412 } D3D12_VIDEO_SIZE_RANGE;
413
414typedef
415enum D3D12_VIDEO_PROCESS_FILTER
416 {
417 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
418 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
419 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
420 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
421 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
422 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
423 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
424 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
425 } D3D12_VIDEO_PROCESS_FILTER;
426
427typedef
428enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
429 {
430 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
431 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
432 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
433 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
434 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
435 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
436 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
437 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
438 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
439 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
440
441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442typedef
443enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
444 {
445 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
446 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
447 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
448 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
449
450DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452 {
453 BOOL Enable;
454 FLOAT Alpha;
455 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458 {
459 BOOL Enable;
460 FLOAT Lower;
461 FLOAT Upper;
462 } D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
465 {
466 DXGI_FORMAT Format;
467 DXGI_COLOR_SPACE_TYPE ColorSpace;
468 DXGI_RATIONAL SourceAspectRatio;
469 DXGI_RATIONAL DestinationAspectRatio;
470 DXGI_RATIONAL FrameRate;
471 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
472 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
473 BOOL EnableOrientation;
474 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
475 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
476 D3D12_VIDEO_FIELD_TYPE FieldType;
477 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
478 BOOL EnableAlphaBlending;
479 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
480 UINT NumPastFrames;
481 UINT NumFutureFrames;
482 BOOL EnableAutoProcessing;
483 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
484
485typedef
486enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
487 {
488 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
489 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
490 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
491 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
492 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
493
494typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
495 {
496 DXGI_FORMAT Format;
497 DXGI_COLOR_SPACE_TYPE ColorSpace;
498 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
499 UINT AlphaFillModeSourceStreamIndex;
500 FLOAT BackgroundColor[ 4 ];
501 DXGI_RATIONAL FrameRate;
502 BOOL EnableStereo;
503 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
509
510#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
511#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
512
513/* interface ID3D12VideoDecoderHeap */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
522 ID3D12VideoDecoderHeap : public ID3D12Pageable
523 {
524 public:
525#if defined(_MSC_VER) || !defined(_WIN32)
526 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
527#else
528 virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
529 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
530#endif
531
532 };
533
534
535#else /* C style interface */
536
537 typedef struct ID3D12VideoDecoderHeapVtbl
538 {
539 BEGIN_INTERFACE
540
541 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
542 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
543 ID3D12VideoDecoderHeap * This,
544 REFIID riid,
545 _COM_Outptr_ void **ppvObject);
546
547 DECLSPEC_XFGVIRT(IUnknown, AddRef)
548 ULONG ( STDMETHODCALLTYPE *AddRef )(
549 ID3D12VideoDecoderHeap * This);
550
551 DECLSPEC_XFGVIRT(IUnknown, Release)
552 ULONG ( STDMETHODCALLTYPE *Release )(
553 ID3D12VideoDecoderHeap * This);
554
555 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
556 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
557 ID3D12VideoDecoderHeap * This,
558 _In_ REFGUID guid,
559 _Inout_ UINT *pDataSize,
560 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
561
562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
563 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
564 ID3D12VideoDecoderHeap * This,
565 _In_ REFGUID guid,
566 _In_ UINT DataSize,
567 _In_reads_bytes_opt_( DataSize ) const void *pData);
568
569 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
570 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
571 ID3D12VideoDecoderHeap * This,
572 _In_ REFGUID guid,
573 _In_opt_ const IUnknown *pData);
574
575 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
576 HRESULT ( STDMETHODCALLTYPE *SetName )(
577 ID3D12VideoDecoderHeap * This,
578 _In_z_ LPCWSTR Name);
579
580 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
581 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
582 ID3D12VideoDecoderHeap * This,
583 REFIID riid,
584 _COM_Outptr_opt_ void **ppvDevice);
585
586 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
587#if !defined(_WIN32)
588 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
589 ID3D12VideoDecoderHeap * This);
590
591#else
592 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
593 ID3D12VideoDecoderHeap * This,
594 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
595
596#endif
597
598 END_INTERFACE
599 } ID3D12VideoDecoderHeapVtbl;
600
601 interface ID3D12VideoDecoderHeap
602 {
603 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
604 };
605
606
607
608#ifdef COBJMACROS
609
610
611#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
613
614#define ID3D12VideoDecoderHeap_AddRef(This) \
615 ( (This)->lpVtbl -> AddRef(This) )
616
617#define ID3D12VideoDecoderHeap_Release(This) \
618 ( (This)->lpVtbl -> Release(This) )
619
620
621#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
622 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
623
624#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
625 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
626
627#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
628 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
629
630#define ID3D12VideoDecoderHeap_SetName(This,Name) \
631 ( (This)->lpVtbl -> SetName(This,Name) )
632
633
634#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
635 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
636
637
638#if !defined(_WIN32)
639
640#define ID3D12VideoDecoderHeap_GetDesc(This) \
641 ( (This)->lpVtbl -> GetDesc(This) )
642#else
643#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
644 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
645#endif
646
647#endif /* COBJMACROS */
648
649
650#endif /* C style interface */
651
652
653
654
655#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
656
657
658#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
659#define __ID3D12VideoDevice_INTERFACE_DEFINED__
660
661/* interface ID3D12VideoDevice */
662/* [unique][local][object][uuid] */
663
664
665EXTERN_C const IID IID_ID3D12VideoDevice;
666
667#if defined(__cplusplus) && !defined(CINTERFACE)
668
669 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
670 ID3D12VideoDevice : public IUnknown
671 {
672 public:
673 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
674 D3D12_FEATURE_VIDEO FeatureVideo,
675 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
676 UINT FeatureSupportDataSize) = 0;
677
678 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
679 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
680 _In_ REFIID riid,
681 _COM_Outptr_ void **ppVideoDecoder) = 0;
682
683 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
684 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
685 _In_ REFIID riid,
686 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
687
688 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
689 UINT NodeMask,
690 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
691 UINT NumInputStreamDescs,
692 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
693 _In_ REFIID riid,
694 _COM_Outptr_ void **ppVideoProcessor) = 0;
695
696 };
697
698
699#else /* C style interface */
700
701 typedef struct ID3D12VideoDeviceVtbl
702 {
703 BEGIN_INTERFACE
704
705 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
706 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
707 ID3D12VideoDevice * This,
708 REFIID riid,
709 _COM_Outptr_ void **ppvObject);
710
711 DECLSPEC_XFGVIRT(IUnknown, AddRef)
712 ULONG ( STDMETHODCALLTYPE *AddRef )(
713 ID3D12VideoDevice * This);
714
715 DECLSPEC_XFGVIRT(IUnknown, Release)
716 ULONG ( STDMETHODCALLTYPE *Release )(
717 ID3D12VideoDevice * This);
718
719 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
720 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
721 ID3D12VideoDevice * This,
722 D3D12_FEATURE_VIDEO FeatureVideo,
723 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
724 UINT FeatureSupportDataSize);
725
726 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
727 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
728 ID3D12VideoDevice * This,
729 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
730 _In_ REFIID riid,
731 _COM_Outptr_ void **ppVideoDecoder);
732
733 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
734 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
735 ID3D12VideoDevice * This,
736 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
737 _In_ REFIID riid,
738 _COM_Outptr_ void **ppVideoDecoderHeap);
739
740 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
741 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
742 ID3D12VideoDevice * This,
743 UINT NodeMask,
744 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
745 UINT NumInputStreamDescs,
746 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
747 _In_ REFIID riid,
748 _COM_Outptr_ void **ppVideoProcessor);
749
750 END_INTERFACE
751 } ID3D12VideoDeviceVtbl;
752
753 interface ID3D12VideoDevice
754 {
755 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
756 };
757
758
759
760#ifdef COBJMACROS
761
762
763#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
764 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765
766#define ID3D12VideoDevice_AddRef(This) \
767 ( (This)->lpVtbl -> AddRef(This) )
768
769#define ID3D12VideoDevice_Release(This) \
770 ( (This)->lpVtbl -> Release(This) )
771
772
773#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
774 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
775
776#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
777 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
778
779#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
780 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
781
782#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
783 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
784
785#endif /* COBJMACROS */
786
787
788#endif /* C style interface */
789
790
791
792
793#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
794
795
796#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
797#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
798
799/* interface ID3D12VideoDecoder */
800/* [unique][local][object][uuid] */
801
802
803EXTERN_C const IID IID_ID3D12VideoDecoder;
804
805#if defined(__cplusplus) && !defined(CINTERFACE)
806
807 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
808 ID3D12VideoDecoder : public ID3D12Pageable
809 {
810 public:
811#if defined(_MSC_VER) || !defined(_WIN32)
812 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
813#else
814 virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
815 D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
816#endif
817
818 };
819
820
821#else /* C style interface */
822
823 typedef struct ID3D12VideoDecoderVtbl
824 {
825 BEGIN_INTERFACE
826
827 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
828 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
829 ID3D12VideoDecoder * This,
830 REFIID riid,
831 _COM_Outptr_ void **ppvObject);
832
833 DECLSPEC_XFGVIRT(IUnknown, AddRef)
834 ULONG ( STDMETHODCALLTYPE *AddRef )(
835 ID3D12VideoDecoder * This);
836
837 DECLSPEC_XFGVIRT(IUnknown, Release)
838 ULONG ( STDMETHODCALLTYPE *Release )(
839 ID3D12VideoDecoder * This);
840
841 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
842 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
843 ID3D12VideoDecoder * This,
844 _In_ REFGUID guid,
845 _Inout_ UINT *pDataSize,
846 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
847
848 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
849 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850 ID3D12VideoDecoder * This,
851 _In_ REFGUID guid,
852 _In_ UINT DataSize,
853 _In_reads_bytes_opt_( DataSize ) const void *pData);
854
855 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
856 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
857 ID3D12VideoDecoder * This,
858 _In_ REFGUID guid,
859 _In_opt_ const IUnknown *pData);
860
861 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
862 HRESULT ( STDMETHODCALLTYPE *SetName )(
863 ID3D12VideoDecoder * This,
864 _In_z_ LPCWSTR Name);
865
866 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
867 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
868 ID3D12VideoDecoder * This,
869 REFIID riid,
870 _COM_Outptr_opt_ void **ppvDevice);
871
872 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
873#if !defined(_WIN32)
874 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
875 ID3D12VideoDecoder * This);
876
877#else
878 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
879 ID3D12VideoDecoder * This,
880 D3D12_VIDEO_DECODER_DESC * RetVal);
881
882#endif
883
884 END_INTERFACE
885 } ID3D12VideoDecoderVtbl;
886
887 interface ID3D12VideoDecoder
888 {
889 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
890 };
891
892
893
894#ifdef COBJMACROS
895
896
897#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
898 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
899
900#define ID3D12VideoDecoder_AddRef(This) \
901 ( (This)->lpVtbl -> AddRef(This) )
902
903#define ID3D12VideoDecoder_Release(This) \
904 ( (This)->lpVtbl -> Release(This) )
905
906
907#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
908 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
909
910#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
911 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
912
913#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
914 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
915
916#define ID3D12VideoDecoder_SetName(This,Name) \
917 ( (This)->lpVtbl -> SetName(This,Name) )
918
919
920#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
921 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
922
923
924#if !defined(_WIN32)
925
926#define ID3D12VideoDecoder_GetDesc(This) \
927 ( (This)->lpVtbl -> GetDesc(This) )
928#else
929#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
930 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
931#endif
932
933#endif /* COBJMACROS */
934
935
936#endif /* C style interface */
937
938
939
940
941#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
942
943
944/* interface __MIDL_itf_d3d12video_0000_0003 */
945/* [local] */
946
947typedef
948enum D3D12_VIDEO_DECODE_TIER
949 {
950 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
951 D3D12_VIDEO_DECODE_TIER_1 = 1,
952 D3D12_VIDEO_DECODE_TIER_2 = 2,
953 D3D12_VIDEO_DECODE_TIER_3 = 3
954 } D3D12_VIDEO_DECODE_TIER;
955
956typedef
957enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
958 {
959 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
960 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
961 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
962
963DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964typedef
965enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
966 {
967 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
968 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
969 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
970 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
971 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
972 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
973
974DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975typedef
976enum D3D12_VIDEO_DECODE_STATUS
977 {
978 D3D12_VIDEO_DECODE_STATUS_OK = 0,
979 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
980 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
981 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
982 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
983 } D3D12_VIDEO_DECODE_STATUS;
984
985typedef
986enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
987 {
988 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
989 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
990 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
991 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
992 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
995 {
996 UINT NodeIndex;
997 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
998 UINT Width;
999 UINT Height;
1000 DXGI_FORMAT DecodeFormat;
1001 DXGI_RATIONAL FrameRate;
1002 UINT BitRate;
1003 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
1004 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
1005 D3D12_VIDEO_DECODE_TIER DecodeTier;
1006 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
1007
1008typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009 {
1010 UINT NodeIndex;
1011 UINT ProfileCount;
1012 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
1015 {
1016 UINT NodeIndex;
1017 UINT ProfileCount;
1018 _Field_size_full_(ProfileCount) GUID *pProfiles;
1019 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
1020
1021typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
1022 {
1023 UINT NodeIndex;
1024 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1025 UINT FormatCount;
1026 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
1027
1028typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
1029 {
1030 UINT NodeIndex;
1031 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1032 UINT FormatCount;
1033 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
1034 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
1035
1036typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037 {
1038 BOOL IOCoherent;
1039 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041typedef
1042enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
1043 {
1044 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
1045 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
1046 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
1047 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
1048 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
1049 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
1050 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
1051 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
1052
1053typedef
1054enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
1055 {
1056 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
1057 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
1058 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
1059 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
1060 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
1061 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
1062 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
1063 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
1064 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
1065
1066DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
1068 {
1069 UINT NodeIndex;
1070 GUID DecodeProfile;
1071 UINT Width;
1072 UINT Height;
1073 DXGI_FORMAT DecodeFormat;
1074 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
1075 UINT BinCount;
1076 UINT CounterBitDepth;
1077 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
1078
1079typedef
1080enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
1081 {
1082 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
1083 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
1084 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
1085
1086DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087typedef
1088enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
1089 {
1090 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
1091 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
1092 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
1093 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
1094 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
1095
1096DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097typedef struct D3D12_VIDEO_SCALE_SUPPORT
1098 {
1099 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
1100 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
1101 } D3D12_VIDEO_SCALE_SUPPORT;
1102
1103typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
1104 {
1105 UINT NodeIndex;
1106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1107 D3D12_VIDEO_SAMPLE DecodeSample;
1108 D3D12_VIDEO_FORMAT OutputFormat;
1109 DXGI_RATIONAL FrameRate;
1110 UINT BitRate;
1111 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
1112 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1113 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
1114
1115typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
1116 {
1117 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
1118 UINT64 MemoryPoolL0Size;
1119 UINT64 MemoryPoolL1Size;
1120 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
1121
1122typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
1123 {
1124 UINT NodeMask;
1125 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
1126 UINT NumInputStreamDescs;
1127 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1128 UINT64 MemoryPoolL0Size;
1129 UINT64 MemoryPoolL1Size;
1130 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1131
1132typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1133 {
1134 UINT64 Status;
1135 UINT64 NumMacroblocksAffected;
1136 DXGI_RATIONAL FrameRate;
1137 UINT BitRate;
1138 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1139
1140typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1141 {
1142 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1143 UINT Size;
1144 _Field_size_bytes_full_(Size) void *pData;
1145 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1146
1147typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1148 {
1149 UINT NumTexture2Ds;
1150 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1151 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1152 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1153 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1154
1155typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156 {
1157 ID3D12Resource *pBuffer;
1158 UINT64 Offset;
1159 UINT64 Size;
1160 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1163 {
1164 BOOL Enable;
1165 ID3D12Resource *pReferenceTexture2D;
1166 UINT ReferenceSubresource;
1167 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1168 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1169 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1170
1171typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1172 {
1173 UINT NumFrameArguments;
1174 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1175 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1176 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1177 ID3D12VideoDecoderHeap *pHeap;
1178 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1179
1180typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1181 {
1182 ID3D12Resource *pOutputTexture2D;
1183 UINT OutputSubresource;
1184 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1185 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1186
1187
1188
1189extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1191
1192#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1193#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1194
1195/* interface ID3D12VideoProcessor */
1196/* [unique][local][object][uuid] */
1197
1198
1199EXTERN_C const IID IID_ID3D12VideoProcessor;
1200
1201#if defined(__cplusplus) && !defined(CINTERFACE)
1202
1203 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1204 ID3D12VideoProcessor : public ID3D12Pageable
1205 {
1206 public:
1207 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1208
1209 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1210
1211 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1212 UINT NumInputStreamDescs,
1213 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1214
1215#if defined(_MSC_VER) || !defined(_WIN32)
1216 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1217#else
1218 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
1219 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
1220#endif
1221
1222 };
1223
1224
1225#else /* C style interface */
1226
1227 typedef struct ID3D12VideoProcessorVtbl
1228 {
1229 BEGIN_INTERFACE
1230
1231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1233 ID3D12VideoProcessor * This,
1234 REFIID riid,
1235 _COM_Outptr_ void **ppvObject);
1236
1237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1238 ULONG ( STDMETHODCALLTYPE *AddRef )(
1239 ID3D12VideoProcessor * This);
1240
1241 DECLSPEC_XFGVIRT(IUnknown, Release)
1242 ULONG ( STDMETHODCALLTYPE *Release )(
1243 ID3D12VideoProcessor * This);
1244
1245 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1246 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1247 ID3D12VideoProcessor * This,
1248 _In_ REFGUID guid,
1249 _Inout_ UINT *pDataSize,
1250 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1251
1252 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1253 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1254 ID3D12VideoProcessor * This,
1255 _In_ REFGUID guid,
1256 _In_ UINT DataSize,
1257 _In_reads_bytes_opt_( DataSize ) const void *pData);
1258
1259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1260 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1261 ID3D12VideoProcessor * This,
1262 _In_ REFGUID guid,
1263 _In_opt_ const IUnknown *pData);
1264
1265 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1266 HRESULT ( STDMETHODCALLTYPE *SetName )(
1267 ID3D12VideoProcessor * This,
1268 _In_z_ LPCWSTR Name);
1269
1270 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1271 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1272 ID3D12VideoProcessor * This,
1273 REFIID riid,
1274 _COM_Outptr_opt_ void **ppvDevice);
1275
1276 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1277 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1278 ID3D12VideoProcessor * This);
1279
1280 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1281 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1282 ID3D12VideoProcessor * This);
1283
1284 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1285 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1286 ID3D12VideoProcessor * This,
1287 UINT NumInputStreamDescs,
1288 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1289
1290 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1291#if !defined(_WIN32)
1292 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1293 ID3D12VideoProcessor * This);
1294
1295#else
1296 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1297 ID3D12VideoProcessor * This,
1298 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1299
1300#endif
1301
1302 END_INTERFACE
1303 } ID3D12VideoProcessorVtbl;
1304
1305 interface ID3D12VideoProcessor
1306 {
1307 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1308 };
1309
1310
1311
1312#ifdef COBJMACROS
1313
1314
1315#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1317
1318#define ID3D12VideoProcessor_AddRef(This) \
1319 ( (This)->lpVtbl -> AddRef(This) )
1320
1321#define ID3D12VideoProcessor_Release(This) \
1322 ( (This)->lpVtbl -> Release(This) )
1323
1324
1325#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1326 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1327
1328#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1329 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1330
1331#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1332 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1333
1334#define ID3D12VideoProcessor_SetName(This,Name) \
1335 ( (This)->lpVtbl -> SetName(This,Name) )
1336
1337
1338#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1339 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1340
1341
1342
1343#define ID3D12VideoProcessor_GetNodeMask(This) \
1344 ( (This)->lpVtbl -> GetNodeMask(This) )
1345
1346#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1347 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1348
1349#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1350 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1351#if !defined(_WIN32)
1352
1353#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
1354 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
1355#else
1356#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1357 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1358#endif
1359
1360#endif /* COBJMACROS */
1361
1362
1363#endif /* C style interface */
1364
1365
1366
1367
1368#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1369
1370
1371/* interface __MIDL_itf_d3d12video_0000_0004 */
1372/* [local] */
1373
1374typedef
1375enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1376 {
1377 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1378 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1379 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1380 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1381 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1382 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1383 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1384 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1385 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1386
1387DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388typedef
1389enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1390 {
1391 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1392 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1393 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1394 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1395 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1396 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1397 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1398 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1399 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1400 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1401 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1402
1403DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404typedef
1405enum D3D12_VIDEO_PROCESS_ORIENTATION
1406 {
1407 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1408 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1409 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1410 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1411 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1412 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1413 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1414 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1415 } D3D12_VIDEO_PROCESS_ORIENTATION;
1416
1417typedef
1418enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1419 {
1420 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1421 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1422 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1423 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1424
1425DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1427 {
1428 INT Minimum;
1429 INT Maximum;
1430 INT Default;
1431 FLOAT Multiplier;
1432 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1433
1434typedef
1435enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1436 {
1437 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1438 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1439 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1440
1441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1443 {
1444 UINT NodeIndex;
1445 D3D12_VIDEO_SAMPLE InputSample;
1446 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1447 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1448 DXGI_RATIONAL InputFrameRate;
1449 D3D12_VIDEO_FORMAT OutputFormat;
1450 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1451 DXGI_RATIONAL OutputFrameRate;
1452 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1453 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1454 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1455 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1456 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1457 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1458 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1459 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1460
1461typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1462 {
1463 UINT NodeIndex;
1464 UINT MaxInputStreams;
1465 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1466
1467typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1468 {
1469 UINT NodeIndex;
1470 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1471 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1472 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1473 DXGI_RATIONAL InputFrameRate;
1474 DXGI_RATIONAL OutputFrameRate;
1475 BOOL EnableAutoProcessing;
1476 UINT PastFrames;
1477 UINT FutureFrames;
1478 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1479
1480typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1481 {
1482 UINT NumPastFrames;
1483 ID3D12Resource **ppPastFrames;
1484 UINT *pPastSubresources;
1485 UINT NumFutureFrames;
1486 ID3D12Resource **ppFutureFrames;
1487 UINT *pFutureSubresources;
1488 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1489
1490typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1491 {
1492 D3D12_RECT SourceRectangle;
1493 D3D12_RECT DestinationRectangle;
1494 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1495 } D3D12_VIDEO_PROCESS_TRANSFORM;
1496
1497typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498 {
1499 UINT OutputIndex;
1500 UINT InputFrameOrField;
1501 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1504 {
1505 ID3D12Resource *pTexture2D;
1506 UINT Subresource;
1507 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1508 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1509
1510typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1511 {
1512 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1513 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1514 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1515 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1516 INT FilterLevels[ 32 ];
1517 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1518 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1519
1520typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521 {
1522 ID3D12Resource *pTexture2D;
1523 UINT Subresource;
1524 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1527 {
1528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1529 D3D12_RECT TargetRectangle;
1530 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1531
1532
1533
1534extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1536
1537#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1538#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1539
1540/* interface ID3D12VideoDecodeCommandList */
1541/* [unique][local][object][uuid] */
1542
1543
1544EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1545
1546#if defined(__cplusplus) && !defined(CINTERFACE)
1547
1548 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1549 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1550 {
1551 public:
1552 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1553
1554 virtual HRESULT STDMETHODCALLTYPE Reset(
1555 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1556
1557 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1558
1559 virtual void STDMETHODCALLTYPE ResourceBarrier(
1560 _In_ UINT NumBarriers,
1561 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1562
1563 virtual void STDMETHODCALLTYPE DiscardResource(
1564 _In_ ID3D12Resource *pResource,
1565 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1566
1567 virtual void STDMETHODCALLTYPE BeginQuery(
1568 _In_ ID3D12QueryHeap *pQueryHeap,
1569 _In_ D3D12_QUERY_TYPE Type,
1570 _In_ UINT Index) = 0;
1571
1572 virtual void STDMETHODCALLTYPE EndQuery(
1573 _In_ ID3D12QueryHeap *pQueryHeap,
1574 _In_ D3D12_QUERY_TYPE Type,
1575 _In_ UINT Index) = 0;
1576
1577 virtual void STDMETHODCALLTYPE ResolveQueryData(
1578 _In_ ID3D12QueryHeap *pQueryHeap,
1579 _In_ D3D12_QUERY_TYPE Type,
1580 _In_ UINT StartIndex,
1581 _In_ UINT NumQueries,
1582 _In_ ID3D12Resource *pDestinationBuffer,
1583 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1584
1585 virtual void STDMETHODCALLTYPE SetPredication(
1586 _In_opt_ ID3D12Resource *pBuffer,
1587 _In_ UINT64 AlignedBufferOffset,
1588 _In_ D3D12_PREDICATION_OP Operation) = 0;
1589
1590 virtual void STDMETHODCALLTYPE SetMarker(
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size) = 0;
1594
1595 virtual void STDMETHODCALLTYPE BeginEvent(
1596 UINT Metadata,
1597 _In_reads_bytes_opt_(Size) const void *pData,
1598 UINT Size) = 0;
1599
1600 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1601
1602 virtual void STDMETHODCALLTYPE DecodeFrame(
1603 _In_ ID3D12VideoDecoder *pDecoder,
1604 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1605 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1606
1607 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1608 UINT Count,
1609 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1610 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1611
1612 };
1613
1614
1615#else /* C style interface */
1616
1617 typedef struct ID3D12VideoDecodeCommandListVtbl
1618 {
1619 BEGIN_INTERFACE
1620
1621 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1622 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1623 ID3D12VideoDecodeCommandList * This,
1624 REFIID riid,
1625 _COM_Outptr_ void **ppvObject);
1626
1627 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1628 ULONG ( STDMETHODCALLTYPE *AddRef )(
1629 ID3D12VideoDecodeCommandList * This);
1630
1631 DECLSPEC_XFGVIRT(IUnknown, Release)
1632 ULONG ( STDMETHODCALLTYPE *Release )(
1633 ID3D12VideoDecodeCommandList * This);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1636 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1637 ID3D12VideoDecodeCommandList * This,
1638 _In_ REFGUID guid,
1639 _Inout_ UINT *pDataSize,
1640 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1641
1642 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1643 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1644 ID3D12VideoDecodeCommandList * This,
1645 _In_ REFGUID guid,
1646 _In_ UINT DataSize,
1647 _In_reads_bytes_opt_( DataSize ) const void *pData);
1648
1649 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1650 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1651 ID3D12VideoDecodeCommandList * This,
1652 _In_ REFGUID guid,
1653 _In_opt_ const IUnknown *pData);
1654
1655 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1656 HRESULT ( STDMETHODCALLTYPE *SetName )(
1657 ID3D12VideoDecodeCommandList * This,
1658 _In_z_ LPCWSTR Name);
1659
1660 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1661 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1662 ID3D12VideoDecodeCommandList * This,
1663 REFIID riid,
1664 _COM_Outptr_opt_ void **ppvDevice);
1665
1666 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1667 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1668 ID3D12VideoDecodeCommandList * This);
1669
1670 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1671 HRESULT ( STDMETHODCALLTYPE *Close )(
1672 ID3D12VideoDecodeCommandList * This);
1673
1674 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1675 HRESULT ( STDMETHODCALLTYPE *Reset )(
1676 ID3D12VideoDecodeCommandList * This,
1677 _In_ ID3D12CommandAllocator *pAllocator);
1678
1679 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1680 void ( STDMETHODCALLTYPE *ClearState )(
1681 ID3D12VideoDecodeCommandList * This);
1682
1683 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1684 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1685 ID3D12VideoDecodeCommandList * This,
1686 _In_ UINT NumBarriers,
1687 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1688
1689 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1690 void ( STDMETHODCALLTYPE *DiscardResource )(
1691 ID3D12VideoDecodeCommandList * This,
1692 _In_ ID3D12Resource *pResource,
1693 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1694
1695 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1696 void ( STDMETHODCALLTYPE *BeginQuery )(
1697 ID3D12VideoDecodeCommandList * This,
1698 _In_ ID3D12QueryHeap *pQueryHeap,
1699 _In_ D3D12_QUERY_TYPE Type,
1700 _In_ UINT Index);
1701
1702 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1703 void ( STDMETHODCALLTYPE *EndQuery )(
1704 ID3D12VideoDecodeCommandList * This,
1705 _In_ ID3D12QueryHeap *pQueryHeap,
1706 _In_ D3D12_QUERY_TYPE Type,
1707 _In_ UINT Index);
1708
1709 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1710 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1711 ID3D12VideoDecodeCommandList * This,
1712 _In_ ID3D12QueryHeap *pQueryHeap,
1713 _In_ D3D12_QUERY_TYPE Type,
1714 _In_ UINT StartIndex,
1715 _In_ UINT NumQueries,
1716 _In_ ID3D12Resource *pDestinationBuffer,
1717 _In_ UINT64 AlignedDestinationBufferOffset);
1718
1719 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1720 void ( STDMETHODCALLTYPE *SetPredication )(
1721 ID3D12VideoDecodeCommandList * This,
1722 _In_opt_ ID3D12Resource *pBuffer,
1723 _In_ UINT64 AlignedBufferOffset,
1724 _In_ D3D12_PREDICATION_OP Operation);
1725
1726 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1727 void ( STDMETHODCALLTYPE *SetMarker )(
1728 ID3D12VideoDecodeCommandList * This,
1729 UINT Metadata,
1730 _In_reads_bytes_opt_(Size) const void *pData,
1731 UINT Size);
1732
1733 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1734 void ( STDMETHODCALLTYPE *BeginEvent )(
1735 ID3D12VideoDecodeCommandList * This,
1736 UINT Metadata,
1737 _In_reads_bytes_opt_(Size) const void *pData,
1738 UINT Size);
1739
1740 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1741 void ( STDMETHODCALLTYPE *EndEvent )(
1742 ID3D12VideoDecodeCommandList * This);
1743
1744 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1745 void ( STDMETHODCALLTYPE *DecodeFrame )(
1746 ID3D12VideoDecodeCommandList * This,
1747 _In_ ID3D12VideoDecoder *pDecoder,
1748 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1749 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1750
1751 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1752 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1753 ID3D12VideoDecodeCommandList * This,
1754 UINT Count,
1755 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1756 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1757
1758 END_INTERFACE
1759 } ID3D12VideoDecodeCommandListVtbl;
1760
1761 interface ID3D12VideoDecodeCommandList
1762 {
1763 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1764 };
1765
1766
1767
1768#ifdef COBJMACROS
1769
1770
1771#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1772 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1773
1774#define ID3D12VideoDecodeCommandList_AddRef(This) \
1775 ( (This)->lpVtbl -> AddRef(This) )
1776
1777#define ID3D12VideoDecodeCommandList_Release(This) \
1778 ( (This)->lpVtbl -> Release(This) )
1779
1780
1781#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1782 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1783
1784#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1785 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1786
1787#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1788 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1789
1790#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1791 ( (This)->lpVtbl -> SetName(This,Name) )
1792
1793
1794#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1795 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1796
1797
1798#define ID3D12VideoDecodeCommandList_GetType(This) \
1799 ( (This)->lpVtbl -> GetType(This) )
1800
1801
1802#define ID3D12VideoDecodeCommandList_Close(This) \
1803 ( (This)->lpVtbl -> Close(This) )
1804
1805#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1806 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1807
1808#define ID3D12VideoDecodeCommandList_ClearState(This) \
1809 ( (This)->lpVtbl -> ClearState(This) )
1810
1811#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1812 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1813
1814#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1815 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1816
1817#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1818 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1819
1820#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1821 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1822
1823#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1824 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1825
1826#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1827 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1828
1829#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1830 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1831
1832#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1833 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1834
1835#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1836 ( (This)->lpVtbl -> EndEvent(This) )
1837
1838#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1839 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1840
1841#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1843
1844#endif /* COBJMACROS */
1845
1846
1847#endif /* C style interface */
1848
1849
1850
1851
1852#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1853
1854
1855#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1856#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1857
1858/* interface ID3D12VideoProcessCommandList */
1859/* [unique][local][object][uuid] */
1860
1861
1862EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1863
1864#if defined(__cplusplus) && !defined(CINTERFACE)
1865
1866 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1867 ID3D12VideoProcessCommandList : public ID3D12CommandList
1868 {
1869 public:
1870 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1871
1872 virtual HRESULT STDMETHODCALLTYPE Reset(
1873 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1874
1875 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1876
1877 virtual void STDMETHODCALLTYPE ResourceBarrier(
1878 _In_ UINT NumBarriers,
1879 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1880
1881 virtual void STDMETHODCALLTYPE DiscardResource(
1882 _In_ ID3D12Resource *pResource,
1883 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1884
1885 virtual void STDMETHODCALLTYPE BeginQuery(
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT Index) = 0;
1889
1890 virtual void STDMETHODCALLTYPE EndQuery(
1891 _In_ ID3D12QueryHeap *pQueryHeap,
1892 _In_ D3D12_QUERY_TYPE Type,
1893 _In_ UINT Index) = 0;
1894
1895 virtual void STDMETHODCALLTYPE ResolveQueryData(
1896 _In_ ID3D12QueryHeap *pQueryHeap,
1897 _In_ D3D12_QUERY_TYPE Type,
1898 _In_ UINT StartIndex,
1899 _In_ UINT NumQueries,
1900 _In_ ID3D12Resource *pDestinationBuffer,
1901 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1902
1903 virtual void STDMETHODCALLTYPE SetPredication(
1904 _In_opt_ ID3D12Resource *pBuffer,
1905 _In_ UINT64 AlignedBufferOffset,
1906 _In_ D3D12_PREDICATION_OP Operation) = 0;
1907
1908 virtual void STDMETHODCALLTYPE SetMarker(
1909 UINT Metadata,
1910 _In_reads_bytes_opt_(Size) const void *pData,
1911 UINT Size) = 0;
1912
1913 virtual void STDMETHODCALLTYPE BeginEvent(
1914 UINT Metadata,
1915 _In_reads_bytes_opt_(Size) const void *pData,
1916 UINT Size) = 0;
1917
1918 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1919
1920 virtual void STDMETHODCALLTYPE ProcessFrames(
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1925
1926 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1927 UINT Count,
1928 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1929 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1930
1931 };
1932
1933
1934#else /* C style interface */
1935
1936 typedef struct ID3D12VideoProcessCommandListVtbl
1937 {
1938 BEGIN_INTERFACE
1939
1940 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1941 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1942 ID3D12VideoProcessCommandList * This,
1943 REFIID riid,
1944 _COM_Outptr_ void **ppvObject);
1945
1946 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1947 ULONG ( STDMETHODCALLTYPE *AddRef )(
1948 ID3D12VideoProcessCommandList * This);
1949
1950 DECLSPEC_XFGVIRT(IUnknown, Release)
1951 ULONG ( STDMETHODCALLTYPE *Release )(
1952 ID3D12VideoProcessCommandList * This);
1953
1954 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1955 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1956 ID3D12VideoProcessCommandList * This,
1957 _In_ REFGUID guid,
1958 _Inout_ UINT *pDataSize,
1959 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1960
1961 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1962 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1963 ID3D12VideoProcessCommandList * This,
1964 _In_ REFGUID guid,
1965 _In_ UINT DataSize,
1966 _In_reads_bytes_opt_( DataSize ) const void *pData);
1967
1968 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1969 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1970 ID3D12VideoProcessCommandList * This,
1971 _In_ REFGUID guid,
1972 _In_opt_ const IUnknown *pData);
1973
1974 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1975 HRESULT ( STDMETHODCALLTYPE *SetName )(
1976 ID3D12VideoProcessCommandList * This,
1977 _In_z_ LPCWSTR Name);
1978
1979 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1980 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1981 ID3D12VideoProcessCommandList * This,
1982 REFIID riid,
1983 _COM_Outptr_opt_ void **ppvDevice);
1984
1985 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1986 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1987 ID3D12VideoProcessCommandList * This);
1988
1989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1990 HRESULT ( STDMETHODCALLTYPE *Close )(
1991 ID3D12VideoProcessCommandList * This);
1992
1993 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1994 HRESULT ( STDMETHODCALLTYPE *Reset )(
1995 ID3D12VideoProcessCommandList * This,
1996 _In_ ID3D12CommandAllocator *pAllocator);
1997
1998 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1999 void ( STDMETHODCALLTYPE *ClearState )(
2000 ID3D12VideoProcessCommandList * This);
2001
2002 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2003 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2004 ID3D12VideoProcessCommandList * This,
2005 _In_ UINT NumBarriers,
2006 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2007
2008 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2009 void ( STDMETHODCALLTYPE *DiscardResource )(
2010 ID3D12VideoProcessCommandList * This,
2011 _In_ ID3D12Resource *pResource,
2012 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2013
2014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2015 void ( STDMETHODCALLTYPE *BeginQuery )(
2016 ID3D12VideoProcessCommandList * This,
2017 _In_ ID3D12QueryHeap *pQueryHeap,
2018 _In_ D3D12_QUERY_TYPE Type,
2019 _In_ UINT Index);
2020
2021 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2022 void ( STDMETHODCALLTYPE *EndQuery )(
2023 ID3D12VideoProcessCommandList * This,
2024 _In_ ID3D12QueryHeap *pQueryHeap,
2025 _In_ D3D12_QUERY_TYPE Type,
2026 _In_ UINT Index);
2027
2028 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2029 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2030 ID3D12VideoProcessCommandList * This,
2031 _In_ ID3D12QueryHeap *pQueryHeap,
2032 _In_ D3D12_QUERY_TYPE Type,
2033 _In_ UINT StartIndex,
2034 _In_ UINT NumQueries,
2035 _In_ ID3D12Resource *pDestinationBuffer,
2036 _In_ UINT64 AlignedDestinationBufferOffset);
2037
2038 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2039 void ( STDMETHODCALLTYPE *SetPredication )(
2040 ID3D12VideoProcessCommandList * This,
2041 _In_opt_ ID3D12Resource *pBuffer,
2042 _In_ UINT64 AlignedBufferOffset,
2043 _In_ D3D12_PREDICATION_OP Operation);
2044
2045 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2046 void ( STDMETHODCALLTYPE *SetMarker )(
2047 ID3D12VideoProcessCommandList * This,
2048 UINT Metadata,
2049 _In_reads_bytes_opt_(Size) const void *pData,
2050 UINT Size);
2051
2052 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2053 void ( STDMETHODCALLTYPE *BeginEvent )(
2054 ID3D12VideoProcessCommandList * This,
2055 UINT Metadata,
2056 _In_reads_bytes_opt_(Size) const void *pData,
2057 UINT Size);
2058
2059 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2060 void ( STDMETHODCALLTYPE *EndEvent )(
2061 ID3D12VideoProcessCommandList * This);
2062
2063 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2064 void ( STDMETHODCALLTYPE *ProcessFrames )(
2065 ID3D12VideoProcessCommandList * This,
2066 _In_ ID3D12VideoProcessor *pVideoProcessor,
2067 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2068 UINT NumInputStreams,
2069 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2070
2071 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2072 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2073 ID3D12VideoProcessCommandList * This,
2074 UINT Count,
2075 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2076 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2077
2078 END_INTERFACE
2079 } ID3D12VideoProcessCommandListVtbl;
2080
2081 interface ID3D12VideoProcessCommandList
2082 {
2083 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12VideoProcessCommandList_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12VideoProcessCommandList_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
2102 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2103
2104#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
2105 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2106
2107#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
2108 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2109
2110#define ID3D12VideoProcessCommandList_SetName(This,Name) \
2111 ( (This)->lpVtbl -> SetName(This,Name) )
2112
2113
2114#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
2115 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2116
2117
2118#define ID3D12VideoProcessCommandList_GetType(This) \
2119 ( (This)->lpVtbl -> GetType(This) )
2120
2121
2122#define ID3D12VideoProcessCommandList_Close(This) \
2123 ( (This)->lpVtbl -> Close(This) )
2124
2125#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
2126 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2127
2128#define ID3D12VideoProcessCommandList_ClearState(This) \
2129 ( (This)->lpVtbl -> ClearState(This) )
2130
2131#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
2132 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2133
2134#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
2135 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2136
2137#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
2138 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2139
2140#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
2141 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2142
2143#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2144 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2145
2146#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2147 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2148
2149#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2150 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2151
2152#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2153 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2154
2155#define ID3D12VideoProcessCommandList_EndEvent(This) \
2156 ( (This)->lpVtbl -> EndEvent(This) )
2157
2158#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2159 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2160
2161#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2162 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2163
2164#endif /* COBJMACROS */
2165
2166
2167#endif /* C style interface */
2168
2169
2170
2171
2172#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2173
2174
2175/* interface __MIDL_itf_d3d12video_0000_0006 */
2176/* [local] */
2177
2178typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179 {
2180 UINT64 Offset;
2181 ID3D12Resource *pBuffer;
2182 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2185 {
2186 BOOL Enable;
2187 ID3D12Resource *pReferenceTexture2D;
2188 UINT ReferenceSubresource;
2189 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2190 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2191 UINT OutputWidth;
2192 UINT OutputHeight;
2193 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2194
2195typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2196 {
2197 ID3D12Resource *pOutputTexture2D;
2198 UINT OutputSubresource;
2199 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2200 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2201 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2202
2203
2204
2205extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2207
2208#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2209#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2210
2211/* interface ID3D12VideoDecodeCommandList1 */
2212/* [unique][local][object][uuid] */
2213
2214
2215EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2216
2217#if defined(__cplusplus) && !defined(CINTERFACE)
2218
2219 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2220 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2221 {
2222 public:
2223 virtual void STDMETHODCALLTYPE DecodeFrame1(
2224 _In_ ID3D12VideoDecoder *pDecoder,
2225 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2226 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2227
2228 };
2229
2230
2231#else /* C style interface */
2232
2233 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2234 {
2235 BEGIN_INTERFACE
2236
2237 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2238 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2239 ID3D12VideoDecodeCommandList1 * This,
2240 REFIID riid,
2241 _COM_Outptr_ void **ppvObject);
2242
2243 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2244 ULONG ( STDMETHODCALLTYPE *AddRef )(
2245 ID3D12VideoDecodeCommandList1 * This);
2246
2247 DECLSPEC_XFGVIRT(IUnknown, Release)
2248 ULONG ( STDMETHODCALLTYPE *Release )(
2249 ID3D12VideoDecodeCommandList1 * This);
2250
2251 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2252 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2253 ID3D12VideoDecodeCommandList1 * This,
2254 _In_ REFGUID guid,
2255 _Inout_ UINT *pDataSize,
2256 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2257
2258 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2259 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2260 ID3D12VideoDecodeCommandList1 * This,
2261 _In_ REFGUID guid,
2262 _In_ UINT DataSize,
2263 _In_reads_bytes_opt_( DataSize ) const void *pData);
2264
2265 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2266 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2267 ID3D12VideoDecodeCommandList1 * This,
2268 _In_ REFGUID guid,
2269 _In_opt_ const IUnknown *pData);
2270
2271 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2272 HRESULT ( STDMETHODCALLTYPE *SetName )(
2273 ID3D12VideoDecodeCommandList1 * This,
2274 _In_z_ LPCWSTR Name);
2275
2276 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2277 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2278 ID3D12VideoDecodeCommandList1 * This,
2279 REFIID riid,
2280 _COM_Outptr_opt_ void **ppvDevice);
2281
2282 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2283 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2284 ID3D12VideoDecodeCommandList1 * This);
2285
2286 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2287 HRESULT ( STDMETHODCALLTYPE *Close )(
2288 ID3D12VideoDecodeCommandList1 * This);
2289
2290 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2291 HRESULT ( STDMETHODCALLTYPE *Reset )(
2292 ID3D12VideoDecodeCommandList1 * This,
2293 _In_ ID3D12CommandAllocator *pAllocator);
2294
2295 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2296 void ( STDMETHODCALLTYPE *ClearState )(
2297 ID3D12VideoDecodeCommandList1 * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2300 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2301 ID3D12VideoDecodeCommandList1 * This,
2302 _In_ UINT NumBarriers,
2303 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2304
2305 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2306 void ( STDMETHODCALLTYPE *DiscardResource )(
2307 ID3D12VideoDecodeCommandList1 * This,
2308 _In_ ID3D12Resource *pResource,
2309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2310
2311 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2312 void ( STDMETHODCALLTYPE *BeginQuery )(
2313 ID3D12VideoDecodeCommandList1 * This,
2314 _In_ ID3D12QueryHeap *pQueryHeap,
2315 _In_ D3D12_QUERY_TYPE Type,
2316 _In_ UINT Index);
2317
2318 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2319 void ( STDMETHODCALLTYPE *EndQuery )(
2320 ID3D12VideoDecodeCommandList1 * This,
2321 _In_ ID3D12QueryHeap *pQueryHeap,
2322 _In_ D3D12_QUERY_TYPE Type,
2323 _In_ UINT Index);
2324
2325 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2327 ID3D12VideoDecodeCommandList1 * This,
2328 _In_ ID3D12QueryHeap *pQueryHeap,
2329 _In_ D3D12_QUERY_TYPE Type,
2330 _In_ UINT StartIndex,
2331 _In_ UINT NumQueries,
2332 _In_ ID3D12Resource *pDestinationBuffer,
2333 _In_ UINT64 AlignedDestinationBufferOffset);
2334
2335 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2336 void ( STDMETHODCALLTYPE *SetPredication )(
2337 ID3D12VideoDecodeCommandList1 * This,
2338 _In_opt_ ID3D12Resource *pBuffer,
2339 _In_ UINT64 AlignedBufferOffset,
2340 _In_ D3D12_PREDICATION_OP Operation);
2341
2342 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2343 void ( STDMETHODCALLTYPE *SetMarker )(
2344 ID3D12VideoDecodeCommandList1 * This,
2345 UINT Metadata,
2346 _In_reads_bytes_opt_(Size) const void *pData,
2347 UINT Size);
2348
2349 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2350 void ( STDMETHODCALLTYPE *BeginEvent )(
2351 ID3D12VideoDecodeCommandList1 * This,
2352 UINT Metadata,
2353 _In_reads_bytes_opt_(Size) const void *pData,
2354 UINT Size);
2355
2356 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2357 void ( STDMETHODCALLTYPE *EndEvent )(
2358 ID3D12VideoDecodeCommandList1 * This);
2359
2360 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2361 void ( STDMETHODCALLTYPE *DecodeFrame )(
2362 ID3D12VideoDecodeCommandList1 * This,
2363 _In_ ID3D12VideoDecoder *pDecoder,
2364 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2365 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2366
2367 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2368 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2369 ID3D12VideoDecodeCommandList1 * This,
2370 UINT Count,
2371 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2372 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2373
2374 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2375 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2376 ID3D12VideoDecodeCommandList1 * This,
2377 _In_ ID3D12VideoDecoder *pDecoder,
2378 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2379 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2380
2381 END_INTERFACE
2382 } ID3D12VideoDecodeCommandList1Vtbl;
2383
2384 interface ID3D12VideoDecodeCommandList1
2385 {
2386 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2387 };
2388
2389
2390
2391#ifdef COBJMACROS
2392
2393
2394#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2395 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2396
2397#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2398 ( (This)->lpVtbl -> AddRef(This) )
2399
2400#define ID3D12VideoDecodeCommandList1_Release(This) \
2401 ( (This)->lpVtbl -> Release(This) )
2402
2403
2404#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2405 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2406
2407#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2408 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2409
2410#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2411 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2412
2413#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2414 ( (This)->lpVtbl -> SetName(This,Name) )
2415
2416
2417#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2418 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2419
2420
2421#define ID3D12VideoDecodeCommandList1_GetType(This) \
2422 ( (This)->lpVtbl -> GetType(This) )
2423
2424
2425#define ID3D12VideoDecodeCommandList1_Close(This) \
2426 ( (This)->lpVtbl -> Close(This) )
2427
2428#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2429 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2430
2431#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2432 ( (This)->lpVtbl -> ClearState(This) )
2433
2434#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2435 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2436
2437#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2438 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2439
2440#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2441 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2442
2443#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2444 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2445
2446#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2447 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2448
2449#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2450 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2451
2452#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2453 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2454
2455#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2456 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2457
2458#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2459 ( (This)->lpVtbl -> EndEvent(This) )
2460
2461#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2462 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2463
2464#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2465 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2466
2467
2468#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2469 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2470
2471#endif /* COBJMACROS */
2472
2473
2474#endif /* C style interface */
2475
2476
2477
2478
2479#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2480
2481
2482/* interface __MIDL_itf_d3d12video_0000_0007 */
2483/* [local] */
2484
2485typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2486 {
2487 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2488 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2489 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2490 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2491 INT FilterLevels[ 32 ];
2492 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2493 D3D12_VIDEO_FIELD_TYPE FieldType;
2494 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2495
2496
2497
2498extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2500
2501#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2502#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2503
2504/* interface ID3D12VideoProcessCommandList1 */
2505/* [unique][local][object][uuid] */
2506
2507
2508EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2509
2510#if defined(__cplusplus) && !defined(CINTERFACE)
2511
2512 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2513 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2514 {
2515 public:
2516 virtual void STDMETHODCALLTYPE ProcessFrames1(
2517 _In_ ID3D12VideoProcessor *pVideoProcessor,
2518 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2519 UINT NumInputStreams,
2520 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2521
2522 };
2523
2524
2525#else /* C style interface */
2526
2527 typedef struct ID3D12VideoProcessCommandList1Vtbl
2528 {
2529 BEGIN_INTERFACE
2530
2531 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2532 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2533 ID3D12VideoProcessCommandList1 * This,
2534 REFIID riid,
2535 _COM_Outptr_ void **ppvObject);
2536
2537 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2538 ULONG ( STDMETHODCALLTYPE *AddRef )(
2539 ID3D12VideoProcessCommandList1 * This);
2540
2541 DECLSPEC_XFGVIRT(IUnknown, Release)
2542 ULONG ( STDMETHODCALLTYPE *Release )(
2543 ID3D12VideoProcessCommandList1 * This);
2544
2545 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2546 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2547 ID3D12VideoProcessCommandList1 * This,
2548 _In_ REFGUID guid,
2549 _Inout_ UINT *pDataSize,
2550 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2551
2552 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2553 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2554 ID3D12VideoProcessCommandList1 * This,
2555 _In_ REFGUID guid,
2556 _In_ UINT DataSize,
2557 _In_reads_bytes_opt_( DataSize ) const void *pData);
2558
2559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2560 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2561 ID3D12VideoProcessCommandList1 * This,
2562 _In_ REFGUID guid,
2563 _In_opt_ const IUnknown *pData);
2564
2565 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2566 HRESULT ( STDMETHODCALLTYPE *SetName )(
2567 ID3D12VideoProcessCommandList1 * This,
2568 _In_z_ LPCWSTR Name);
2569
2570 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2571 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2572 ID3D12VideoProcessCommandList1 * This,
2573 REFIID riid,
2574 _COM_Outptr_opt_ void **ppvDevice);
2575
2576 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2577 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2578 ID3D12VideoProcessCommandList1 * This);
2579
2580 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2581 HRESULT ( STDMETHODCALLTYPE *Close )(
2582 ID3D12VideoProcessCommandList1 * This);
2583
2584 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2585 HRESULT ( STDMETHODCALLTYPE *Reset )(
2586 ID3D12VideoProcessCommandList1 * This,
2587 _In_ ID3D12CommandAllocator *pAllocator);
2588
2589 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2590 void ( STDMETHODCALLTYPE *ClearState )(
2591 ID3D12VideoProcessCommandList1 * This);
2592
2593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2594 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2595 ID3D12VideoProcessCommandList1 * This,
2596 _In_ UINT NumBarriers,
2597 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2598
2599 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2600 void ( STDMETHODCALLTYPE *DiscardResource )(
2601 ID3D12VideoProcessCommandList1 * This,
2602 _In_ ID3D12Resource *pResource,
2603 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2604
2605 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2606 void ( STDMETHODCALLTYPE *BeginQuery )(
2607 ID3D12VideoProcessCommandList1 * This,
2608 _In_ ID3D12QueryHeap *pQueryHeap,
2609 _In_ D3D12_QUERY_TYPE Type,
2610 _In_ UINT Index);
2611
2612 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2613 void ( STDMETHODCALLTYPE *EndQuery )(
2614 ID3D12VideoProcessCommandList1 * This,
2615 _In_ ID3D12QueryHeap *pQueryHeap,
2616 _In_ D3D12_QUERY_TYPE Type,
2617 _In_ UINT Index);
2618
2619 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2620 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2621 ID3D12VideoProcessCommandList1 * This,
2622 _In_ ID3D12QueryHeap *pQueryHeap,
2623 _In_ D3D12_QUERY_TYPE Type,
2624 _In_ UINT StartIndex,
2625 _In_ UINT NumQueries,
2626 _In_ ID3D12Resource *pDestinationBuffer,
2627 _In_ UINT64 AlignedDestinationBufferOffset);
2628
2629 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2630 void ( STDMETHODCALLTYPE *SetPredication )(
2631 ID3D12VideoProcessCommandList1 * This,
2632 _In_opt_ ID3D12Resource *pBuffer,
2633 _In_ UINT64 AlignedBufferOffset,
2634 _In_ D3D12_PREDICATION_OP Operation);
2635
2636 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2637 void ( STDMETHODCALLTYPE *SetMarker )(
2638 ID3D12VideoProcessCommandList1 * This,
2639 UINT Metadata,
2640 _In_reads_bytes_opt_(Size) const void *pData,
2641 UINT Size);
2642
2643 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2644 void ( STDMETHODCALLTYPE *BeginEvent )(
2645 ID3D12VideoProcessCommandList1 * This,
2646 UINT Metadata,
2647 _In_reads_bytes_opt_(Size) const void *pData,
2648 UINT Size);
2649
2650 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2651 void ( STDMETHODCALLTYPE *EndEvent )(
2652 ID3D12VideoProcessCommandList1 * This);
2653
2654 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2655 void ( STDMETHODCALLTYPE *ProcessFrames )(
2656 ID3D12VideoProcessCommandList1 * This,
2657 _In_ ID3D12VideoProcessor *pVideoProcessor,
2658 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2659 UINT NumInputStreams,
2660 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2661
2662 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2663 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2664 ID3D12VideoProcessCommandList1 * This,
2665 UINT Count,
2666 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2667 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2668
2669 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2670 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2671 ID3D12VideoProcessCommandList1 * This,
2672 _In_ ID3D12VideoProcessor *pVideoProcessor,
2673 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2674 UINT NumInputStreams,
2675 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2676
2677 END_INTERFACE
2678 } ID3D12VideoProcessCommandList1Vtbl;
2679
2680 interface ID3D12VideoProcessCommandList1
2681 {
2682 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2683 };
2684
2685
2686
2687#ifdef COBJMACROS
2688
2689
2690#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2692
2693#define ID3D12VideoProcessCommandList1_AddRef(This) \
2694 ( (This)->lpVtbl -> AddRef(This) )
2695
2696#define ID3D12VideoProcessCommandList1_Release(This) \
2697 ( (This)->lpVtbl -> Release(This) )
2698
2699
2700#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2701 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2702
2703#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2704 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2705
2706#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2707 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2708
2709#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2710 ( (This)->lpVtbl -> SetName(This,Name) )
2711
2712
2713#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2714 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2715
2716
2717#define ID3D12VideoProcessCommandList1_GetType(This) \
2718 ( (This)->lpVtbl -> GetType(This) )
2719
2720
2721#define ID3D12VideoProcessCommandList1_Close(This) \
2722 ( (This)->lpVtbl -> Close(This) )
2723
2724#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2725 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2726
2727#define ID3D12VideoProcessCommandList1_ClearState(This) \
2728 ( (This)->lpVtbl -> ClearState(This) )
2729
2730#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2731 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2732
2733#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2734 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2735
2736#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2737 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2738
2739#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2740 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2741
2742#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2743 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2744
2745#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2746 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2747
2748#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2749 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2750
2751#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2752 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2753
2754#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2755 ( (This)->lpVtbl -> EndEvent(This) )
2756
2757#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2758 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2759
2760#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2761 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2762
2763
2764#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2765 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2766
2767#endif /* COBJMACROS */
2768
2769
2770#endif /* C style interface */
2771
2772
2773
2774
2775#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2776
2777
2778/* interface __MIDL_itf_d3d12video_0000_0008 */
2779/* [local] */
2780
2781typedef
2782enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2783 {
2784 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2785 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2786 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2787
2788typedef
2789enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2790 {
2791 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2792 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2793 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2794 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2795
2796DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797typedef
2798enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2799 {
2800 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2801 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2802
2803typedef
2804enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2805 {
2806 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2807 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2808 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2809
2810DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2812 {
2813 UINT NodeIndex;
2814 BOOL VideoDecodeSupport;
2815 BOOL VideoProcessSupport;
2816 BOOL VideoEncodeSupport;
2817 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2818
2819typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2820 {
2821 UINT NodeIndex;
2822 DXGI_FORMAT InputFormat;
2823 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2824 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2825 D3D12_VIDEO_SIZE_RANGE SizeRange;
2826 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2827
2828typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2829 {
2830 UINT NodeIndex;
2831 DXGI_FORMAT InputFormat;
2832 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2833 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2834 D3D12_VIDEO_SIZE_RANGE SizeRange;
2835 BOOL Protected;
2836 UINT64 MotionVectorHeapMemoryPoolL0Size;
2837 UINT64 MotionVectorHeapMemoryPoolL1Size;
2838 UINT64 MotionEstimatorMemoryPoolL0Size;
2839 UINT64 MotionEstimatorMemoryPoolL1Size;
2840 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2841
2842typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2843 {
2844 UINT NodeMask;
2845 DXGI_FORMAT InputFormat;
2846 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2847 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2848 D3D12_VIDEO_SIZE_RANGE SizeRange;
2849 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2850
2851
2852
2853extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2855
2856#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2857#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2858
2859/* interface ID3D12VideoMotionEstimator */
2860/* [unique][local][object][uuid] */
2861
2862
2863EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2864
2865#if defined(__cplusplus) && !defined(CINTERFACE)
2866
2867 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2868 ID3D12VideoMotionEstimator : public ID3D12Pageable
2869 {
2870 public:
2871#if defined(_MSC_VER) || !defined(_WIN32)
2872 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2873#else
2874 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
2875 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
2876#endif
2877
2878 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2879 REFIID riid,
2880 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2881
2882 };
2883
2884
2885#else /* C style interface */
2886
2887 typedef struct ID3D12VideoMotionEstimatorVtbl
2888 {
2889 BEGIN_INTERFACE
2890
2891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2893 ID3D12VideoMotionEstimator * This,
2894 REFIID riid,
2895 _COM_Outptr_ void **ppvObject);
2896
2897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2898 ULONG ( STDMETHODCALLTYPE *AddRef )(
2899 ID3D12VideoMotionEstimator * This);
2900
2901 DECLSPEC_XFGVIRT(IUnknown, Release)
2902 ULONG ( STDMETHODCALLTYPE *Release )(
2903 ID3D12VideoMotionEstimator * This);
2904
2905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2907 ID3D12VideoMotionEstimator * This,
2908 _In_ REFGUID guid,
2909 _Inout_ UINT *pDataSize,
2910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2911
2912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2914 ID3D12VideoMotionEstimator * This,
2915 _In_ REFGUID guid,
2916 _In_ UINT DataSize,
2917 _In_reads_bytes_opt_( DataSize ) const void *pData);
2918
2919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2921 ID3D12VideoMotionEstimator * This,
2922 _In_ REFGUID guid,
2923 _In_opt_ const IUnknown *pData);
2924
2925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2926 HRESULT ( STDMETHODCALLTYPE *SetName )(
2927 ID3D12VideoMotionEstimator * This,
2928 _In_z_ LPCWSTR Name);
2929
2930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2932 ID3D12VideoMotionEstimator * This,
2933 REFIID riid,
2934 _COM_Outptr_opt_ void **ppvDevice);
2935
2936 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2937#if !defined(_WIN32)
2938 D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
2939 ID3D12VideoMotionEstimator * This);
2940
2941#else
2942 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2943 ID3D12VideoMotionEstimator * This,
2944 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2945
2946#endif
2947
2948 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2949 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2950 ID3D12VideoMotionEstimator * This,
2951 REFIID riid,
2952 _COM_Outptr_opt_ void **ppProtectedSession);
2953
2954 END_INTERFACE
2955 } ID3D12VideoMotionEstimatorVtbl;
2956
2957 interface ID3D12VideoMotionEstimator
2958 {
2959 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2960 };
2961
2962
2963
2964#ifdef COBJMACROS
2965
2966
2967#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2968 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2969
2970#define ID3D12VideoMotionEstimator_AddRef(This) \
2971 ( (This)->lpVtbl -> AddRef(This) )
2972
2973#define ID3D12VideoMotionEstimator_Release(This) \
2974 ( (This)->lpVtbl -> Release(This) )
2975
2976
2977#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2978 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2979
2980#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2981 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2982
2983#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2984 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2985
2986#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2987 ( (This)->lpVtbl -> SetName(This,Name) )
2988
2989
2990#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2991 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2992
2993
2994#if !defined(_WIN32)
2995
2996#define ID3D12VideoMotionEstimator_GetDesc(This) \
2997 ( (This)->lpVtbl -> GetDesc(This) )
2998#else
2999#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001#endif
3002
3003#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3004 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3005
3006#endif /* COBJMACROS */
3007
3008
3009#endif /* C style interface */
3010
3011
3012
3013
3014#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
3015
3016
3017/* interface __MIDL_itf_d3d12video_0000_0009 */
3018/* [local] */
3019
3020typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
3021 {
3022 UINT NodeMask;
3023 DXGI_FORMAT InputFormat;
3024 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
3025 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
3026 D3D12_VIDEO_SIZE_RANGE SizeRange;
3027 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
3028
3029
3030
3031extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
3033
3034#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3035#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3036
3037/* interface ID3D12VideoMotionVectorHeap */
3038/* [unique][local][object][uuid] */
3039
3040
3041EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
3042
3043#if defined(__cplusplus) && !defined(CINTERFACE)
3044
3045 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
3046 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
3047 {
3048 public:
3049#if defined(_MSC_VER) || !defined(_WIN32)
3050 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
3051#else
3052 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
3053 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
3054#endif
3055
3056 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3057 REFIID riid,
3058 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3059
3060 };
3061
3062
3063#else /* C style interface */
3064
3065 typedef struct ID3D12VideoMotionVectorHeapVtbl
3066 {
3067 BEGIN_INTERFACE
3068
3069 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3070 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3071 ID3D12VideoMotionVectorHeap * This,
3072 REFIID riid,
3073 _COM_Outptr_ void **ppvObject);
3074
3075 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3076 ULONG ( STDMETHODCALLTYPE *AddRef )(
3077 ID3D12VideoMotionVectorHeap * This);
3078
3079 DECLSPEC_XFGVIRT(IUnknown, Release)
3080 ULONG ( STDMETHODCALLTYPE *Release )(
3081 ID3D12VideoMotionVectorHeap * This);
3082
3083 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3084 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3085 ID3D12VideoMotionVectorHeap * This,
3086 _In_ REFGUID guid,
3087 _Inout_ UINT *pDataSize,
3088 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3089
3090 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3091 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3092 ID3D12VideoMotionVectorHeap * This,
3093 _In_ REFGUID guid,
3094 _In_ UINT DataSize,
3095 _In_reads_bytes_opt_( DataSize ) const void *pData);
3096
3097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3098 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3099 ID3D12VideoMotionVectorHeap * This,
3100 _In_ REFGUID guid,
3101 _In_opt_ const IUnknown *pData);
3102
3103 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3104 HRESULT ( STDMETHODCALLTYPE *SetName )(
3105 ID3D12VideoMotionVectorHeap * This,
3106 _In_z_ LPCWSTR Name);
3107
3108 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3109 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3110 ID3D12VideoMotionVectorHeap * This,
3111 REFIID riid,
3112 _COM_Outptr_opt_ void **ppvDevice);
3113
3114 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
3115#if !defined(_WIN32)
3116 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
3117 ID3D12VideoMotionVectorHeap * This);
3118
3119#else
3120 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3121 ID3D12VideoMotionVectorHeap * This,
3122 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
3123
3124#endif
3125
3126 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
3127 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3128 ID3D12VideoMotionVectorHeap * This,
3129 REFIID riid,
3130 _COM_Outptr_opt_ void **ppProtectedSession);
3131
3132 END_INTERFACE
3133 } ID3D12VideoMotionVectorHeapVtbl;
3134
3135 interface ID3D12VideoMotionVectorHeap
3136 {
3137 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
3138 };
3139
3140
3141
3142#ifdef COBJMACROS
3143
3144
3145#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
3146 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3147
3148#define ID3D12VideoMotionVectorHeap_AddRef(This) \
3149 ( (This)->lpVtbl -> AddRef(This) )
3150
3151#define ID3D12VideoMotionVectorHeap_Release(This) \
3152 ( (This)->lpVtbl -> Release(This) )
3153
3154
3155#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
3156 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3157
3158#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
3159 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3160
3161#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
3162 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3163
3164#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
3165 ( (This)->lpVtbl -> SetName(This,Name) )
3166
3167
3168#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
3169 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3170
3171
3172#if !defined(_WIN32)
3173
3174#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
3175 ( (This)->lpVtbl -> GetDesc(This) )
3176#else
3177#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3178 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3179#endif
3180
3181#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3182 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3183
3184#endif /* COBJMACROS */
3185
3186
3187#endif /* C style interface */
3188
3189
3190
3191
3192#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3193
3194
3195#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3196#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3197
3198/* interface ID3D12VideoDevice1 */
3199/* [unique][local][object][uuid] */
3200
3201
3202EXTERN_C const IID IID_ID3D12VideoDevice1;
3203
3204#if defined(__cplusplus) && !defined(CINTERFACE)
3205
3206 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3207 ID3D12VideoDevice1 : public ID3D12VideoDevice
3208 {
3209 public:
3210 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3211 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3212 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3213 _In_ REFIID riid,
3214 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3215
3216 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3217 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3219 _In_ REFIID riid,
3220 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3221
3222 };
3223
3224
3225#else /* C style interface */
3226
3227 typedef struct ID3D12VideoDevice1Vtbl
3228 {
3229 BEGIN_INTERFACE
3230
3231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3233 ID3D12VideoDevice1 * This,
3234 REFIID riid,
3235 _COM_Outptr_ void **ppvObject);
3236
3237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3238 ULONG ( STDMETHODCALLTYPE *AddRef )(
3239 ID3D12VideoDevice1 * This);
3240
3241 DECLSPEC_XFGVIRT(IUnknown, Release)
3242 ULONG ( STDMETHODCALLTYPE *Release )(
3243 ID3D12VideoDevice1 * This);
3244
3245 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3246 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3247 ID3D12VideoDevice1 * This,
3248 D3D12_FEATURE_VIDEO FeatureVideo,
3249 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3250 UINT FeatureSupportDataSize);
3251
3252 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3253 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3254 ID3D12VideoDevice1 * This,
3255 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3256 _In_ REFIID riid,
3257 _COM_Outptr_ void **ppVideoDecoder);
3258
3259 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3260 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3261 ID3D12VideoDevice1 * This,
3262 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3263 _In_ REFIID riid,
3264 _COM_Outptr_ void **ppVideoDecoderHeap);
3265
3266 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3267 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3268 ID3D12VideoDevice1 * This,
3269 UINT NodeMask,
3270 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3271 UINT NumInputStreamDescs,
3272 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3273 _In_ REFIID riid,
3274 _COM_Outptr_ void **ppVideoProcessor);
3275
3276 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3277 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3278 ID3D12VideoDevice1 * This,
3279 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3280 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3281 _In_ REFIID riid,
3282 _COM_Outptr_ void **ppVideoMotionEstimator);
3283
3284 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3285 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3286 ID3D12VideoDevice1 * This,
3287 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3288 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3289 _In_ REFIID riid,
3290 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3291
3292 END_INTERFACE
3293 } ID3D12VideoDevice1Vtbl;
3294
3295 interface ID3D12VideoDevice1
3296 {
3297 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3298 };
3299
3300
3301
3302#ifdef COBJMACROS
3303
3304
3305#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3306 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3307
3308#define ID3D12VideoDevice1_AddRef(This) \
3309 ( (This)->lpVtbl -> AddRef(This) )
3310
3311#define ID3D12VideoDevice1_Release(This) \
3312 ( (This)->lpVtbl -> Release(This) )
3313
3314
3315#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3316 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3317
3318#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3319 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3320
3321#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3322 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3323
3324#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3325 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3326
3327
3328#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3329 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3330
3331#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3332 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3333
3334#endif /* COBJMACROS */
3335
3336
3337#endif /* C style interface */
3338
3339
3340
3341
3342#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3343
3344
3345/* interface __MIDL_itf_d3d12video_0000_0011 */
3346/* [local] */
3347
3348typedef struct D3D12_RESOURCE_COORDINATE
3349 {
3350 UINT64 X;
3351 UINT Y;
3352 UINT Z;
3353 UINT SubresourceIndex;
3354 } D3D12_RESOURCE_COORDINATE;
3355
3356typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357 {
3358 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3362 {
3363 ID3D12Resource *pInputTexture2D;
3364 UINT InputSubresourceIndex;
3365 ID3D12Resource *pReferenceTexture2D;
3366 UINT ReferenceSubresourceIndex;
3367 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3368 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3369
3370typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3371 {
3372 ID3D12Resource *pMotionVectorTexture2D;
3373 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3374 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3375
3376typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3377 {
3378 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3379 UINT PixelWidth;
3380 UINT PixelHeight;
3381 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3382
3383
3384
3385extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3387
3388#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3389#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3390
3391/* interface ID3D12VideoEncodeCommandList */
3392/* [unique][local][object][uuid] */
3393
3394
3395EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3396
3397#if defined(__cplusplus) && !defined(CINTERFACE)
3398
3399 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3400 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3401 {
3402 public:
3403 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3404
3405 virtual HRESULT STDMETHODCALLTYPE Reset(
3406 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3407
3408 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3409
3410 virtual void STDMETHODCALLTYPE ResourceBarrier(
3411 _In_ UINT NumBarriers,
3412 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3413
3414 virtual void STDMETHODCALLTYPE DiscardResource(
3415 _In_ ID3D12Resource *pResource,
3416 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3417
3418 virtual void STDMETHODCALLTYPE BeginQuery(
3419 _In_ ID3D12QueryHeap *pQueryHeap,
3420 _In_ D3D12_QUERY_TYPE Type,
3421 _In_ UINT Index) = 0;
3422
3423 virtual void STDMETHODCALLTYPE EndQuery(
3424 _In_ ID3D12QueryHeap *pQueryHeap,
3425 _In_ D3D12_QUERY_TYPE Type,
3426 _In_ UINT Index) = 0;
3427
3428 virtual void STDMETHODCALLTYPE ResolveQueryData(
3429 _In_ ID3D12QueryHeap *pQueryHeap,
3430 _In_ D3D12_QUERY_TYPE Type,
3431 _In_ UINT StartIndex,
3432 _In_ UINT NumQueries,
3433 _In_ ID3D12Resource *pDestinationBuffer,
3434 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3435
3436 virtual void STDMETHODCALLTYPE SetPredication(
3437 _In_opt_ ID3D12Resource *pBuffer,
3438 _In_ UINT64 AlignedBufferOffset,
3439 _In_ D3D12_PREDICATION_OP Operation) = 0;
3440
3441 virtual void STDMETHODCALLTYPE SetMarker(
3442 UINT Metadata,
3443 _In_reads_bytes_opt_(Size) const void *pData,
3444 UINT Size) = 0;
3445
3446 virtual void STDMETHODCALLTYPE BeginEvent(
3447 UINT Metadata,
3448 _In_reads_bytes_opt_(Size) const void *pData,
3449 UINT Size) = 0;
3450
3451 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3452
3453 virtual void STDMETHODCALLTYPE EstimateMotion(
3454 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3455 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3456 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3457
3458 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3459 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3460 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3461
3462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3463 UINT Count,
3464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3466
3467 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3468 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3469
3470 };
3471
3472
3473#else /* C style interface */
3474
3475 typedef struct ID3D12VideoEncodeCommandListVtbl
3476 {
3477 BEGIN_INTERFACE
3478
3479 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3480 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3481 ID3D12VideoEncodeCommandList * This,
3482 REFIID riid,
3483 _COM_Outptr_ void **ppvObject);
3484
3485 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3486 ULONG ( STDMETHODCALLTYPE *AddRef )(
3487 ID3D12VideoEncodeCommandList * This);
3488
3489 DECLSPEC_XFGVIRT(IUnknown, Release)
3490 ULONG ( STDMETHODCALLTYPE *Release )(
3491 ID3D12VideoEncodeCommandList * This);
3492
3493 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3494 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3495 ID3D12VideoEncodeCommandList * This,
3496 _In_ REFGUID guid,
3497 _Inout_ UINT *pDataSize,
3498 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3499
3500 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3501 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3502 ID3D12VideoEncodeCommandList * This,
3503 _In_ REFGUID guid,
3504 _In_ UINT DataSize,
3505 _In_reads_bytes_opt_( DataSize ) const void *pData);
3506
3507 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3508 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3509 ID3D12VideoEncodeCommandList * This,
3510 _In_ REFGUID guid,
3511 _In_opt_ const IUnknown *pData);
3512
3513 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3514 HRESULT ( STDMETHODCALLTYPE *SetName )(
3515 ID3D12VideoEncodeCommandList * This,
3516 _In_z_ LPCWSTR Name);
3517
3518 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3519 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3520 ID3D12VideoEncodeCommandList * This,
3521 REFIID riid,
3522 _COM_Outptr_opt_ void **ppvDevice);
3523
3524 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3525 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3526 ID3D12VideoEncodeCommandList * This);
3527
3528 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3529 HRESULT ( STDMETHODCALLTYPE *Close )(
3530 ID3D12VideoEncodeCommandList * This);
3531
3532 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3533 HRESULT ( STDMETHODCALLTYPE *Reset )(
3534 ID3D12VideoEncodeCommandList * This,
3535 _In_ ID3D12CommandAllocator *pAllocator);
3536
3537 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3538 void ( STDMETHODCALLTYPE *ClearState )(
3539 ID3D12VideoEncodeCommandList * This);
3540
3541 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3542 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3543 ID3D12VideoEncodeCommandList * This,
3544 _In_ UINT NumBarriers,
3545 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3546
3547 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3548 void ( STDMETHODCALLTYPE *DiscardResource )(
3549 ID3D12VideoEncodeCommandList * This,
3550 _In_ ID3D12Resource *pResource,
3551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3552
3553 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3554 void ( STDMETHODCALLTYPE *BeginQuery )(
3555 ID3D12VideoEncodeCommandList * This,
3556 _In_ ID3D12QueryHeap *pQueryHeap,
3557 _In_ D3D12_QUERY_TYPE Type,
3558 _In_ UINT Index);
3559
3560 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3561 void ( STDMETHODCALLTYPE *EndQuery )(
3562 ID3D12VideoEncodeCommandList * This,
3563 _In_ ID3D12QueryHeap *pQueryHeap,
3564 _In_ D3D12_QUERY_TYPE Type,
3565 _In_ UINT Index);
3566
3567 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3569 ID3D12VideoEncodeCommandList * This,
3570 _In_ ID3D12QueryHeap *pQueryHeap,
3571 _In_ D3D12_QUERY_TYPE Type,
3572 _In_ UINT StartIndex,
3573 _In_ UINT NumQueries,
3574 _In_ ID3D12Resource *pDestinationBuffer,
3575 _In_ UINT64 AlignedDestinationBufferOffset);
3576
3577 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3578 void ( STDMETHODCALLTYPE *SetPredication )(
3579 ID3D12VideoEncodeCommandList * This,
3580 _In_opt_ ID3D12Resource *pBuffer,
3581 _In_ UINT64 AlignedBufferOffset,
3582 _In_ D3D12_PREDICATION_OP Operation);
3583
3584 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3585 void ( STDMETHODCALLTYPE *SetMarker )(
3586 ID3D12VideoEncodeCommandList * This,
3587 UINT Metadata,
3588 _In_reads_bytes_opt_(Size) const void *pData,
3589 UINT Size);
3590
3591 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3592 void ( STDMETHODCALLTYPE *BeginEvent )(
3593 ID3D12VideoEncodeCommandList * This,
3594 UINT Metadata,
3595 _In_reads_bytes_opt_(Size) const void *pData,
3596 UINT Size);
3597
3598 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3599 void ( STDMETHODCALLTYPE *EndEvent )(
3600 ID3D12VideoEncodeCommandList * This);
3601
3602 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3603 void ( STDMETHODCALLTYPE *EstimateMotion )(
3604 ID3D12VideoEncodeCommandList * This,
3605 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3606 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3607 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3608
3609 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3610 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3611 ID3D12VideoEncodeCommandList * This,
3612 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3613 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3614
3615 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3616 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3617 ID3D12VideoEncodeCommandList * This,
3618 UINT Count,
3619 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3620 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3621
3622 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3623 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3624 ID3D12VideoEncodeCommandList * This,
3625 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3626
3627 END_INTERFACE
3628 } ID3D12VideoEncodeCommandListVtbl;
3629
3630 interface ID3D12VideoEncodeCommandList
3631 {
3632 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3633 };
3634
3635
3636
3637#ifdef COBJMACROS
3638
3639
3640#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3641 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3642
3643#define ID3D12VideoEncodeCommandList_AddRef(This) \
3644 ( (This)->lpVtbl -> AddRef(This) )
3645
3646#define ID3D12VideoEncodeCommandList_Release(This) \
3647 ( (This)->lpVtbl -> Release(This) )
3648
3649
3650#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3651 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3652
3653#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3654 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3655
3656#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3657 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3658
3659#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3660 ( (This)->lpVtbl -> SetName(This,Name) )
3661
3662
3663#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3664 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3665
3666
3667#define ID3D12VideoEncodeCommandList_GetType(This) \
3668 ( (This)->lpVtbl -> GetType(This) )
3669
3670
3671#define ID3D12VideoEncodeCommandList_Close(This) \
3672 ( (This)->lpVtbl -> Close(This) )
3673
3674#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3675 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3676
3677#define ID3D12VideoEncodeCommandList_ClearState(This) \
3678 ( (This)->lpVtbl -> ClearState(This) )
3679
3680#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3681 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3682
3683#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3684 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3685
3686#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3687 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3688
3689#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3690 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3691
3692#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3693 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3694
3695#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3696 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3697
3698#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3699 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3700
3701#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3702 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3703
3704#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3705 ( (This)->lpVtbl -> EndEvent(This) )
3706
3707#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3708 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3709
3710#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3711 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3712
3713#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3714 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3715
3716#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3717 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3718
3719#endif /* COBJMACROS */
3720
3721
3722#endif /* C style interface */
3723
3724
3725
3726
3727#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3728
3729
3730/* interface __MIDL_itf_d3d12video_0000_0012 */
3731/* [local] */
3732
3733typedef
3734enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3735 {
3736 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3737 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3738 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3739
3740DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3742 {
3743 UINT NodeIndex;
3744 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3745 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3746 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3747
3748typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3749 {
3750 UINT NodeIndex;
3751 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3752 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3753
3754typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3755 {
3756 UINT NodeIndex;
3757 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3758 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3759
3760typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3761 {
3762 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3763 BOOL Protected;
3764 UINT64 MemoryPoolL0Size;
3765 UINT64 MemoryPoolL1Size;
3766 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3767
3768typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3769 {
3770 UINT NodeMask;
3771 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3772 UINT NumInputStreamDescs;
3773 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3774 BOOL Protected;
3775 UINT64 MemoryPoolL0Size;
3776 UINT64 MemoryPoolL1Size;
3777 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3778
3779typedef
3780enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3781 {
3782 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3783 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3784 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3785 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3786 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3787 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3788 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3789 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3790
3791typedef
3792enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3793 {
3794 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3795 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3796 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3797 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3798 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3799 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3800 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3801 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3802 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3803 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3804 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3805 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3806
3807typedef
3808enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3809 {
3810 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3811 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3812 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3813 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3814
3815DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817 {
3818 UINT NodeIndex;
3819 UINT CommandCount;
3820 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3823 {
3824 GUID CommandId;
3825 LPCWSTR Name;
3826 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3827 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3828
3829typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3830 {
3831 UINT NodeIndex;
3832 UINT CommandCount;
3833 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3834 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3835
3836typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3837 {
3838 GUID CommandId;
3839 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3840 UINT ParameterCount;
3841 UINT ParameterPacking;
3842 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3843
3844typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3845 {
3846 LPCWSTR Name;
3847 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3848 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3849 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3850
3851typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3852 {
3853 GUID CommandId;
3854 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3855 UINT ParameterCount;
3856 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3857 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3858
3859typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3860 {
3861 UINT NodeIndex;
3862 GUID CommandId;
3863 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3864 SIZE_T InputDataSizeInBytes;
3865 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3866 SIZE_T OutputDataSizeInBytes;
3867 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3868
3869typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3870 {
3871 UINT NodeIndex;
3872 GUID CommandId;
3873 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3874 SIZE_T CreationParametersSizeInBytes;
3875 UINT64 MemoryPoolL0Size;
3876 UINT64 MemoryPoolL1Size;
3877 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3878
3879typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880 {
3881 UINT NodeMask;
3882 GUID CommandId;
3883 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3889
3890#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3891#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3892
3893/* interface ID3D12VideoDecoder1 */
3894/* [unique][local][object][uuid] */
3895
3896
3897EXTERN_C const IID IID_ID3D12VideoDecoder1;
3898
3899#if defined(__cplusplus) && !defined(CINTERFACE)
3900
3901 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3902 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3903 {
3904 public:
3905 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3906 REFIID riid,
3907 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3908
3909 };
3910
3911
3912#else /* C style interface */
3913
3914 typedef struct ID3D12VideoDecoder1Vtbl
3915 {
3916 BEGIN_INTERFACE
3917
3918 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3919 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3920 ID3D12VideoDecoder1 * This,
3921 REFIID riid,
3922 _COM_Outptr_ void **ppvObject);
3923
3924 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3925 ULONG ( STDMETHODCALLTYPE *AddRef )(
3926 ID3D12VideoDecoder1 * This);
3927
3928 DECLSPEC_XFGVIRT(IUnknown, Release)
3929 ULONG ( STDMETHODCALLTYPE *Release )(
3930 ID3D12VideoDecoder1 * This);
3931
3932 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3933 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3934 ID3D12VideoDecoder1 * This,
3935 _In_ REFGUID guid,
3936 _Inout_ UINT *pDataSize,
3937 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3938
3939 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3940 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3941 ID3D12VideoDecoder1 * This,
3942 _In_ REFGUID guid,
3943 _In_ UINT DataSize,
3944 _In_reads_bytes_opt_( DataSize ) const void *pData);
3945
3946 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3947 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3948 ID3D12VideoDecoder1 * This,
3949 _In_ REFGUID guid,
3950 _In_opt_ const IUnknown *pData);
3951
3952 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3953 HRESULT ( STDMETHODCALLTYPE *SetName )(
3954 ID3D12VideoDecoder1 * This,
3955 _In_z_ LPCWSTR Name);
3956
3957 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3958 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3959 ID3D12VideoDecoder1 * This,
3960 REFIID riid,
3961 _COM_Outptr_opt_ void **ppvDevice);
3962
3963 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3964#if !defined(_WIN32)
3965 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
3966 ID3D12VideoDecoder1 * This);
3967
3968#else
3969 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3970 ID3D12VideoDecoder1 * This,
3971 D3D12_VIDEO_DECODER_DESC * RetVal);
3972
3973#endif
3974
3975 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3976 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3977 ID3D12VideoDecoder1 * This,
3978 REFIID riid,
3979 _COM_Outptr_opt_ void **ppProtectedSession);
3980
3981 END_INTERFACE
3982 } ID3D12VideoDecoder1Vtbl;
3983
3984 interface ID3D12VideoDecoder1
3985 {
3986 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3987 };
3988
3989
3990
3991#ifdef COBJMACROS
3992
3993
3994#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3995 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3996
3997#define ID3D12VideoDecoder1_AddRef(This) \
3998 ( (This)->lpVtbl -> AddRef(This) )
3999
4000#define ID3D12VideoDecoder1_Release(This) \
4001 ( (This)->lpVtbl -> Release(This) )
4002
4003
4004#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
4005 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4006
4007#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
4008 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4009
4010#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
4011 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4012
4013#define ID3D12VideoDecoder1_SetName(This,Name) \
4014 ( (This)->lpVtbl -> SetName(This,Name) )
4015
4016
4017#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
4018 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4019
4020
4021#if !defined(_WIN32)
4022
4023#define ID3D12VideoDecoder1_GetDesc(This) \
4024 ( (This)->lpVtbl -> GetDesc(This) )
4025#else
4026#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
4027 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4028#endif
4029
4030
4031#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4032 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4033
4034#endif /* COBJMACROS */
4035
4036
4037#endif /* C style interface */
4038
4039
4040
4041
4042#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
4043
4044
4045#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4046#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4047
4048/* interface ID3D12VideoDecoderHeap1 */
4049/* [unique][local][object][uuid] */
4050
4051
4052EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
4053
4054#if defined(__cplusplus) && !defined(CINTERFACE)
4055
4056 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
4057 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
4058 {
4059 public:
4060 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4061 REFIID riid,
4062 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4063
4064 };
4065
4066
4067#else /* C style interface */
4068
4069 typedef struct ID3D12VideoDecoderHeap1Vtbl
4070 {
4071 BEGIN_INTERFACE
4072
4073 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4074 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4075 ID3D12VideoDecoderHeap1 * This,
4076 REFIID riid,
4077 _COM_Outptr_ void **ppvObject);
4078
4079 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4080 ULONG ( STDMETHODCALLTYPE *AddRef )(
4081 ID3D12VideoDecoderHeap1 * This);
4082
4083 DECLSPEC_XFGVIRT(IUnknown, Release)
4084 ULONG ( STDMETHODCALLTYPE *Release )(
4085 ID3D12VideoDecoderHeap1 * This);
4086
4087 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4088 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4089 ID3D12VideoDecoderHeap1 * This,
4090 _In_ REFGUID guid,
4091 _Inout_ UINT *pDataSize,
4092 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4093
4094 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4095 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4096 ID3D12VideoDecoderHeap1 * This,
4097 _In_ REFGUID guid,
4098 _In_ UINT DataSize,
4099 _In_reads_bytes_opt_( DataSize ) const void *pData);
4100
4101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4102 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4103 ID3D12VideoDecoderHeap1 * This,
4104 _In_ REFGUID guid,
4105 _In_opt_ const IUnknown *pData);
4106
4107 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4108 HRESULT ( STDMETHODCALLTYPE *SetName )(
4109 ID3D12VideoDecoderHeap1 * This,
4110 _In_z_ LPCWSTR Name);
4111
4112 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4113 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4114 ID3D12VideoDecoderHeap1 * This,
4115 REFIID riid,
4116 _COM_Outptr_opt_ void **ppvDevice);
4117
4118 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
4119#if !defined(_WIN32)
4120 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4121 ID3D12VideoDecoderHeap1 * This);
4122
4123#else
4124 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4125 ID3D12VideoDecoderHeap1 * This,
4126 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
4127
4128#endif
4129
4130 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
4131 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4132 ID3D12VideoDecoderHeap1 * This,
4133 REFIID riid,
4134 _COM_Outptr_opt_ void **ppProtectedSession);
4135
4136 END_INTERFACE
4137 } ID3D12VideoDecoderHeap1Vtbl;
4138
4139 interface ID3D12VideoDecoderHeap1
4140 {
4141 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
4142 };
4143
4144
4145
4146#ifdef COBJMACROS
4147
4148
4149#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
4150 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4151
4152#define ID3D12VideoDecoderHeap1_AddRef(This) \
4153 ( (This)->lpVtbl -> AddRef(This) )
4154
4155#define ID3D12VideoDecoderHeap1_Release(This) \
4156 ( (This)->lpVtbl -> Release(This) )
4157
4158
4159#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
4160 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4161
4162#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
4163 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4164
4165#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
4166 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4167
4168#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
4169 ( (This)->lpVtbl -> SetName(This,Name) )
4170
4171
4172#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
4173 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4174
4175
4176#if !defined(_WIN32)
4177
4178#define ID3D12VideoDecoderHeap1_GetDesc(This) \
4179 ( (This)->lpVtbl -> GetDesc(This) )
4180#else
4181#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
4182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4183#endif
4184
4185
4186#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4187 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4188
4189#endif /* COBJMACROS */
4190
4191
4192#endif /* C style interface */
4193
4194
4195
4196
4197#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
4198
4199
4200#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4201#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4202
4203/* interface ID3D12VideoProcessor1 */
4204/* [unique][local][object][uuid] */
4205
4206
4207EXTERN_C const IID IID_ID3D12VideoProcessor1;
4208
4209#if defined(__cplusplus) && !defined(CINTERFACE)
4210
4211 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4212 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4213 {
4214 public:
4215 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4216 REFIID riid,
4217 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4218
4219 };
4220
4221
4222#else /* C style interface */
4223
4224 typedef struct ID3D12VideoProcessor1Vtbl
4225 {
4226 BEGIN_INTERFACE
4227
4228 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4229 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4230 ID3D12VideoProcessor1 * This,
4231 REFIID riid,
4232 _COM_Outptr_ void **ppvObject);
4233
4234 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4235 ULONG ( STDMETHODCALLTYPE *AddRef )(
4236 ID3D12VideoProcessor1 * This);
4237
4238 DECLSPEC_XFGVIRT(IUnknown, Release)
4239 ULONG ( STDMETHODCALLTYPE *Release )(
4240 ID3D12VideoProcessor1 * This);
4241
4242 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4243 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4244 ID3D12VideoProcessor1 * This,
4245 _In_ REFGUID guid,
4246 _Inout_ UINT *pDataSize,
4247 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4248
4249 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4250 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4251 ID3D12VideoProcessor1 * This,
4252 _In_ REFGUID guid,
4253 _In_ UINT DataSize,
4254 _In_reads_bytes_opt_( DataSize ) const void *pData);
4255
4256 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4257 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4258 ID3D12VideoProcessor1 * This,
4259 _In_ REFGUID guid,
4260 _In_opt_ const IUnknown *pData);
4261
4262 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4263 HRESULT ( STDMETHODCALLTYPE *SetName )(
4264 ID3D12VideoProcessor1 * This,
4265 _In_z_ LPCWSTR Name);
4266
4267 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4268 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4269 ID3D12VideoProcessor1 * This,
4270 REFIID riid,
4271 _COM_Outptr_opt_ void **ppvDevice);
4272
4273 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4274 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4275 ID3D12VideoProcessor1 * This);
4276
4277 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4278 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4279 ID3D12VideoProcessor1 * This);
4280
4281 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4282 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4283 ID3D12VideoProcessor1 * This,
4284 UINT NumInputStreamDescs,
4285 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4286
4287 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4288#if !defined(_WIN32)
4289 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4290 ID3D12VideoProcessor1 * This);
4291
4292#else
4293 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4294 ID3D12VideoProcessor1 * This,
4295 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4296
4297#endif
4298
4299 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4300 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4301 ID3D12VideoProcessor1 * This,
4302 REFIID riid,
4303 _COM_Outptr_opt_ void **ppProtectedSession);
4304
4305 END_INTERFACE
4306 } ID3D12VideoProcessor1Vtbl;
4307
4308 interface ID3D12VideoProcessor1
4309 {
4310 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4311 };
4312
4313
4314
4315#ifdef COBJMACROS
4316
4317
4318#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4320
4321#define ID3D12VideoProcessor1_AddRef(This) \
4322 ( (This)->lpVtbl -> AddRef(This) )
4323
4324#define ID3D12VideoProcessor1_Release(This) \
4325 ( (This)->lpVtbl -> Release(This) )
4326
4327
4328#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4329 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4330
4331#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4332 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4333
4334#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4335 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4336
4337#define ID3D12VideoProcessor1_SetName(This,Name) \
4338 ( (This)->lpVtbl -> SetName(This,Name) )
4339
4340
4341#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4342 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4343
4344
4345
4346#define ID3D12VideoProcessor1_GetNodeMask(This) \
4347 ( (This)->lpVtbl -> GetNodeMask(This) )
4348
4349#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4350 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4351
4352#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4353 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4354#if !defined(_WIN32)
4355
4356#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
4357 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
4358#else
4359#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4360 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4361#endif
4362
4363
4364#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4365 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4366
4367#endif /* COBJMACROS */
4368
4369
4370#endif /* C style interface */
4371
4372
4373
4374
4375#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4376
4377
4378#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4379#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4380
4381/* interface ID3D12VideoExtensionCommand */
4382/* [unique][local][object][uuid] */
4383
4384
4385EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4386
4387#if defined(__cplusplus) && !defined(CINTERFACE)
4388
4389 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4390 ID3D12VideoExtensionCommand : public ID3D12Pageable
4391 {
4392 public:
4393#if defined(_MSC_VER) || !defined(_WIN32)
4394 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4395#else
4396 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
4397 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
4398#endif
4399
4400 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4401 REFIID riid,
4402 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4403
4404 };
4405
4406
4407#else /* C style interface */
4408
4409 typedef struct ID3D12VideoExtensionCommandVtbl
4410 {
4411 BEGIN_INTERFACE
4412
4413 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4414 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4415 ID3D12VideoExtensionCommand * This,
4416 REFIID riid,
4417 _COM_Outptr_ void **ppvObject);
4418
4419 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4420 ULONG ( STDMETHODCALLTYPE *AddRef )(
4421 ID3D12VideoExtensionCommand * This);
4422
4423 DECLSPEC_XFGVIRT(IUnknown, Release)
4424 ULONG ( STDMETHODCALLTYPE *Release )(
4425 ID3D12VideoExtensionCommand * This);
4426
4427 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4428 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4429 ID3D12VideoExtensionCommand * This,
4430 _In_ REFGUID guid,
4431 _Inout_ UINT *pDataSize,
4432 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4433
4434 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4435 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4436 ID3D12VideoExtensionCommand * This,
4437 _In_ REFGUID guid,
4438 _In_ UINT DataSize,
4439 _In_reads_bytes_opt_( DataSize ) const void *pData);
4440
4441 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4442 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4443 ID3D12VideoExtensionCommand * This,
4444 _In_ REFGUID guid,
4445 _In_opt_ const IUnknown *pData);
4446
4447 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4448 HRESULT ( STDMETHODCALLTYPE *SetName )(
4449 ID3D12VideoExtensionCommand * This,
4450 _In_z_ LPCWSTR Name);
4451
4452 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4453 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4454 ID3D12VideoExtensionCommand * This,
4455 REFIID riid,
4456 _COM_Outptr_opt_ void **ppvDevice);
4457
4458 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4459#if !defined(_WIN32)
4460 D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
4461 ID3D12VideoExtensionCommand * This);
4462
4463#else
4464 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4465 ID3D12VideoExtensionCommand * This,
4466 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4467
4468#endif
4469
4470 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4471 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4472 ID3D12VideoExtensionCommand * This,
4473 REFIID riid,
4474 _COM_Outptr_opt_ void **ppProtectedSession);
4475
4476 END_INTERFACE
4477 } ID3D12VideoExtensionCommandVtbl;
4478
4479 interface ID3D12VideoExtensionCommand
4480 {
4481 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4482 };
4483
4484
4485
4486#ifdef COBJMACROS
4487
4488
4489#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4491
4492#define ID3D12VideoExtensionCommand_AddRef(This) \
4493 ( (This)->lpVtbl -> AddRef(This) )
4494
4495#define ID3D12VideoExtensionCommand_Release(This) \
4496 ( (This)->lpVtbl -> Release(This) )
4497
4498
4499#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4500 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4501
4502#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4503 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4504
4505#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4506 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4507
4508#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4509 ( (This)->lpVtbl -> SetName(This,Name) )
4510
4511
4512#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4513 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4514
4515
4516#if !defined(_WIN32)
4517
4518#define ID3D12VideoExtensionCommand_GetDesc(This) \
4519 ( (This)->lpVtbl -> GetDesc(This) )
4520#else
4521#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4522 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4523#endif
4524
4525#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4526 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4527
4528#endif /* COBJMACROS */
4529
4530
4531#endif /* C style interface */
4532
4533
4534
4535
4536#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4537
4538
4539#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4540#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4541
4542/* interface ID3D12VideoDevice2 */
4543/* [unique][local][object][uuid] */
4544
4545
4546EXTERN_C const IID IID_ID3D12VideoDevice2;
4547
4548#if defined(__cplusplus) && !defined(CINTERFACE)
4549
4550 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4551 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4552 {
4553 public:
4554 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4555 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4556 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4557 _In_ REFIID riid,
4558 _COM_Outptr_ void **ppVideoDecoder) = 0;
4559
4560 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4561 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4562 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4563 _In_ REFIID riid,
4564 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4565
4566 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4567 UINT NodeMask,
4568 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4569 UINT NumInputStreamDescs,
4570 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4571 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4572 _In_ REFIID riid,
4573 _COM_Outptr_ void **ppVideoProcessor) = 0;
4574
4575 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4576 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4577 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4578 SIZE_T CreationParametersDataSizeInBytes,
4579 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4580 _In_ REFIID riid,
4581 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4582
4583 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4584 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4585 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4586 SIZE_T ExecutionParametersSizeInBytes,
4587 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4588 SIZE_T OutputDataSizeInBytes) = 0;
4589
4590 };
4591
4592
4593#else /* C style interface */
4594
4595 typedef struct ID3D12VideoDevice2Vtbl
4596 {
4597 BEGIN_INTERFACE
4598
4599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4601 ID3D12VideoDevice2 * This,
4602 REFIID riid,
4603 _COM_Outptr_ void **ppvObject);
4604
4605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4606 ULONG ( STDMETHODCALLTYPE *AddRef )(
4607 ID3D12VideoDevice2 * This);
4608
4609 DECLSPEC_XFGVIRT(IUnknown, Release)
4610 ULONG ( STDMETHODCALLTYPE *Release )(
4611 ID3D12VideoDevice2 * This);
4612
4613 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4614 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4615 ID3D12VideoDevice2 * This,
4616 D3D12_FEATURE_VIDEO FeatureVideo,
4617 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4618 UINT FeatureSupportDataSize);
4619
4620 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4621 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4622 ID3D12VideoDevice2 * This,
4623 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4624 _In_ REFIID riid,
4625 _COM_Outptr_ void **ppVideoDecoder);
4626
4627 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4628 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4629 ID3D12VideoDevice2 * This,
4630 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4631 _In_ REFIID riid,
4632 _COM_Outptr_ void **ppVideoDecoderHeap);
4633
4634 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4635 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4636 ID3D12VideoDevice2 * This,
4637 UINT NodeMask,
4638 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4639 UINT NumInputStreamDescs,
4640 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4641 _In_ REFIID riid,
4642 _COM_Outptr_ void **ppVideoProcessor);
4643
4644 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4645 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4646 ID3D12VideoDevice2 * This,
4647 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4648 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4649 _In_ REFIID riid,
4650 _COM_Outptr_ void **ppVideoMotionEstimator);
4651
4652 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4653 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4654 ID3D12VideoDevice2 * This,
4655 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4656 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4657 _In_ REFIID riid,
4658 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4659
4660 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4661 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4662 ID3D12VideoDevice2 * This,
4663 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4664 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4665 _In_ REFIID riid,
4666 _COM_Outptr_ void **ppVideoDecoder);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4669 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4670 ID3D12VideoDevice2 * This,
4671 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4672 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4673 _In_ REFIID riid,
4674 _COM_Outptr_ void **ppVideoDecoderHeap);
4675
4676 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4677 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4678 ID3D12VideoDevice2 * This,
4679 UINT NodeMask,
4680 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4681 UINT NumInputStreamDescs,
4682 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4683 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4684 _In_ REFIID riid,
4685 _COM_Outptr_ void **ppVideoProcessor);
4686
4687 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4688 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4689 ID3D12VideoDevice2 * This,
4690 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4691 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4692 SIZE_T CreationParametersDataSizeInBytes,
4693 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4694 _In_ REFIID riid,
4695 _COM_Outptr_ void **ppVideoExtensionCommand);
4696
4697 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4698 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4699 ID3D12VideoDevice2 * This,
4700 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4701 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4702 SIZE_T ExecutionParametersSizeInBytes,
4703 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4704 SIZE_T OutputDataSizeInBytes);
4705
4706 END_INTERFACE
4707 } ID3D12VideoDevice2Vtbl;
4708
4709 interface ID3D12VideoDevice2
4710 {
4711 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4712 };
4713
4714
4715
4716#ifdef COBJMACROS
4717
4718
4719#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4720 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4721
4722#define ID3D12VideoDevice2_AddRef(This) \
4723 ( (This)->lpVtbl -> AddRef(This) )
4724
4725#define ID3D12VideoDevice2_Release(This) \
4726 ( (This)->lpVtbl -> Release(This) )
4727
4728
4729#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4730 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4731
4732#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4733 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4734
4735#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4736 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4737
4738#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4739 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4740
4741
4742#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4743 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4744
4745#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4746 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4747
4748
4749#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4750 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4751
4752#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4753 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4754
4755#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4756 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4757
4758#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4759 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4760
4761#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4762 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4763
4764#endif /* COBJMACROS */
4765
4766
4767#endif /* C style interface */
4768
4769
4770
4771
4772#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4773
4774
4775#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4776#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4777
4778/* interface ID3D12VideoDecodeCommandList2 */
4779/* [unique][local][object][uuid] */
4780
4781
4782EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4783
4784#if defined(__cplusplus) && !defined(CINTERFACE)
4785
4786 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4787 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4788 {
4789 public:
4790 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4791 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4792
4793 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4794 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4795 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4796 SIZE_T InitializationParametersSizeInBytes) = 0;
4797
4798 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4799 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4800 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4801 SIZE_T ExecutionParametersSizeInBytes) = 0;
4802
4803 };
4804
4805
4806#else /* C style interface */
4807
4808 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4809 {
4810 BEGIN_INTERFACE
4811
4812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4814 ID3D12VideoDecodeCommandList2 * This,
4815 REFIID riid,
4816 _COM_Outptr_ void **ppvObject);
4817
4818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4819 ULONG ( STDMETHODCALLTYPE *AddRef )(
4820 ID3D12VideoDecodeCommandList2 * This);
4821
4822 DECLSPEC_XFGVIRT(IUnknown, Release)
4823 ULONG ( STDMETHODCALLTYPE *Release )(
4824 ID3D12VideoDecodeCommandList2 * This);
4825
4826 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4827 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4828 ID3D12VideoDecodeCommandList2 * This,
4829 _In_ REFGUID guid,
4830 _Inout_ UINT *pDataSize,
4831 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4832
4833 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4834 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4835 ID3D12VideoDecodeCommandList2 * This,
4836 _In_ REFGUID guid,
4837 _In_ UINT DataSize,
4838 _In_reads_bytes_opt_( DataSize ) const void *pData);
4839
4840 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4841 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4842 ID3D12VideoDecodeCommandList2 * This,
4843 _In_ REFGUID guid,
4844 _In_opt_ const IUnknown *pData);
4845
4846 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4847 HRESULT ( STDMETHODCALLTYPE *SetName )(
4848 ID3D12VideoDecodeCommandList2 * This,
4849 _In_z_ LPCWSTR Name);
4850
4851 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4852 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4853 ID3D12VideoDecodeCommandList2 * This,
4854 REFIID riid,
4855 _COM_Outptr_opt_ void **ppvDevice);
4856
4857 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4858 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4859 ID3D12VideoDecodeCommandList2 * This);
4860
4861 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4862 HRESULT ( STDMETHODCALLTYPE *Close )(
4863 ID3D12VideoDecodeCommandList2 * This);
4864
4865 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4866 HRESULT ( STDMETHODCALLTYPE *Reset )(
4867 ID3D12VideoDecodeCommandList2 * This,
4868 _In_ ID3D12CommandAllocator *pAllocator);
4869
4870 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4871 void ( STDMETHODCALLTYPE *ClearState )(
4872 ID3D12VideoDecodeCommandList2 * This);
4873
4874 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4875 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4876 ID3D12VideoDecodeCommandList2 * This,
4877 _In_ UINT NumBarriers,
4878 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4879
4880 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4881 void ( STDMETHODCALLTYPE *DiscardResource )(
4882 ID3D12VideoDecodeCommandList2 * This,
4883 _In_ ID3D12Resource *pResource,
4884 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4885
4886 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4887 void ( STDMETHODCALLTYPE *BeginQuery )(
4888 ID3D12VideoDecodeCommandList2 * This,
4889 _In_ ID3D12QueryHeap *pQueryHeap,
4890 _In_ D3D12_QUERY_TYPE Type,
4891 _In_ UINT Index);
4892
4893 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4894 void ( STDMETHODCALLTYPE *EndQuery )(
4895 ID3D12VideoDecodeCommandList2 * This,
4896 _In_ ID3D12QueryHeap *pQueryHeap,
4897 _In_ D3D12_QUERY_TYPE Type,
4898 _In_ UINT Index);
4899
4900 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4901 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4902 ID3D12VideoDecodeCommandList2 * This,
4903 _In_ ID3D12QueryHeap *pQueryHeap,
4904 _In_ D3D12_QUERY_TYPE Type,
4905 _In_ UINT StartIndex,
4906 _In_ UINT NumQueries,
4907 _In_ ID3D12Resource *pDestinationBuffer,
4908 _In_ UINT64 AlignedDestinationBufferOffset);
4909
4910 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4911 void ( STDMETHODCALLTYPE *SetPredication )(
4912 ID3D12VideoDecodeCommandList2 * This,
4913 _In_opt_ ID3D12Resource *pBuffer,
4914 _In_ UINT64 AlignedBufferOffset,
4915 _In_ D3D12_PREDICATION_OP Operation);
4916
4917 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4918 void ( STDMETHODCALLTYPE *SetMarker )(
4919 ID3D12VideoDecodeCommandList2 * This,
4920 UINT Metadata,
4921 _In_reads_bytes_opt_(Size) const void *pData,
4922 UINT Size);
4923
4924 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4925 void ( STDMETHODCALLTYPE *BeginEvent )(
4926 ID3D12VideoDecodeCommandList2 * This,
4927 UINT Metadata,
4928 _In_reads_bytes_opt_(Size) const void *pData,
4929 UINT Size);
4930
4931 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4932 void ( STDMETHODCALLTYPE *EndEvent )(
4933 ID3D12VideoDecodeCommandList2 * This);
4934
4935 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4936 void ( STDMETHODCALLTYPE *DecodeFrame )(
4937 ID3D12VideoDecodeCommandList2 * This,
4938 _In_ ID3D12VideoDecoder *pDecoder,
4939 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4940 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4941
4942 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4943 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4944 ID3D12VideoDecodeCommandList2 * This,
4945 UINT Count,
4946 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4947 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4950 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4951 ID3D12VideoDecodeCommandList2 * This,
4952 _In_ ID3D12VideoDecoder *pDecoder,
4953 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4954 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4955
4956 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4957 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4958 ID3D12VideoDecodeCommandList2 * This,
4959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4960
4961 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4962 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4963 ID3D12VideoDecodeCommandList2 * This,
4964 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4965 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4966 SIZE_T InitializationParametersSizeInBytes);
4967
4968 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4969 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4970 ID3D12VideoDecodeCommandList2 * This,
4971 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4972 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4973 SIZE_T ExecutionParametersSizeInBytes);
4974
4975 END_INTERFACE
4976 } ID3D12VideoDecodeCommandList2Vtbl;
4977
4978 interface ID3D12VideoDecodeCommandList2
4979 {
4980 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4981 };
4982
4983
4984
4985#ifdef COBJMACROS
4986
4987
4988#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4989 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4990
4991#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4992 ( (This)->lpVtbl -> AddRef(This) )
4993
4994#define ID3D12VideoDecodeCommandList2_Release(This) \
4995 ( (This)->lpVtbl -> Release(This) )
4996
4997
4998#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4999 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5000
5001#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5002 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5003
5004#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
5005 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5006
5007#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
5008 ( (This)->lpVtbl -> SetName(This,Name) )
5009
5010
5011#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
5012 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5013
5014
5015#define ID3D12VideoDecodeCommandList2_GetType(This) \
5016 ( (This)->lpVtbl -> GetType(This) )
5017
5018
5019#define ID3D12VideoDecodeCommandList2_Close(This) \
5020 ( (This)->lpVtbl -> Close(This) )
5021
5022#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
5023 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5024
5025#define ID3D12VideoDecodeCommandList2_ClearState(This) \
5026 ( (This)->lpVtbl -> ClearState(This) )
5027
5028#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5029 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5030
5031#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
5032 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5033
5034#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5035 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5036
5037#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5038 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5039
5040#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5041 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5042
5043#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5044 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5045
5046#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
5047 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5048
5049#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
5050 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5051
5052#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
5053 ( (This)->lpVtbl -> EndEvent(This) )
5054
5055#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5056 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5057
5058#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5059 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5060
5061
5062#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5063 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5064
5065
5066#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5067 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5068
5069#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5070 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5071
5072#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5073 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5074
5075#endif /* COBJMACROS */
5076
5077
5078#endif /* C style interface */
5079
5080
5081
5082
5083#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
5084
5085
5086#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5087#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5088
5089/* interface ID3D12VideoDecodeCommandList3 */
5090/* [unique][local][object][uuid] */
5091
5092
5093EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
5094
5095#if defined(__cplusplus) && !defined(CINTERFACE)
5096
5097 MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
5098 ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
5099 {
5100 public:
5101 virtual void STDMETHODCALLTYPE Barrier(
5102 UINT32 NumBarrierGroups,
5103 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5104
5105 };
5106
5107
5108#else /* C style interface */
5109
5110 typedef struct ID3D12VideoDecodeCommandList3Vtbl
5111 {
5112 BEGIN_INTERFACE
5113
5114 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5115 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5116 ID3D12VideoDecodeCommandList3 * This,
5117 REFIID riid,
5118 _COM_Outptr_ void **ppvObject);
5119
5120 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5121 ULONG ( STDMETHODCALLTYPE *AddRef )(
5122 ID3D12VideoDecodeCommandList3 * This);
5123
5124 DECLSPEC_XFGVIRT(IUnknown, Release)
5125 ULONG ( STDMETHODCALLTYPE *Release )(
5126 ID3D12VideoDecodeCommandList3 * This);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5129 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5130 ID3D12VideoDecodeCommandList3 * This,
5131 _In_ REFGUID guid,
5132 _Inout_ UINT *pDataSize,
5133 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5134
5135 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5136 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5137 ID3D12VideoDecodeCommandList3 * This,
5138 _In_ REFGUID guid,
5139 _In_ UINT DataSize,
5140 _In_reads_bytes_opt_( DataSize ) const void *pData);
5141
5142 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5143 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5144 ID3D12VideoDecodeCommandList3 * This,
5145 _In_ REFGUID guid,
5146 _In_opt_ const IUnknown *pData);
5147
5148 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5149 HRESULT ( STDMETHODCALLTYPE *SetName )(
5150 ID3D12VideoDecodeCommandList3 * This,
5151 _In_z_ LPCWSTR Name);
5152
5153 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5154 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5155 ID3D12VideoDecodeCommandList3 * This,
5156 REFIID riid,
5157 _COM_Outptr_opt_ void **ppvDevice);
5158
5159 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5160 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5161 ID3D12VideoDecodeCommandList3 * This);
5162
5163 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
5164 HRESULT ( STDMETHODCALLTYPE *Close )(
5165 ID3D12VideoDecodeCommandList3 * This);
5166
5167 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
5168 HRESULT ( STDMETHODCALLTYPE *Reset )(
5169 ID3D12VideoDecodeCommandList3 * This,
5170 _In_ ID3D12CommandAllocator *pAllocator);
5171
5172 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
5173 void ( STDMETHODCALLTYPE *ClearState )(
5174 ID3D12VideoDecodeCommandList3 * This);
5175
5176 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
5177 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5178 ID3D12VideoDecodeCommandList3 * This,
5179 _In_ UINT NumBarriers,
5180 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5181
5182 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
5183 void ( STDMETHODCALLTYPE *DiscardResource )(
5184 ID3D12VideoDecodeCommandList3 * This,
5185 _In_ ID3D12Resource *pResource,
5186 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5187
5188 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
5189 void ( STDMETHODCALLTYPE *BeginQuery )(
5190 ID3D12VideoDecodeCommandList3 * This,
5191 _In_ ID3D12QueryHeap *pQueryHeap,
5192 _In_ D3D12_QUERY_TYPE Type,
5193 _In_ UINT Index);
5194
5195 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
5196 void ( STDMETHODCALLTYPE *EndQuery )(
5197 ID3D12VideoDecodeCommandList3 * This,
5198 _In_ ID3D12QueryHeap *pQueryHeap,
5199 _In_ D3D12_QUERY_TYPE Type,
5200 _In_ UINT Index);
5201
5202 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
5203 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5204 ID3D12VideoDecodeCommandList3 * This,
5205 _In_ ID3D12QueryHeap *pQueryHeap,
5206 _In_ D3D12_QUERY_TYPE Type,
5207 _In_ UINT StartIndex,
5208 _In_ UINT NumQueries,
5209 _In_ ID3D12Resource *pDestinationBuffer,
5210 _In_ UINT64 AlignedDestinationBufferOffset);
5211
5212 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
5213 void ( STDMETHODCALLTYPE *SetPredication )(
5214 ID3D12VideoDecodeCommandList3 * This,
5215 _In_opt_ ID3D12Resource *pBuffer,
5216 _In_ UINT64 AlignedBufferOffset,
5217 _In_ D3D12_PREDICATION_OP Operation);
5218
5219 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
5220 void ( STDMETHODCALLTYPE *SetMarker )(
5221 ID3D12VideoDecodeCommandList3 * This,
5222 UINT Metadata,
5223 _In_reads_bytes_opt_(Size) const void *pData,
5224 UINT Size);
5225
5226 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
5227 void ( STDMETHODCALLTYPE *BeginEvent )(
5228 ID3D12VideoDecodeCommandList3 * This,
5229 UINT Metadata,
5230 _In_reads_bytes_opt_(Size) const void *pData,
5231 UINT Size);
5232
5233 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
5234 void ( STDMETHODCALLTYPE *EndEvent )(
5235 ID3D12VideoDecodeCommandList3 * This);
5236
5237 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
5238 void ( STDMETHODCALLTYPE *DecodeFrame )(
5239 ID3D12VideoDecodeCommandList3 * This,
5240 _In_ ID3D12VideoDecoder *pDecoder,
5241 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5242 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5243
5244 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
5245 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5246 ID3D12VideoDecodeCommandList3 * This,
5247 UINT Count,
5248 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5249 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5250
5251 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
5252 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
5253 ID3D12VideoDecodeCommandList3 * This,
5254 _In_ ID3D12VideoDecoder *pDecoder,
5255 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
5256 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5257
5258 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
5259 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5260 ID3D12VideoDecodeCommandList3 * This,
5261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
5264 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5265 ID3D12VideoDecodeCommandList3 * This,
5266 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5267 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5268 SIZE_T InitializationParametersSizeInBytes);
5269
5270 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
5271 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5272 ID3D12VideoDecodeCommandList3 * This,
5273 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5274 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5275 SIZE_T ExecutionParametersSizeInBytes);
5276
5277 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
5278 void ( STDMETHODCALLTYPE *Barrier )(
5279 ID3D12VideoDecodeCommandList3 * This,
5280 UINT32 NumBarrierGroups,
5281 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5282
5283 END_INTERFACE
5284 } ID3D12VideoDecodeCommandList3Vtbl;
5285
5286 interface ID3D12VideoDecodeCommandList3
5287 {
5288 CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
5289 };
5290
5291
5292
5293#ifdef COBJMACROS
5294
5295
5296#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
5297 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5298
5299#define ID3D12VideoDecodeCommandList3_AddRef(This) \
5300 ( (This)->lpVtbl -> AddRef(This) )
5301
5302#define ID3D12VideoDecodeCommandList3_Release(This) \
5303 ( (This)->lpVtbl -> Release(This) )
5304
5305
5306#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5307 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5308
5309#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5310 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5311
5312#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
5313 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5314
5315#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
5316 ( (This)->lpVtbl -> SetName(This,Name) )
5317
5318
5319#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
5320 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5321
5322
5323#define ID3D12VideoDecodeCommandList3_GetType(This) \
5324 ( (This)->lpVtbl -> GetType(This) )
5325
5326
5327#define ID3D12VideoDecodeCommandList3_Close(This) \
5328 ( (This)->lpVtbl -> Close(This) )
5329
5330#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
5331 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5332
5333#define ID3D12VideoDecodeCommandList3_ClearState(This) \
5334 ( (This)->lpVtbl -> ClearState(This) )
5335
5336#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5337 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5338
5339#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
5340 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5341
5342#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5343 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5344
5345#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5346 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5347
5348#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5349 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5350
5351#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5352 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5353
5354#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
5355 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5356
5357#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
5358 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5359
5360#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
5361 ( (This)->lpVtbl -> EndEvent(This) )
5362
5363#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5364 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5365
5366#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5367 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5368
5369
5370#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5371 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5372
5373
5374#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
5375 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5376
5377#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5378 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5379
5380#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5381 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5382
5383
5384#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
5385 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
5386
5387#endif /* COBJMACROS */
5388
5389
5390#endif /* C style interface */
5391
5392
5393
5394
5395#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
5396
5397
5398#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5399#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5400
5401/* interface ID3D12VideoProcessCommandList2 */
5402/* [unique][local][object][uuid] */
5403
5404
5405EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
5406
5407#if defined(__cplusplus) && !defined(CINTERFACE)
5408
5409 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
5410 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
5411 {
5412 public:
5413 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
5414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
5415
5416 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5417 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5418 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5419 SIZE_T InitializationParametersSizeInBytes) = 0;
5420
5421 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5422 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5423 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5424 SIZE_T ExecutionParametersSizeInBytes) = 0;
5425
5426 };
5427
5428
5429#else /* C style interface */
5430
5431 typedef struct ID3D12VideoProcessCommandList2Vtbl
5432 {
5433 BEGIN_INTERFACE
5434
5435 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5436 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5437 ID3D12VideoProcessCommandList2 * This,
5438 REFIID riid,
5439 _COM_Outptr_ void **ppvObject);
5440
5441 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5442 ULONG ( STDMETHODCALLTYPE *AddRef )(
5443 ID3D12VideoProcessCommandList2 * This);
5444
5445 DECLSPEC_XFGVIRT(IUnknown, Release)
5446 ULONG ( STDMETHODCALLTYPE *Release )(
5447 ID3D12VideoProcessCommandList2 * This);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5450 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5451 ID3D12VideoProcessCommandList2 * This,
5452 _In_ REFGUID guid,
5453 _Inout_ UINT *pDataSize,
5454 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5455
5456 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5457 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5458 ID3D12VideoProcessCommandList2 * This,
5459 _In_ REFGUID guid,
5460 _In_ UINT DataSize,
5461 _In_reads_bytes_opt_( DataSize ) const void *pData);
5462
5463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5464 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5465 ID3D12VideoProcessCommandList2 * This,
5466 _In_ REFGUID guid,
5467 _In_opt_ const IUnknown *pData);
5468
5469 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5470 HRESULT ( STDMETHODCALLTYPE *SetName )(
5471 ID3D12VideoProcessCommandList2 * This,
5472 _In_z_ LPCWSTR Name);
5473
5474 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5475 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5476 ID3D12VideoProcessCommandList2 * This,
5477 REFIID riid,
5478 _COM_Outptr_opt_ void **ppvDevice);
5479
5480 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5481 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5482 ID3D12VideoProcessCommandList2 * This);
5483
5484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5485 HRESULT ( STDMETHODCALLTYPE *Close )(
5486 ID3D12VideoProcessCommandList2 * This);
5487
5488 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5489 HRESULT ( STDMETHODCALLTYPE *Reset )(
5490 ID3D12VideoProcessCommandList2 * This,
5491 _In_ ID3D12CommandAllocator *pAllocator);
5492
5493 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5494 void ( STDMETHODCALLTYPE *ClearState )(
5495 ID3D12VideoProcessCommandList2 * This);
5496
5497 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5498 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5499 ID3D12VideoProcessCommandList2 * This,
5500 _In_ UINT NumBarriers,
5501 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5502
5503 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5504 void ( STDMETHODCALLTYPE *DiscardResource )(
5505 ID3D12VideoProcessCommandList2 * This,
5506 _In_ ID3D12Resource *pResource,
5507 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5508
5509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5510 void ( STDMETHODCALLTYPE *BeginQuery )(
5511 ID3D12VideoProcessCommandList2 * This,
5512 _In_ ID3D12QueryHeap *pQueryHeap,
5513 _In_ D3D12_QUERY_TYPE Type,
5514 _In_ UINT Index);
5515
5516 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5517 void ( STDMETHODCALLTYPE *EndQuery )(
5518 ID3D12VideoProcessCommandList2 * This,
5519 _In_ ID3D12QueryHeap *pQueryHeap,
5520 _In_ D3D12_QUERY_TYPE Type,
5521 _In_ UINT Index);
5522
5523 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5524 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5525 ID3D12VideoProcessCommandList2 * This,
5526 _In_ ID3D12QueryHeap *pQueryHeap,
5527 _In_ D3D12_QUERY_TYPE Type,
5528 _In_ UINT StartIndex,
5529 _In_ UINT NumQueries,
5530 _In_ ID3D12Resource *pDestinationBuffer,
5531 _In_ UINT64 AlignedDestinationBufferOffset);
5532
5533 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5534 void ( STDMETHODCALLTYPE *SetPredication )(
5535 ID3D12VideoProcessCommandList2 * This,
5536 _In_opt_ ID3D12Resource *pBuffer,
5537 _In_ UINT64 AlignedBufferOffset,
5538 _In_ D3D12_PREDICATION_OP Operation);
5539
5540 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5541 void ( STDMETHODCALLTYPE *SetMarker )(
5542 ID3D12VideoProcessCommandList2 * This,
5543 UINT Metadata,
5544 _In_reads_bytes_opt_(Size) const void *pData,
5545 UINT Size);
5546
5547 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5548 void ( STDMETHODCALLTYPE *BeginEvent )(
5549 ID3D12VideoProcessCommandList2 * This,
5550 UINT Metadata,
5551 _In_reads_bytes_opt_(Size) const void *pData,
5552 UINT Size);
5553
5554 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5555 void ( STDMETHODCALLTYPE *EndEvent )(
5556 ID3D12VideoProcessCommandList2 * This);
5557
5558 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5559 void ( STDMETHODCALLTYPE *ProcessFrames )(
5560 ID3D12VideoProcessCommandList2 * This,
5561 _In_ ID3D12VideoProcessor *pVideoProcessor,
5562 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5563 UINT NumInputStreams,
5564 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5565
5566 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5567 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5568 ID3D12VideoProcessCommandList2 * This,
5569 UINT Count,
5570 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5571 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5572
5573 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5574 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5575 ID3D12VideoProcessCommandList2 * This,
5576 _In_ ID3D12VideoProcessor *pVideoProcessor,
5577 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5578 UINT NumInputStreams,
5579 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5580
5581 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5582 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5583 ID3D12VideoProcessCommandList2 * This,
5584 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5585
5586 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5587 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5588 ID3D12VideoProcessCommandList2 * This,
5589 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5590 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5591 SIZE_T InitializationParametersSizeInBytes);
5592
5593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5594 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5595 ID3D12VideoProcessCommandList2 * This,
5596 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5597 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5598 SIZE_T ExecutionParametersSizeInBytes);
5599
5600 END_INTERFACE
5601 } ID3D12VideoProcessCommandList2Vtbl;
5602
5603 interface ID3D12VideoProcessCommandList2
5604 {
5605 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5606 };
5607
5608
5609
5610#ifdef COBJMACROS
5611
5612
5613#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5615
5616#define ID3D12VideoProcessCommandList2_AddRef(This) \
5617 ( (This)->lpVtbl -> AddRef(This) )
5618
5619#define ID3D12VideoProcessCommandList2_Release(This) \
5620 ( (This)->lpVtbl -> Release(This) )
5621
5622
5623#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5625
5626#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5628
5629#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5631
5632#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5633 ( (This)->lpVtbl -> SetName(This,Name) )
5634
5635
5636#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5638
5639
5640#define ID3D12VideoProcessCommandList2_GetType(This) \
5641 ( (This)->lpVtbl -> GetType(This) )
5642
5643
5644#define ID3D12VideoProcessCommandList2_Close(This) \
5645 ( (This)->lpVtbl -> Close(This) )
5646
5647#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5648 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5649
5650#define ID3D12VideoProcessCommandList2_ClearState(This) \
5651 ( (This)->lpVtbl -> ClearState(This) )
5652
5653#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5654 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5655
5656#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5657 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5658
5659#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5660 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5661
5662#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5663 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5664
5665#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5666 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5667
5668#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5669 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5670
5671#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5672 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5673
5674#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5675 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5676
5677#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5678 ( (This)->lpVtbl -> EndEvent(This) )
5679
5680#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5681 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5682
5683#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5684 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5685
5686
5687#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5688 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5689
5690
5691#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5692 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5693
5694#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5695 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5696
5697#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5698 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5699
5700#endif /* COBJMACROS */
5701
5702
5703#endif /* C style interface */
5704
5705
5706
5707
5708#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5709
5710
5711#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5712#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5713
5714/* interface ID3D12VideoProcessCommandList3 */
5715/* [unique][local][object][uuid] */
5716
5717
5718EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
5719
5720#if defined(__cplusplus) && !defined(CINTERFACE)
5721
5722 MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
5723 ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
5724 {
5725 public:
5726 virtual void STDMETHODCALLTYPE Barrier(
5727 UINT32 NumBarrierGroups,
5728 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5729
5730 };
5731
5732
5733#else /* C style interface */
5734
5735 typedef struct ID3D12VideoProcessCommandList3Vtbl
5736 {
5737 BEGIN_INTERFACE
5738
5739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5741 ID3D12VideoProcessCommandList3 * This,
5742 REFIID riid,
5743 _COM_Outptr_ void **ppvObject);
5744
5745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5746 ULONG ( STDMETHODCALLTYPE *AddRef )(
5747 ID3D12VideoProcessCommandList3 * This);
5748
5749 DECLSPEC_XFGVIRT(IUnknown, Release)
5750 ULONG ( STDMETHODCALLTYPE *Release )(
5751 ID3D12VideoProcessCommandList3 * This);
5752
5753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5755 ID3D12VideoProcessCommandList3 * This,
5756 _In_ REFGUID guid,
5757 _Inout_ UINT *pDataSize,
5758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5759
5760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5762 ID3D12VideoProcessCommandList3 * This,
5763 _In_ REFGUID guid,
5764 _In_ UINT DataSize,
5765 _In_reads_bytes_opt_( DataSize ) const void *pData);
5766
5767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5769 ID3D12VideoProcessCommandList3 * This,
5770 _In_ REFGUID guid,
5771 _In_opt_ const IUnknown *pData);
5772
5773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5774 HRESULT ( STDMETHODCALLTYPE *SetName )(
5775 ID3D12VideoProcessCommandList3 * This,
5776 _In_z_ LPCWSTR Name);
5777
5778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5780 ID3D12VideoProcessCommandList3 * This,
5781 REFIID riid,
5782 _COM_Outptr_opt_ void **ppvDevice);
5783
5784 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5785 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5786 ID3D12VideoProcessCommandList3 * This);
5787
5788 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5789 HRESULT ( STDMETHODCALLTYPE *Close )(
5790 ID3D12VideoProcessCommandList3 * This);
5791
5792 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5793 HRESULT ( STDMETHODCALLTYPE *Reset )(
5794 ID3D12VideoProcessCommandList3 * This,
5795 _In_ ID3D12CommandAllocator *pAllocator);
5796
5797 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5798 void ( STDMETHODCALLTYPE *ClearState )(
5799 ID3D12VideoProcessCommandList3 * This);
5800
5801 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5802 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5803 ID3D12VideoProcessCommandList3 * This,
5804 _In_ UINT NumBarriers,
5805 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5806
5807 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5808 void ( STDMETHODCALLTYPE *DiscardResource )(
5809 ID3D12VideoProcessCommandList3 * This,
5810 _In_ ID3D12Resource *pResource,
5811 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5812
5813 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5814 void ( STDMETHODCALLTYPE *BeginQuery )(
5815 ID3D12VideoProcessCommandList3 * This,
5816 _In_ ID3D12QueryHeap *pQueryHeap,
5817 _In_ D3D12_QUERY_TYPE Type,
5818 _In_ UINT Index);
5819
5820 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5821 void ( STDMETHODCALLTYPE *EndQuery )(
5822 ID3D12VideoProcessCommandList3 * This,
5823 _In_ ID3D12QueryHeap *pQueryHeap,
5824 _In_ D3D12_QUERY_TYPE Type,
5825 _In_ UINT Index);
5826
5827 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5828 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5829 ID3D12VideoProcessCommandList3 * This,
5830 _In_ ID3D12QueryHeap *pQueryHeap,
5831 _In_ D3D12_QUERY_TYPE Type,
5832 _In_ UINT StartIndex,
5833 _In_ UINT NumQueries,
5834 _In_ ID3D12Resource *pDestinationBuffer,
5835 _In_ UINT64 AlignedDestinationBufferOffset);
5836
5837 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5838 void ( STDMETHODCALLTYPE *SetPredication )(
5839 ID3D12VideoProcessCommandList3 * This,
5840 _In_opt_ ID3D12Resource *pBuffer,
5841 _In_ UINT64 AlignedBufferOffset,
5842 _In_ D3D12_PREDICATION_OP Operation);
5843
5844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5845 void ( STDMETHODCALLTYPE *SetMarker )(
5846 ID3D12VideoProcessCommandList3 * This,
5847 UINT Metadata,
5848 _In_reads_bytes_opt_(Size) const void *pData,
5849 UINT Size);
5850
5851 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5852 void ( STDMETHODCALLTYPE *BeginEvent )(
5853 ID3D12VideoProcessCommandList3 * This,
5854 UINT Metadata,
5855 _In_reads_bytes_opt_(Size) const void *pData,
5856 UINT Size);
5857
5858 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5859 void ( STDMETHODCALLTYPE *EndEvent )(
5860 ID3D12VideoProcessCommandList3 * This);
5861
5862 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5863 void ( STDMETHODCALLTYPE *ProcessFrames )(
5864 ID3D12VideoProcessCommandList3 * This,
5865 _In_ ID3D12VideoProcessor *pVideoProcessor,
5866 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5867 UINT NumInputStreams,
5868 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5869
5870 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5871 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5872 ID3D12VideoProcessCommandList3 * This,
5873 UINT Count,
5874 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5875 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5876
5877 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5878 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5879 ID3D12VideoProcessCommandList3 * This,
5880 _In_ ID3D12VideoProcessor *pVideoProcessor,
5881 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5882 UINT NumInputStreams,
5883 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5884
5885 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5886 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5887 ID3D12VideoProcessCommandList3 * This,
5888 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5889
5890 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5891 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5892 ID3D12VideoProcessCommandList3 * This,
5893 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5894 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5895 SIZE_T InitializationParametersSizeInBytes);
5896
5897 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5898 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5899 ID3D12VideoProcessCommandList3 * This,
5900 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5901 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5902 SIZE_T ExecutionParametersSizeInBytes);
5903
5904 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
5905 void ( STDMETHODCALLTYPE *Barrier )(
5906 ID3D12VideoProcessCommandList3 * This,
5907 UINT32 NumBarrierGroups,
5908 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5909
5910 END_INTERFACE
5911 } ID3D12VideoProcessCommandList3Vtbl;
5912
5913 interface ID3D12VideoProcessCommandList3
5914 {
5915 CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
5916 };
5917
5918
5919
5920#ifdef COBJMACROS
5921
5922
5923#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
5924 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5925
5926#define ID3D12VideoProcessCommandList3_AddRef(This) \
5927 ( (This)->lpVtbl -> AddRef(This) )
5928
5929#define ID3D12VideoProcessCommandList3_Release(This) \
5930 ( (This)->lpVtbl -> Release(This) )
5931
5932
5933#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5934 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5935
5936#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5937 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5938
5939#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
5940 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5941
5942#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
5943 ( (This)->lpVtbl -> SetName(This,Name) )
5944
5945
5946#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
5947 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5948
5949
5950#define ID3D12VideoProcessCommandList3_GetType(This) \
5951 ( (This)->lpVtbl -> GetType(This) )
5952
5953
5954#define ID3D12VideoProcessCommandList3_Close(This) \
5955 ( (This)->lpVtbl -> Close(This) )
5956
5957#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
5958 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5959
5960#define ID3D12VideoProcessCommandList3_ClearState(This) \
5961 ( (This)->lpVtbl -> ClearState(This) )
5962
5963#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5964 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5965
5966#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
5967 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5968
5969#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5970 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5971
5972#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5973 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5974
5975#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5976 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5977
5978#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5979 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5980
5981#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
5982 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5983
5984#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
5985 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5986
5987#define ID3D12VideoProcessCommandList3_EndEvent(This) \
5988 ( (This)->lpVtbl -> EndEvent(This) )
5989
5990#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5991 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5992
5993#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5994 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5995
5996
5997#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5998 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5999
6000
6001#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
6002 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6003
6004#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6005 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6006
6007#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6008 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6009
6010
6011#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
6012 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
6013
6014#endif /* COBJMACROS */
6015
6016
6017#endif /* C style interface */
6018
6019
6020
6021
6022#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
6023
6024
6025#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6026#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6027
6028/* interface ID3D12VideoEncodeCommandList1 */
6029/* [unique][local][object][uuid] */
6030
6031
6032EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
6033
6034#if defined(__cplusplus) && !defined(CINTERFACE)
6035
6036 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
6037 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
6038 {
6039 public:
6040 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
6041 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6042 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6043 SIZE_T InitializationParametersSizeInBytes) = 0;
6044
6045 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
6046 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6047 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6048 SIZE_T ExecutionParametersSizeInBytes) = 0;
6049
6050 };
6051
6052
6053#else /* C style interface */
6054
6055 typedef struct ID3D12VideoEncodeCommandList1Vtbl
6056 {
6057 BEGIN_INTERFACE
6058
6059 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6060 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6061 ID3D12VideoEncodeCommandList1 * This,
6062 REFIID riid,
6063 _COM_Outptr_ void **ppvObject);
6064
6065 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6066 ULONG ( STDMETHODCALLTYPE *AddRef )(
6067 ID3D12VideoEncodeCommandList1 * This);
6068
6069 DECLSPEC_XFGVIRT(IUnknown, Release)
6070 ULONG ( STDMETHODCALLTYPE *Release )(
6071 ID3D12VideoEncodeCommandList1 * This);
6072
6073 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6074 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6075 ID3D12VideoEncodeCommandList1 * This,
6076 _In_ REFGUID guid,
6077 _Inout_ UINT *pDataSize,
6078 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6079
6080 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6081 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6082 ID3D12VideoEncodeCommandList1 * This,
6083 _In_ REFGUID guid,
6084 _In_ UINT DataSize,
6085 _In_reads_bytes_opt_( DataSize ) const void *pData);
6086
6087 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6088 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6089 ID3D12VideoEncodeCommandList1 * This,
6090 _In_ REFGUID guid,
6091 _In_opt_ const IUnknown *pData);
6092
6093 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6094 HRESULT ( STDMETHODCALLTYPE *SetName )(
6095 ID3D12VideoEncodeCommandList1 * This,
6096 _In_z_ LPCWSTR Name);
6097
6098 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6099 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6100 ID3D12VideoEncodeCommandList1 * This,
6101 REFIID riid,
6102 _COM_Outptr_opt_ void **ppvDevice);
6103
6104 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6105 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6106 ID3D12VideoEncodeCommandList1 * This);
6107
6108 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
6109 HRESULT ( STDMETHODCALLTYPE *Close )(
6110 ID3D12VideoEncodeCommandList1 * This);
6111
6112 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
6113 HRESULT ( STDMETHODCALLTYPE *Reset )(
6114 ID3D12VideoEncodeCommandList1 * This,
6115 _In_ ID3D12CommandAllocator *pAllocator);
6116
6117 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
6118 void ( STDMETHODCALLTYPE *ClearState )(
6119 ID3D12VideoEncodeCommandList1 * This);
6120
6121 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
6122 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6123 ID3D12VideoEncodeCommandList1 * This,
6124 _In_ UINT NumBarriers,
6125 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6126
6127 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
6128 void ( STDMETHODCALLTYPE *DiscardResource )(
6129 ID3D12VideoEncodeCommandList1 * This,
6130 _In_ ID3D12Resource *pResource,
6131 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6132
6133 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
6134 void ( STDMETHODCALLTYPE *BeginQuery )(
6135 ID3D12VideoEncodeCommandList1 * This,
6136 _In_ ID3D12QueryHeap *pQueryHeap,
6137 _In_ D3D12_QUERY_TYPE Type,
6138 _In_ UINT Index);
6139
6140 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
6141 void ( STDMETHODCALLTYPE *EndQuery )(
6142 ID3D12VideoEncodeCommandList1 * This,
6143 _In_ ID3D12QueryHeap *pQueryHeap,
6144 _In_ D3D12_QUERY_TYPE Type,
6145 _In_ UINT Index);
6146
6147 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
6148 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6149 ID3D12VideoEncodeCommandList1 * This,
6150 _In_ ID3D12QueryHeap *pQueryHeap,
6151 _In_ D3D12_QUERY_TYPE Type,
6152 _In_ UINT StartIndex,
6153 _In_ UINT NumQueries,
6154 _In_ ID3D12Resource *pDestinationBuffer,
6155 _In_ UINT64 AlignedDestinationBufferOffset);
6156
6157 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
6158 void ( STDMETHODCALLTYPE *SetPredication )(
6159 ID3D12VideoEncodeCommandList1 * This,
6160 _In_opt_ ID3D12Resource *pBuffer,
6161 _In_ UINT64 AlignedBufferOffset,
6162 _In_ D3D12_PREDICATION_OP Operation);
6163
6164 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
6165 void ( STDMETHODCALLTYPE *SetMarker )(
6166 ID3D12VideoEncodeCommandList1 * This,
6167 UINT Metadata,
6168 _In_reads_bytes_opt_(Size) const void *pData,
6169 UINT Size);
6170
6171 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
6172 void ( STDMETHODCALLTYPE *BeginEvent )(
6173 ID3D12VideoEncodeCommandList1 * This,
6174 UINT Metadata,
6175 _In_reads_bytes_opt_(Size) const void *pData,
6176 UINT Size);
6177
6178 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
6179 void ( STDMETHODCALLTYPE *EndEvent )(
6180 ID3D12VideoEncodeCommandList1 * This);
6181
6182 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
6183 void ( STDMETHODCALLTYPE *EstimateMotion )(
6184 ID3D12VideoEncodeCommandList1 * This,
6185 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
6186 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
6187 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
6188
6189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
6190 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
6191 ID3D12VideoEncodeCommandList1 * This,
6192 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
6193 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
6194
6195 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
6196 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
6197 ID3D12VideoEncodeCommandList1 * This,
6198 UINT Count,
6199 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
6200 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
6201
6202 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
6203 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
6204 ID3D12VideoEncodeCommandList1 * This,
6205 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
6206
6207 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
6208 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
6209 ID3D12VideoEncodeCommandList1 * This,
6210 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6211 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6212 SIZE_T InitializationParametersSizeInBytes);
6213
6214 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
6215 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
6216 ID3D12VideoEncodeCommandList1 * This,
6217 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6218 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6219 SIZE_T ExecutionParametersSizeInBytes);
6220
6221 END_INTERFACE
6222 } ID3D12VideoEncodeCommandList1Vtbl;
6223
6224 interface ID3D12VideoEncodeCommandList1
6225 {
6226 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
6227 };
6228
6229
6230
6231#ifdef COBJMACROS
6232
6233
6234#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
6235 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6236
6237#define ID3D12VideoEncodeCommandList1_AddRef(This) \
6238 ( (This)->lpVtbl -> AddRef(This) )
6239
6240#define ID3D12VideoEncodeCommandList1_Release(This) \
6241 ( (This)->lpVtbl -> Release(This) )
6242
6243
6244#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
6245 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6246
6247#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
6248 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6249
6250#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
6251 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6252
6253#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
6254 ( (This)->lpVtbl -> SetName(This,Name) )
6255
6256
6257#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
6258 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6259
6260
6261#define ID3D12VideoEncodeCommandList1_GetType(This) \
6262 ( (This)->lpVtbl -> GetType(This) )
6263
6264
6265#define ID3D12VideoEncodeCommandList1_Close(This) \
6266 ( (This)->lpVtbl -> Close(This) )
6267
6268#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
6269 ( (This)->lpVtbl -> Reset(This,pAllocator) )
6270
6271#define ID3D12VideoEncodeCommandList1_ClearState(This) \
6272 ( (This)->lpVtbl -> ClearState(This) )
6273
6274#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
6275 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6276
6277#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
6278 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6279
6280#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
6281 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6282
6283#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
6284 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6285
6286#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6287 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6288
6289#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6290 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6291
6292#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
6293 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6294
6295#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
6296 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6297
6298#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
6299 ( (This)->lpVtbl -> EndEvent(This) )
6300
6301#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
6302 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
6303
6304#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
6305 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
6306
6307#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
6308 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
6309
6310#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
6311 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6312
6313
6314#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6315 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6316
6317#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6318 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6319
6320#endif /* COBJMACROS */
6321
6322
6323#endif /* C style interface */
6324
6325
6326
6327
6328#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
6329
6330
6331/* interface __MIDL_itf_d3d12video_0000_0022 */
6332/* [local] */
6333
6334DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371typedef
6372enum D3D12_VIDEO_ENCODER_AV1_PROFILE
6373 {
6374 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
6375 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
6376 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
6377 } D3D12_VIDEO_ENCODER_AV1_PROFILE;
6378
6379typedef
6380enum D3D12_VIDEO_ENCODER_AV1_LEVELS
6381 {
6382 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
6383 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
6384 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
6385 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
6386 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
6387 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
6388 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
6389 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
6390 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
6391 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
6392 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
6393 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
6394 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
6395 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
6396 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
6397 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
6398 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
6399 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
6400 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
6401 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
6402 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
6403 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
6404 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
6405 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
6406 } D3D12_VIDEO_ENCODER_AV1_LEVELS;
6407
6408typedef
6409enum D3D12_VIDEO_ENCODER_AV1_TIER
6410 {
6411 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
6412 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
6413 } D3D12_VIDEO_ENCODER_AV1_TIER;
6414
6415typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
6416 {
6417 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
6418 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
6419 } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
6420
6421typedef
6422enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
6423 {
6424 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
6425 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
6426 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
6427 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
6428 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
6429 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
6430 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
6431 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
6432 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
6433 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
6434 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
6435 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
6436 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
6437 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
6438 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
6439 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
6440 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
6441 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
6442 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
6443 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
6444 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
6445 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
6446 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
6447 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
6448 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
6449 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
6450 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
6451 } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
6452
6453DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454typedef
6455enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
6456 {
6457 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
6458 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
6459 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
6460 } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
6461
6462typedef
6463enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
6464 {
6465 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
6466 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
6467 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
6468 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
6469 } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
6470
6471DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472typedef
6473enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
6474 {
6475 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
6476 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
6477 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
6478 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
6479 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
6480 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
6481
6482typedef
6483enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
6484 {
6485 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
6486 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
6487 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
6488 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
6489 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
6490 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
6491 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
6492
6493DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494typedef
6495enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
6496 {
6497 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
6498 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
6499 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
6500 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
6501 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
6502 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
6503
6504typedef
6505enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
6506 {
6507 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
6508 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
6509 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
6510 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
6511 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
6512 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
6513 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
6514 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
6515 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
6516 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
6517
6518typedef
6519enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
6520 {
6521 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
6522 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
6523 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
6524 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
6525 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
6526 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
6527 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
6528 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
6529 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
6530 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
6531 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
6532
6533DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534typedef
6535enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
6536 {
6537 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
6538 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
6539 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
6540 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
6541 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
6542
6543typedef
6544enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
6545 {
6546 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
6547 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
6548 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
6549 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
6550 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
6551 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
6552
6553typedef
6554enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
6555 {
6556 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
6557 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
6558 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
6559 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
6560 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
6561 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
6562
6563DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564typedef
6565enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
6566 {
6567 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
6568 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
6569 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
6570 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
6571 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
6572
6573typedef
6574enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
6575 {
6576 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
6577 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
6578 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
6579 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
6580 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
6581 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
6582
6583DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584typedef
6585enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
6586 {
6587 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
6588 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
6589 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
6590 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
6591 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
6592 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
6593 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
6594 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
6595 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
6596 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
6597 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
6598
6599DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
6601 {
6602 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
6603 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
6604 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
6605 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
6606 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
6607 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
6608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
6609 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
6610 UINT MaxTemporalLayers;
6611 UINT MaxSpatialLayers;
6612 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
6613
6614typedef
6615enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
6616 {
6617 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
6618 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
6619 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
6620 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
6621 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
6622
6623typedef
6624enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
6625 {
6626 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
6627 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
6628 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
6629 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
6630 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
6631 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
6632
6633DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634typedef
6635enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
6636 {
6637 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
6638 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
6639 } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
6640
6641typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
6642 {
6643 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
6644 UINT MaxUniqueReferencesPerFrame;
6645 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
6646 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
6647 } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
6648
6649typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
6650 {
6651 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
6652 UINT OrderHintBitsMinus1;
6653 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
6654
6655typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656 {
6657 UINT IntraDistance;
6658 UINT InterFramePeriod;
6659 } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
6662 {
6663 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
6664 INT TransformationMatrix[ 8 ];
6665 BOOL InvalidAffineSet;
6666 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
6667
6668typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
6669 {
6670 UINT ReconstructedPictureResourceIndex;
6671 UINT TemporalLayerIndexPlus1;
6672 UINT SpatialLayerIndexPlus1;
6673 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
6675 UINT OrderHint;
6676 UINT PictureIndex;
6677 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
6678
6679typedef
6680enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
6681 {
6682 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
6683 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
6684 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
6685 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
6686 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
6687 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
6688 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
6689 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
6690 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
6691 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
6692 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
6693 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
6694 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
6695 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
6696 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
6697 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
6698 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
6699
6700DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
6702 {
6703 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
6704 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
6705 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
6706
6707typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708 {
6709 UINT64 EnabledFeatures;
6710 INT64 FeatureValue[ 8 ];
6711 } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
6714 {
6715 UINT64 UpdateMap;
6716 UINT64 TemporalUpdate;
6717 UINT64 UpdateData;
6718 UINT64 NumSegments;
6719 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
6720 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
6721
6722typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723 {
6724 UINT SegmentsMapByteSize;
6725 UINT8 *pSegmentsMap;
6726 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
6729 {
6730 UINT64 LoopFilterLevel[ 2 ];
6731 UINT64 LoopFilterLevelU;
6732 UINT64 LoopFilterLevelV;
6733 UINT64 LoopFilterSharpnessLevel;
6734 UINT64 LoopFilterDeltaEnabled;
6735 UINT64 UpdateRefDelta;
6736 INT64 RefDeltas[ 8 ];
6737 UINT64 UpdateModeDelta;
6738 INT64 ModeDeltas[ 2 ];
6739 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
6740
6741typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
6742 {
6743 UINT64 DeltaLFPresent;
6744 UINT64 DeltaLFMulti;
6745 UINT64 DeltaLFRes;
6746 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
6747
6748typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
6749 {
6750 UINT64 BaseQIndex;
6751 INT64 YDCDeltaQ;
6752 INT64 UDCDeltaQ;
6753 INT64 UACDeltaQ;
6754 INT64 VDCDeltaQ;
6755 INT64 VACDeltaQ;
6756 UINT64 UsingQMatrix;
6757 UINT64 QMY;
6758 UINT64 QMU;
6759 UINT64 QMV;
6760 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
6761
6762typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
6763 {
6764 UINT64 DeltaQPresent;
6765 UINT64 DeltaQRes;
6766 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
6767
6768typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
6769 {
6770 UINT64 CdefBits;
6771 UINT64 CdefDampingMinus3;
6772 UINT64 CdefYPriStrength[ 8 ];
6773 UINT64 CdefUVPriStrength[ 8 ];
6774 UINT64 CdefYSecStrength[ 8 ];
6775 UINT64 CdefUVSecStrength[ 8 ];
6776 } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
6777
6778typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
6779 {
6780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
6781 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6782 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
6783 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
6784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
6785 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
6786 UINT SuperResDenominator;
6787 UINT OrderHint;
6788 UINT PictureIndex;
6789 UINT TemporalLayerIndexPlus1;
6790 UINT SpatialLayerIndexPlus1;
6791 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
6792 UINT ReferenceIndices[ 7 ];
6793 UINT PrimaryRefFrame;
6794 UINT RefreshFrameFlags;
6795 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6796 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6797 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6798 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6799 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6800 UINT QPMapValuesCount;
6801 _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
6802 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
6803 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
6804 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
6805
6806typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
6807 {
6808 UINT64 RowCount;
6809 UINT64 ColCount;
6810 UINT64 RowHeights[ 64 ];
6811 UINT64 ColWidths[ 64 ];
6812 UINT64 ContextUpdateTileId;
6813 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
6814
6815typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
6816 {
6817 UINT64 CompoundPredictionType;
6818 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6819 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6820 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6821 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6822 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6823 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
6824 UINT64 PrimaryRefFrame;
6825 UINT64 ReferenceIndices[ 7 ];
6826 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
6827
6828typedef
6829enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
6830 {
6831 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
6832 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
6833 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
6834 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
6835 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
6836 } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
6837
6838typedef
6839enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
6840 {
6841 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
6842 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
6843 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
6844 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
6845 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
6846 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
6847 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
6848 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
6849 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
6850 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
6851 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
6852
6853DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
6855 {
6856 UINT ConstantQP_FullIntracodedFrame;
6857 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6858 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6859 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
6860
6861typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
6862 {
6863 UINT ConstantQP_FullIntracodedFrame;
6864 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6865 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6866 UINT QualityVsSpeed;
6867 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
6868
6869typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
6870 {
6871 UINT InitialQP;
6872 UINT MinQP;
6873 UINT MaxQP;
6874 UINT64 MaxFrameBitSize;
6875 UINT64 TargetBitRate;
6876 UINT64 VBVCapacity;
6877 UINT64 InitialVBVFullness;
6878 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
6879
6880typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
6881 {
6882 UINT InitialQP;
6883 UINT MinQP;
6884 UINT MaxQP;
6885 UINT64 MaxFrameBitSize;
6886 UINT64 TargetBitRate;
6887 UINT64 VBVCapacity;
6888 UINT64 InitialVBVFullness;
6889 UINT QualityVsSpeed;
6890 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
6891
6892typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
6893 {
6894 UINT InitialQP;
6895 UINT MinQP;
6896 UINT MaxQP;
6897 UINT64 MaxFrameBitSize;
6898 UINT64 TargetAvgBitRate;
6899 UINT64 PeakBitRate;
6900 UINT64 VBVCapacity;
6901 UINT64 InitialVBVFullness;
6902 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
6903
6904typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
6905 {
6906 UINT InitialQP;
6907 UINT MinQP;
6908 UINT MaxQP;
6909 UINT64 MaxFrameBitSize;
6910 UINT64 TargetAvgBitRate;
6911 UINT64 PeakBitRate;
6912 UINT64 VBVCapacity;
6913 UINT64 InitialVBVFullness;
6914 UINT QualityVsSpeed;
6915 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
6916
6917typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
6918 {
6919 UINT InitialQP;
6920 UINT MinQP;
6921 UINT MaxQP;
6922 UINT64 MaxFrameBitSize;
6923 UINT64 TargetAvgBitRate;
6924 UINT64 PeakBitRate;
6925 UINT ConstantQualityTarget;
6926 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
6927
6928typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
6929 {
6930 UINT InitialQP;
6931 UINT MinQP;
6932 UINT MaxQP;
6933 UINT64 MaxFrameBitSize;
6934 UINT64 TargetAvgBitRate;
6935 UINT64 PeakBitRate;
6936 UINT ConstantQualityTarget;
6937 UINT64 VBVCapacity;
6938 UINT64 InitialVBVFullness;
6939 UINT QualityVsSpeed;
6940 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
6941
6942typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943 {
6944 UINT QualityVsSpeed;
6945 } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
6948 {
6949 UINT DataSize;
6950 union
6951 {
6952 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
6953 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
6954 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
6955 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
6956 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
6957 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
6958 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
6959 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
6960 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
6961 } ;
6962 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
6963
6964typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
6965 {
6966 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
6967 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
6968 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
6969 DXGI_RATIONAL TargetFrameRate;
6970 } D3D12_VIDEO_ENCODER_RATE_CONTROL;
6971
6972typedef
6973enum D3D12_VIDEO_ENCODER_CODEC
6974 {
6975 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
6976 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
6977 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
6978 } D3D12_VIDEO_ENCODER_CODEC;
6979
6980typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
6981 {
6982 UINT NodeIndex;
6983 D3D12_VIDEO_ENCODER_CODEC Codec;
6984 BOOL IsSupported;
6985 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
6986
6987typedef
6988enum D3D12_VIDEO_ENCODER_PROFILE_H264
6989 {
6990 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
6991 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
6992 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
6993 } D3D12_VIDEO_ENCODER_PROFILE_H264;
6994
6995typedef
6996enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
6997 {
6998 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
6999 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
7000 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
7001 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
7002 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
7003 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
7004 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
7005 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
7006 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
7007 } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
7008
7009typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
7010 {
7011 UINT DataSize;
7012 union
7013 {
7014 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
7015 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
7016 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
7017 } ;
7018 } D3D12_VIDEO_ENCODER_PROFILE_DESC;
7019
7020typedef
7021enum D3D12_VIDEO_ENCODER_LEVELS_H264
7022 {
7023 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
7024 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
7025 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
7026 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
7027 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
7028 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
7029 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
7030 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
7031 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
7032 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
7033 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
7034 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
7035 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
7036 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
7037 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
7038 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
7039 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
7040 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
7041 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
7042 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
7043 } D3D12_VIDEO_ENCODER_LEVELS_H264;
7044
7045typedef
7046enum D3D12_VIDEO_ENCODER_TIER_HEVC
7047 {
7048 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
7049 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
7050 } D3D12_VIDEO_ENCODER_TIER_HEVC;
7051
7052typedef
7053enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
7054 {
7055 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
7056 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
7057 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
7058 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
7059 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
7060 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
7061 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
7062 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
7063 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
7064 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
7065 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
7066 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
7067 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
7068 } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
7069
7070typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
7071 {
7072 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
7073 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
7074 } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
7075
7076typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
7077 {
7078 UINT DataSize;
7079 union
7080 {
7081 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
7082 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
7083 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
7084 } ;
7085 } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
7086
7087typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
7088 {
7089 UINT NodeIndex;
7090 D3D12_VIDEO_ENCODER_CODEC Codec;
7091 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7092 BOOL IsSupported;
7093 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
7094 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
7095 } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
7096
7097typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098 {
7099 UINT Width;
7100 UINT Height;
7101 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104 {
7105 UINT WidthRatio;
7106 UINT HeightRatio;
7107 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
7110 {
7111 UINT NodeIndex;
7112 D3D12_VIDEO_ENCODER_CODEC Codec;
7113 UINT ResolutionRatiosCount;
7114 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
7115
7116typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
7117 {
7118 UINT NodeIndex;
7119 D3D12_VIDEO_ENCODER_CODEC Codec;
7120 UINT ResolutionRatiosCount;
7121 BOOL IsSupported;
7122 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
7123 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
7124 UINT ResolutionWidthMultipleRequirement;
7125 UINT ResolutionHeightMultipleRequirement;
7126 _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
7127 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
7128
7129typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
7130 {
7131 UINT NodeIndex;
7132 D3D12_VIDEO_ENCODER_CODEC Codec;
7133 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7134 DXGI_FORMAT Format;
7135 BOOL IsSupported;
7136 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
7137
7138typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
7139 {
7140 UINT NodeIndex;
7141 D3D12_VIDEO_ENCODER_CODEC Codec;
7142 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
7143 BOOL IsSupported;
7144 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
7145
7146typedef
7147enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
7148 {
7149 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
7150 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
7151 } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7152
7153typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
7154 {
7155 UINT NodeIndex;
7156 D3D12_VIDEO_ENCODER_CODEC Codec;
7157 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7158 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7159 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
7160 BOOL IsSupported;
7161 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7162
7163typedef
7164enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7165 {
7166 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
7167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
7168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
7169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
7170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
7171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
7172 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
7173 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
7174 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7175
7176typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7177 {
7178 UINT NodeIndex;
7179 D3D12_VIDEO_ENCODER_CODEC Codec;
7180 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7181 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7182 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7183 BOOL IsSupported;
7184 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7185
7186typedef
7187enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
7188 {
7189 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
7190 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
7191 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
7192 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
7193 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
7194 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
7195 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
7196 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
7197 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
7198 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
7199
7200DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7202 {
7203 BOOL Use128SuperBlocks;
7204 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
7205 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
7206 UINT MinTileRows;
7207 UINT MaxTileRows;
7208 UINT MinTileCols;
7209 UINT MaxTileCols;
7210 UINT MinTileWidth;
7211 UINT MaxTileWidth;
7212 UINT MinTileArea;
7213 UINT MaxTileArea;
7214 UINT TileSizeBytesMinus1;
7215 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7216
7217typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7218 {
7219 UINT DataSize;
7220 union
7221 {
7222 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
7223 } ;
7224 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7225
7226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
7227 {
7228 UINT NodeIndex;
7229 D3D12_VIDEO_ENCODER_CODEC Codec;
7230 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7231 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7232 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
7234 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
7235 BOOL IsSupported;
7236 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
7237
7238typedef
7239enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
7240 {
7241 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
7242 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
7243 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
7244 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
7245 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
7246 } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
7247
7248DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
7250 {
7251 UINT NodeMask;
7252 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
7253 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7254 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7255 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
7256 UINT ResolutionsListCount;
7257 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7258 } D3D12_VIDEO_ENCODER_HEAP_DESC;
7259
7260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
7261 {
7262 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
7263 BOOL IsSupported;
7264 UINT64 MemoryPoolL0Size;
7265 UINT64 MemoryPoolL1Size;
7266 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
7267
7268typedef
7269enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
7270 {
7271 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
7272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
7273 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7274 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
7275 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
7276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
7277 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
7278 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
7279 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
7280 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
7281
7282DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283typedef
7284enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
7285 {
7286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
7287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
7288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
7289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
7290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
7291 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
7292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
7293 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
7294
7295typedef
7296enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
7297 {
7298 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
7299 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 ) ,
7300 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 ) ,
7301 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 ) ,
7302 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 ) ,
7303 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 ) ,
7304 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 ) ,
7305 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 )
7306 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
7307
7308DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
7310 {
7311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
7312 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
7313 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
7314
7315typedef
7316enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
7317 {
7318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
7319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
7320 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7321 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
7322 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
7323 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
7324 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
7325 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
7326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
7327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
7328 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
7329 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
7330 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
7331 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
7332 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
7333 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
7334 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
7335 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
7336 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
7337 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
7338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
7339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
7340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
7341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
7342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
7343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
7344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
7345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
7346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
7347 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
7348 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
7349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
7350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
7351 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
7352
7353DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354typedef
7355enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
7356 {
7357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
7358 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
7359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
7360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
7361 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
7362
7363typedef
7364enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
7365 {
7366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
7367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
7368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
7369 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
7370 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
7371
7372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
7373 {
7374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7375 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7376 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7377 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7378 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7379 UCHAR max_transform_hierarchy_depth_inter;
7380 UCHAR max_transform_hierarchy_depth_intra;
7381 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
7382
7383typedef
7384enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
7385 {
7386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
7387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
7388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
7389 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
7390
7391DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
7393 {
7394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7399 UCHAR max_transform_hierarchy_depth_inter;
7400 UCHAR max_transform_hierarchy_depth_intra;
7401 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
7402 UINT allowed_log2_sao_offset_scale_luma_values;
7403 UINT allowed_log2_sao_offset_scale_chroma_values;
7404 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
7405 UINT allowed_chroma_qp_offset_list_len_minus1_values;
7406 UINT allowed_cb_qp_offset_list_values[ 6 ];
7407 UINT allowed_cr_qp_offset_list_values[ 6 ];
7408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
7409 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
7410
7411typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7412 {
7413 UINT DataSize;
7414 union
7415 {
7416 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
7417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
7418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
7419 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
7420 } ;
7421 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7422
7423typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7424 {
7425 UINT NodeIndex;
7426 D3D12_VIDEO_ENCODER_CODEC Codec;
7427 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7428 BOOL IsSupported;
7429 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
7430 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7431
7432typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
7433 {
7434 UINT MaxL0ReferencesForP;
7435 UINT MaxL0ReferencesForB;
7436 UINT MaxL1ReferencesForB;
7437 UINT MaxLongTermReferences;
7438 UINT MaxDPBCapacity;
7439 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
7440
7441typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
7442 {
7443 UINT MaxL0ReferencesForP;
7444 UINT MaxL0ReferencesForB;
7445 UINT MaxL1ReferencesForB;
7446 UINT MaxLongTermReferences;
7447 UINT MaxDPBCapacity;
7448 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
7449
7450typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7451 {
7452 UINT DataSize;
7453 union
7454 {
7455 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
7456 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
7457 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
7458 } ;
7459 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7460
7461typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7462 {
7463 UINT NodeIndex;
7464 D3D12_VIDEO_ENCODER_CODEC Codec;
7465 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7466 BOOL IsSupported;
7467 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
7468 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7469
7470typedef
7471enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
7472 {
7473 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
7474 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
7475 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
7476 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
7477 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
7478 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
7479 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
7480 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
7481 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
7482 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
7483 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
7484 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
7485 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
7486 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
7487 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
7488 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
7489 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
7490 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
7491 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
7492 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
7493 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
7494 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
7495 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
7496 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
7497 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
7498 } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
7499
7500DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501typedef
7502enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
7503 {
7504 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
7505 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
7506 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
7507 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
7508 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
7509 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
7510
7511DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512typedef
7513enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
7514 {
7515 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
7516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
7517 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
7518 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
7519
7520typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
7521 {
7522 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
7523 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
7524 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
7525 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
7526
7527typedef
7528enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
7529 {
7530 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
7531 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
7532 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
7533 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
7534 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
7535 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
7536 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
7537 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
7538 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
7539 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
7540 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
7541 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
7542 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
7543 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
7544 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
7545 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
7546 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
7547 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
7548 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
7549
7550DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
7552 {
7553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
7554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7557 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7558 UCHAR max_transform_hierarchy_depth_inter;
7559 UCHAR max_transform_hierarchy_depth_intra;
7560 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
7561
7562typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
7563 {
7564 UINT DataSize;
7565 union
7566 {
7567 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
7568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
7569 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
7570 } ;
7571 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
7572
7573typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
7574 {
7575 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
7576 UINT IntraRefreshDuration;
7577 } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
7578
7579typedef
7580enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
7581 {
7582 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
7583 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
7584 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
7585 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
7586 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
7587 } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
7588
7589typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
7590 {
7591 UINT MaxSubregionsNumber;
7592 UINT MaxIntraRefreshFrameDuration;
7593 UINT SubregionBlockPixelsSize;
7594 UINT QPMapRegionPixelsSize;
7595 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
7596
7597typedef
7598enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
7599 {
7600 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
7601 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
7602 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
7603 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
7604 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
7605 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
7606 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
7607 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
7608 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
7609 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
7610 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
7611 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
7612 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
7613 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
7614 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
7615 } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
7616
7617DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
7619 {
7620 UINT GOPLength;
7621 UINT PPicturePeriod;
7622 UCHAR pic_order_cnt_type;
7623 UCHAR log2_max_frame_num_minus4;
7624 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7625 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
7626
7627typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
7628 {
7629 UINT GOPLength;
7630 UINT PPicturePeriod;
7631 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7632 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
7633
7634typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
7635 {
7636 UINT DataSize;
7637 union
7638 {
7639 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
7640 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
7641 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
7642 } ;
7643 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
7644
7645typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
7646 {
7647 UINT NodeIndex;
7648 D3D12_VIDEO_ENCODER_CODEC Codec;
7649 DXGI_FORMAT InputFormat;
7650 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7651 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7652 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7653 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7654 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7655 UINT ResolutionsListCount;
7656 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7657 UINT MaxReferenceFramesInDPB;
7658 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7659 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7660 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7661 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7662 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7663 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
7664
7665typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
7666 {
7667 union
7668 {
7669 UINT MaxBytesPerSlice;
7670 UINT NumberOfCodingUnitsPerSlice;
7671 UINT NumberOfRowsPerSlice;
7672 UINT NumberOfSlicesPerFrame;
7673 } ;
7674 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
7675
7676typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
7677 {
7678 UINT DataSize;
7679 union
7680 {
7681 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
7682 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
7683 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
7684 } ;
7685 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
7686
7687typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
7688 {
7689 UINT NodeIndex;
7690 D3D12_VIDEO_ENCODER_CODEC Codec;
7691 DXGI_FORMAT InputFormat;
7692 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7693 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7694 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7695 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7696 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7697 UINT ResolutionsListCount;
7698 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7699 UINT MaxReferenceFramesInDPB;
7700 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7701 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7702 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7703 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7704 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7705 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
7706 UINT MaxQualityVsSpeed;
7707 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
7708
7709typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
7710 {
7711 UINT NodeIndex;
7712 D3D12_VIDEO_ENCODER_CODEC Codec;
7713 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7714 DXGI_FORMAT InputFormat;
7715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
7716 BOOL IsSupported;
7717 UINT CompressedBitstreamBufferAccessAlignment;
7718 UINT EncoderMetadataBufferAccessAlignment;
7719 UINT MaxEncoderOutputMetadataBufferSize;
7720 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
7721
7722typedef
7723enum D3D12_VIDEO_ENCODER_FLAGS
7724 {
7725 D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726 } D3D12_VIDEO_ENCODER_FLAGS;
7727
7728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729typedef struct D3D12_VIDEO_ENCODER_DESC
7730 {
7731 UINT NodeMask;
7732 D3D12_VIDEO_ENCODER_FLAGS Flags;
7733 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7734 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7735 DXGI_FORMAT InputFormat;
7736 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7737 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
7738 } D3D12_VIDEO_ENCODER_DESC;
7739
7740
7741
7742extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
7744
7745#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
7746#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
7747
7748/* interface ID3D12VideoEncoder */
7749/* [unique][local][object][uuid] */
7750
7751
7752EXTERN_C const IID IID_ID3D12VideoEncoder;
7753
7754#if defined(__cplusplus) && !defined(CINTERFACE)
7755
7756 MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
7757 ID3D12VideoEncoder : public ID3D12Pageable
7758 {
7759 public:
7760 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7761
7762 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
7763
7764 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7765
7766 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7767 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7768
7769 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
7770 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
7771
7772 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
7773
7774 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
7775
7776 };
7777
7778
7779#else /* C style interface */
7780
7781 typedef struct ID3D12VideoEncoderVtbl
7782 {
7783 BEGIN_INTERFACE
7784
7785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7787 ID3D12VideoEncoder * This,
7788 REFIID riid,
7789 _COM_Outptr_ void **ppvObject);
7790
7791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7792 ULONG ( STDMETHODCALLTYPE *AddRef )(
7793 ID3D12VideoEncoder * This);
7794
7795 DECLSPEC_XFGVIRT(IUnknown, Release)
7796 ULONG ( STDMETHODCALLTYPE *Release )(
7797 ID3D12VideoEncoder * This);
7798
7799 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7800 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7801 ID3D12VideoEncoder * This,
7802 _In_ REFGUID guid,
7803 _Inout_ UINT *pDataSize,
7804 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7805
7806 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7807 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7808 ID3D12VideoEncoder * This,
7809 _In_ REFGUID guid,
7810 _In_ UINT DataSize,
7811 _In_reads_bytes_opt_( DataSize ) const void *pData);
7812
7813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7814 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7815 ID3D12VideoEncoder * This,
7816 _In_ REFGUID guid,
7817 _In_opt_ const IUnknown *pData);
7818
7819 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7820 HRESULT ( STDMETHODCALLTYPE *SetName )(
7821 ID3D12VideoEncoder * This,
7822 _In_z_ LPCWSTR Name);
7823
7824 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7825 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7826 ID3D12VideoEncoder * This,
7827 REFIID riid,
7828 _COM_Outptr_opt_ void **ppvDevice);
7829
7830 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
7831 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
7832 ID3D12VideoEncoder * This);
7833
7834 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
7835 D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
7836 ID3D12VideoEncoder * This);
7837
7838 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
7839 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
7840 ID3D12VideoEncoder * This);
7841
7842 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
7843 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
7844 ID3D12VideoEncoder * This,
7845 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
7846
7847 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
7848 HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
7849 ID3D12VideoEncoder * This,
7850 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
7851
7852 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
7853 DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
7854 ID3D12VideoEncoder * This);
7855
7856 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
7857 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
7858 ID3D12VideoEncoder * This);
7859
7860 END_INTERFACE
7861 } ID3D12VideoEncoderVtbl;
7862
7863 interface ID3D12VideoEncoder
7864 {
7865 CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
7866 };
7867
7868
7869
7870#ifdef COBJMACROS
7871
7872
7873#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
7874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7875
7876#define ID3D12VideoEncoder_AddRef(This) \
7877 ( (This)->lpVtbl -> AddRef(This) )
7878
7879#define ID3D12VideoEncoder_Release(This) \
7880 ( (This)->lpVtbl -> Release(This) )
7881
7882
7883#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
7884 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7885
7886#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
7887 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7888
7889#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
7890 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7891
7892#define ID3D12VideoEncoder_SetName(This,Name) \
7893 ( (This)->lpVtbl -> SetName(This,Name) )
7894
7895
7896#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
7897 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7898
7899
7900
7901#define ID3D12VideoEncoder_GetNodeMask(This) \
7902 ( (This)->lpVtbl -> GetNodeMask(This) )
7903
7904#define ID3D12VideoEncoder_GetEncoderFlags(This) \
7905 ( (This)->lpVtbl -> GetEncoderFlags(This) )
7906
7907#define ID3D12VideoEncoder_GetCodec(This) \
7908 ( (This)->lpVtbl -> GetCodec(This) )
7909
7910#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
7911 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
7912
7913#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
7914 ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
7915
7916#define ID3D12VideoEncoder_GetInputFormat(This) \
7917 ( (This)->lpVtbl -> GetInputFormat(This) )
7918
7919#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
7920 ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
7921
7922#endif /* COBJMACROS */
7923
7924
7925#endif /* C style interface */
7926
7927
7928
7929
7930#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
7931
7932
7933#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7934#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7935
7936/* interface ID3D12VideoEncoderHeap */
7937/* [unique][local][object][uuid] */
7938
7939
7940EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
7941
7942#if defined(__cplusplus) && !defined(CINTERFACE)
7943
7944 MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
7945 ID3D12VideoEncoderHeap : public ID3D12Pageable
7946 {
7947 public:
7948 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7949
7950 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
7951
7952 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7953
7954 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7955 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7956
7957 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
7958 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
7959
7960 virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
7961
7962 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
7963 const UINT ResolutionsListCount,
7964 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
7965
7966 };
7967
7968
7969#else /* C style interface */
7970
7971 typedef struct ID3D12VideoEncoderHeapVtbl
7972 {
7973 BEGIN_INTERFACE
7974
7975 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7976 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7977 ID3D12VideoEncoderHeap * This,
7978 REFIID riid,
7979 _COM_Outptr_ void **ppvObject);
7980
7981 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7982 ULONG ( STDMETHODCALLTYPE *AddRef )(
7983 ID3D12VideoEncoderHeap * This);
7984
7985 DECLSPEC_XFGVIRT(IUnknown, Release)
7986 ULONG ( STDMETHODCALLTYPE *Release )(
7987 ID3D12VideoEncoderHeap * This);
7988
7989 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7990 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7991 ID3D12VideoEncoderHeap * This,
7992 _In_ REFGUID guid,
7993 _Inout_ UINT *pDataSize,
7994 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7995
7996 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7997 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7998 ID3D12VideoEncoderHeap * This,
7999 _In_ REFGUID guid,
8000 _In_ UINT DataSize,
8001 _In_reads_bytes_opt_( DataSize ) const void *pData);
8002
8003 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8004 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8005 ID3D12VideoEncoderHeap * This,
8006 _In_ REFGUID guid,
8007 _In_opt_ const IUnknown *pData);
8008
8009 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8010 HRESULT ( STDMETHODCALLTYPE *SetName )(
8011 ID3D12VideoEncoderHeap * This,
8012 _In_z_ LPCWSTR Name);
8013
8014 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8015 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8016 ID3D12VideoEncoderHeap * This,
8017 REFIID riid,
8018 _COM_Outptr_opt_ void **ppvDevice);
8019
8020 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
8021 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
8022 ID3D12VideoEncoderHeap * This);
8023
8024 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
8025 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
8026 ID3D12VideoEncoderHeap * This);
8027
8028 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
8029 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
8030 ID3D12VideoEncoderHeap * This);
8031
8032 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
8033 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
8034 ID3D12VideoEncoderHeap * This,
8035 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
8036
8037 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
8038 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
8039 ID3D12VideoEncoderHeap * This,
8040 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
8041
8042 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
8043 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
8044 ID3D12VideoEncoderHeap * This);
8045
8046 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
8047 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
8048 ID3D12VideoEncoderHeap * This,
8049 const UINT ResolutionsListCount,
8050 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
8051
8052 END_INTERFACE
8053 } ID3D12VideoEncoderHeapVtbl;
8054
8055 interface ID3D12VideoEncoderHeap
8056 {
8057 CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
8058 };
8059
8060
8061
8062#ifdef COBJMACROS
8063
8064
8065#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
8066 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8067
8068#define ID3D12VideoEncoderHeap_AddRef(This) \
8069 ( (This)->lpVtbl -> AddRef(This) )
8070
8071#define ID3D12VideoEncoderHeap_Release(This) \
8072 ( (This)->lpVtbl -> Release(This) )
8073
8074
8075#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
8076 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8077
8078#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
8079 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8080
8081#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
8082 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8083
8084#define ID3D12VideoEncoderHeap_SetName(This,Name) \
8085 ( (This)->lpVtbl -> SetName(This,Name) )
8086
8087
8088#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
8089 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8090
8091
8092
8093#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
8094 ( (This)->lpVtbl -> GetNodeMask(This) )
8095
8096#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
8097 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
8098
8099#define ID3D12VideoEncoderHeap_GetCodec(This) \
8100 ( (This)->lpVtbl -> GetCodec(This) )
8101
8102#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
8103 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
8104
8105#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
8106 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
8107
8108#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
8109 ( (This)->lpVtbl -> GetResolutionListCount(This) )
8110
8111#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
8112 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
8113
8114#endif /* COBJMACROS */
8115
8116
8117#endif /* C style interface */
8118
8119
8120
8121
8122#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
8123
8124
8125#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
8126#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
8127
8128/* interface ID3D12VideoDevice3 */
8129/* [unique][local][object][uuid] */
8130
8131
8132EXTERN_C const IID IID_ID3D12VideoDevice3;
8133
8134#if defined(__cplusplus) && !defined(CINTERFACE)
8135
8136 MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
8137 ID3D12VideoDevice3 : public ID3D12VideoDevice2
8138 {
8139 public:
8140 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
8141 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8142 _In_ REFIID riid,
8143 _COM_Outptr_ void **ppVideoEncoder) = 0;
8144
8145 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
8146 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8147 _In_ REFIID riid,
8148 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
8149
8150 };
8151
8152
8153#else /* C style interface */
8154
8155 typedef struct ID3D12VideoDevice3Vtbl
8156 {
8157 BEGIN_INTERFACE
8158
8159 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8160 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8161 ID3D12VideoDevice3 * This,
8162 REFIID riid,
8163 _COM_Outptr_ void **ppvObject);
8164
8165 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8166 ULONG ( STDMETHODCALLTYPE *AddRef )(
8167 ID3D12VideoDevice3 * This);
8168
8169 DECLSPEC_XFGVIRT(IUnknown, Release)
8170 ULONG ( STDMETHODCALLTYPE *Release )(
8171 ID3D12VideoDevice3 * This);
8172
8173 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
8174 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8175 ID3D12VideoDevice3 * This,
8176 D3D12_FEATURE_VIDEO FeatureVideo,
8177 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8178 UINT FeatureSupportDataSize);
8179
8180 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
8181 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
8182 ID3D12VideoDevice3 * This,
8183 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8184 _In_ REFIID riid,
8185 _COM_Outptr_ void **ppVideoDecoder);
8186
8187 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
8188 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
8189 ID3D12VideoDevice3 * This,
8190 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8191 _In_ REFIID riid,
8192 _COM_Outptr_ void **ppVideoDecoderHeap);
8193
8194 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
8195 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
8196 ID3D12VideoDevice3 * This,
8197 UINT NodeMask,
8198 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8199 UINT NumInputStreamDescs,
8200 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8201 _In_ REFIID riid,
8202 _COM_Outptr_ void **ppVideoProcessor);
8203
8204 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
8205 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
8206 ID3D12VideoDevice3 * This,
8207 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
8208 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8209 _In_ REFIID riid,
8210 _COM_Outptr_ void **ppVideoMotionEstimator);
8211
8212 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
8213 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
8214 ID3D12VideoDevice3 * This,
8215 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
8216 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8217 _In_ REFIID riid,
8218 _COM_Outptr_ void **ppVideoMotionVectorHeap);
8219
8220 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
8221 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
8222 ID3D12VideoDevice3 * This,
8223 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8224 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8225 _In_ REFIID riid,
8226 _COM_Outptr_ void **ppVideoDecoder);
8227
8228 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
8229 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
8230 ID3D12VideoDevice3 * This,
8231 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8232 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8233 _In_ REFIID riid,
8234 _COM_Outptr_ void **ppVideoDecoderHeap);
8235
8236 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
8237 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
8238 ID3D12VideoDevice3 * This,
8239 UINT NodeMask,
8240 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8241 UINT NumInputStreamDescs,
8242 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8243 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8244 _In_ REFIID riid,
8245 _COM_Outptr_ void **ppVideoProcessor);
8246
8247 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
8248 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
8249 ID3D12VideoDevice3 * This,
8250 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
8251 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
8252 SIZE_T CreationParametersDataSizeInBytes,
8253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8254 _In_ REFIID riid,
8255 _COM_Outptr_ void **ppVideoExtensionCommand);
8256
8257 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
8258 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8259 ID3D12VideoDevice3 * This,
8260 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8261 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8262 SIZE_T ExecutionParametersSizeInBytes,
8263 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
8264 SIZE_T OutputDataSizeInBytes);
8265
8266 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
8267 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
8268 ID3D12VideoDevice3 * This,
8269 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8270 _In_ REFIID riid,
8271 _COM_Outptr_ void **ppVideoEncoder);
8272
8273 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
8274 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
8275 ID3D12VideoDevice3 * This,
8276 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8277 _In_ REFIID riid,
8278 _COM_Outptr_ void **ppVideoEncoderHeap);
8279
8280 END_INTERFACE
8281 } ID3D12VideoDevice3Vtbl;
8282
8283 interface ID3D12VideoDevice3
8284 {
8285 CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
8286 };
8287
8288
8289
8290#ifdef COBJMACROS
8291
8292
8293#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
8294 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8295
8296#define ID3D12VideoDevice3_AddRef(This) \
8297 ( (This)->lpVtbl -> AddRef(This) )
8298
8299#define ID3D12VideoDevice3_Release(This) \
8300 ( (This)->lpVtbl -> Release(This) )
8301
8302
8303#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
8304 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
8305
8306#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
8307 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
8308
8309#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
8310 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
8311
8312#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
8313 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
8314
8315
8316#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
8317 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
8318
8319#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
8320 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
8321
8322
8323#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
8324 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
8325
8326#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
8327 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
8328
8329#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
8330 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
8331
8332#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
8333 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
8334
8335#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
8336 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
8337
8338
8339#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
8340 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
8341
8342#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
8343 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
8344
8345#endif /* COBJMACROS */
8346
8347
8348#endif /* C style interface */
8349
8350
8351
8352
8353#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
8354
8355
8356/* interface __MIDL_itf_d3d12video_0000_0025 */
8357/* [local] */
8358
8359typedef
8360enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
8361 {
8362 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
8363 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
8364 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
8365 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
8366 } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
8367
8368typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
8369 {
8370 UINT ReconstructedPictureResourceIndex;
8371 BOOL IsLongTermReference;
8372 UINT LongTermPictureIdx;
8373 UINT PictureOrderCountNumber;
8374 UINT FrameDecodingOrderNumber;
8375 UINT TemporalLayerIndex;
8376 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
8377
8378typedef
8379enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
8380 {
8381 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
8382 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8383 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
8384 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
8385
8386DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
8388 {
8389 UCHAR memory_management_control_operation;
8390 UINT difference_of_pic_nums_minus1;
8391 UINT long_term_pic_num;
8392 UINT long_term_frame_idx;
8393 UINT max_long_term_frame_idx_plus1;
8394 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
8395
8396typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
8397 {
8398 UCHAR modification_of_pic_nums_idc;
8399 UINT abs_diff_pic_num_minus1;
8400 UINT long_term_pic_num;
8401 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
8402
8403typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
8404 {
8405 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
8406 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
8407 UINT pic_parameter_set_id;
8408 UINT idr_pic_id;
8409 UINT PictureOrderCountNumber;
8410 UINT FrameDecodingOrderNumber;
8411 UINT TemporalLayerIndex;
8412 UINT List0ReferenceFramesCount;
8413 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8414 UINT List1ReferenceFramesCount;
8415 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8416 UINT ReferenceFramesReconPictureDescriptorsCount;
8417 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
8418 UCHAR adaptive_ref_pic_marking_mode_flag;
8419 UINT RefPicMarkingOperationsCommandsCount;
8420 _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
8421 UINT List0RefPicModificationsCount;
8422 _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
8423 UINT List1RefPicModificationsCount;
8424 _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
8425 UINT QPMapValuesCount;
8426 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8427 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
8428
8429typedef
8430enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
8431 {
8432 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
8433 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
8434 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
8435 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
8436 } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
8437
8438typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
8439 {
8440 UINT ReconstructedPictureResourceIndex;
8441 BOOL IsRefUsedByCurrentPic;
8442 BOOL IsLongTermReference;
8443 UINT PictureOrderCountNumber;
8444 UINT TemporalLayerIndex;
8445 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
8446
8447typedef
8448enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
8449 {
8450 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
8451 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8452 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
8453 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
8454 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
8455 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
8456
8457DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
8459 {
8460 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8461 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8462 UINT slice_pic_parameter_set_id;
8463 UINT PictureOrderCountNumber;
8464 UINT TemporalLayerIndex;
8465 UINT List0ReferenceFramesCount;
8466 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8467 UINT List1ReferenceFramesCount;
8468 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8469 UINT ReferenceFramesReconPictureDescriptorsCount;
8470 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8471 UINT List0RefPicModificationsCount;
8472 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8473 UINT List1RefPicModificationsCount;
8474 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8475 UINT QPMapValuesCount;
8476 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8477 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
8478
8479typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
8480 {
8481 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8482 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8483 UINT slice_pic_parameter_set_id;
8484 UINT PictureOrderCountNumber;
8485 UINT TemporalLayerIndex;
8486 UINT List0ReferenceFramesCount;
8487 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8488 UINT List1ReferenceFramesCount;
8489 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8490 UINT ReferenceFramesReconPictureDescriptorsCount;
8491 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8492 UINT List0RefPicModificationsCount;
8493 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8494 UINT List1RefPicModificationsCount;
8495 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8496 UINT QPMapValuesCount;
8497 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8498 UCHAR diff_cu_chroma_qp_offset_depth;
8499 UCHAR log2_sao_offset_scale_luma;
8500 UCHAR log2_sao_offset_scale_chroma;
8501 UCHAR log2_max_transform_skip_block_size_minus2;
8502 UCHAR chroma_qp_offset_list_len_minus1;
8503 CHAR cb_qp_offset_list[ 6 ];
8504 CHAR cr_qp_offset_list[ 6 ];
8505 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
8506
8507typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
8508 {
8509 UINT DataSize;
8510 union
8511 {
8512 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
8513 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
8514 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
8515 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
8516 } ;
8517 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
8518
8519typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
8520 {
8521 UINT NumTexture2Ds;
8522 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
8523 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
8524 } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
8525
8526typedef
8527enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
8528 {
8529 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
8530 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
8531 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
8532 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
8533 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
8534 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
8535
8536DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
8538 {
8539 UINT IntraRefreshFrameIndex;
8540 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
8541 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
8542 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
8543 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
8544
8545typedef
8546enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
8547 {
8548 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
8549 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
8550 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
8551 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
8552 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
8553 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
8554 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
8555
8556DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
8558 {
8559 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
8560 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
8561 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
8562 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
8563 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
8564 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
8565 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
8566 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
8567
8568typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
8569 {
8570 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
8571 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
8572 ID3D12Resource *pInputFrame;
8573 UINT InputFrameSubresource;
8574 UINT CurrentFrameBitstreamMetadataSize;
8575 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
8576
8577typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578 {
8579 ID3D12Resource *pBuffer;
8580 UINT64 FrameStartOffset;
8581 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584 {
8585 ID3D12Resource *pReconstructedPicture;
8586 UINT ReconstructedPictureSubresource;
8587 } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
8590 {
8591 UINT64 bSize;
8592 UINT64 bStartOffset;
8593 UINT64 bHeaderSize;
8594 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
8595
8596typedef
8597enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
8598 {
8599 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
8600 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
8601 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
8602 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
8603 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
8604 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
8605 } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
8606
8607DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
8609 {
8610 UINT64 AverageQP;
8611 UINT64 IntraCodingUnitsCount;
8612 UINT64 InterCodingUnitsCount;
8613 UINT64 SkipCodingUnitsCount;
8614 UINT64 AverageMotionEstimationXDirection;
8615 UINT64 AverageMotionEstimationYDirection;
8616 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
8617
8618typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
8619 {
8620 UINT64 EncodeErrorFlags;
8621 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
8622 UINT64 EncodedBitstreamWrittenBytesCount;
8623 UINT64 WrittenSubregionsCount;
8624 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
8625
8626typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627 {
8628 ID3D12Resource *pBuffer;
8629 UINT64 Offset;
8630 } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
8633 {
8634 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
8635 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
8636 DXGI_FORMAT EncoderInputFormat;
8637 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
8638 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
8639 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
8640
8641typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
8642 {
8643 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
8644 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
8645
8646typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
8647 {
8648 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
8649 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
8650 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
8651 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
8652
8653
8654
8655extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
8657
8658#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8659#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8660
8661/* interface ID3D12VideoEncodeCommandList2 */
8662/* [unique][local][object][uuid] */
8663
8664
8665EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
8666
8667#if defined(__cplusplus) && !defined(CINTERFACE)
8668
8669 MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
8670 ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
8671 {
8672 public:
8673 virtual void STDMETHODCALLTYPE EncodeFrame(
8674 _In_ ID3D12VideoEncoder *pEncoder,
8675 _In_ ID3D12VideoEncoderHeap *pHeap,
8676 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8677 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8678
8679 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
8680 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8681 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8682
8683 };
8684
8685
8686#else /* C style interface */
8687
8688 typedef struct ID3D12VideoEncodeCommandList2Vtbl
8689 {
8690 BEGIN_INTERFACE
8691
8692 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8693 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8694 ID3D12VideoEncodeCommandList2 * This,
8695 REFIID riid,
8696 _COM_Outptr_ void **ppvObject);
8697
8698 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8699 ULONG ( STDMETHODCALLTYPE *AddRef )(
8700 ID3D12VideoEncodeCommandList2 * This);
8701
8702 DECLSPEC_XFGVIRT(IUnknown, Release)
8703 ULONG ( STDMETHODCALLTYPE *Release )(
8704 ID3D12VideoEncodeCommandList2 * This);
8705
8706 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8707 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8708 ID3D12VideoEncodeCommandList2 * This,
8709 _In_ REFGUID guid,
8710 _Inout_ UINT *pDataSize,
8711 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8712
8713 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8714 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8715 ID3D12VideoEncodeCommandList2 * This,
8716 _In_ REFGUID guid,
8717 _In_ UINT DataSize,
8718 _In_reads_bytes_opt_( DataSize ) const void *pData);
8719
8720 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8721 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8722 ID3D12VideoEncodeCommandList2 * This,
8723 _In_ REFGUID guid,
8724 _In_opt_ const IUnknown *pData);
8725
8726 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8727 HRESULT ( STDMETHODCALLTYPE *SetName )(
8728 ID3D12VideoEncodeCommandList2 * This,
8729 _In_z_ LPCWSTR Name);
8730
8731 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8732 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8733 ID3D12VideoEncodeCommandList2 * This,
8734 REFIID riid,
8735 _COM_Outptr_opt_ void **ppvDevice);
8736
8737 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8738 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8739 ID3D12VideoEncodeCommandList2 * This);
8740
8741 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
8742 HRESULT ( STDMETHODCALLTYPE *Close )(
8743 ID3D12VideoEncodeCommandList2 * This);
8744
8745 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
8746 HRESULT ( STDMETHODCALLTYPE *Reset )(
8747 ID3D12VideoEncodeCommandList2 * This,
8748 _In_ ID3D12CommandAllocator *pAllocator);
8749
8750 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
8751 void ( STDMETHODCALLTYPE *ClearState )(
8752 ID3D12VideoEncodeCommandList2 * This);
8753
8754 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
8755 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8756 ID3D12VideoEncodeCommandList2 * This,
8757 _In_ UINT NumBarriers,
8758 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8759
8760 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
8761 void ( STDMETHODCALLTYPE *DiscardResource )(
8762 ID3D12VideoEncodeCommandList2 * This,
8763 _In_ ID3D12Resource *pResource,
8764 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8765
8766 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
8767 void ( STDMETHODCALLTYPE *BeginQuery )(
8768 ID3D12VideoEncodeCommandList2 * This,
8769 _In_ ID3D12QueryHeap *pQueryHeap,
8770 _In_ D3D12_QUERY_TYPE Type,
8771 _In_ UINT Index);
8772
8773 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
8774 void ( STDMETHODCALLTYPE *EndQuery )(
8775 ID3D12VideoEncodeCommandList2 * This,
8776 _In_ ID3D12QueryHeap *pQueryHeap,
8777 _In_ D3D12_QUERY_TYPE Type,
8778 _In_ UINT Index);
8779
8780 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
8781 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8782 ID3D12VideoEncodeCommandList2 * This,
8783 _In_ ID3D12QueryHeap *pQueryHeap,
8784 _In_ D3D12_QUERY_TYPE Type,
8785 _In_ UINT StartIndex,
8786 _In_ UINT NumQueries,
8787 _In_ ID3D12Resource *pDestinationBuffer,
8788 _In_ UINT64 AlignedDestinationBufferOffset);
8789
8790 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
8791 void ( STDMETHODCALLTYPE *SetPredication )(
8792 ID3D12VideoEncodeCommandList2 * This,
8793 _In_opt_ ID3D12Resource *pBuffer,
8794 _In_ UINT64 AlignedBufferOffset,
8795 _In_ D3D12_PREDICATION_OP Operation);
8796
8797 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
8798 void ( STDMETHODCALLTYPE *SetMarker )(
8799 ID3D12VideoEncodeCommandList2 * This,
8800 UINT Metadata,
8801 _In_reads_bytes_opt_(Size) const void *pData,
8802 UINT Size);
8803
8804 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
8805 void ( STDMETHODCALLTYPE *BeginEvent )(
8806 ID3D12VideoEncodeCommandList2 * This,
8807 UINT Metadata,
8808 _In_reads_bytes_opt_(Size) const void *pData,
8809 UINT Size);
8810
8811 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
8812 void ( STDMETHODCALLTYPE *EndEvent )(
8813 ID3D12VideoEncodeCommandList2 * This);
8814
8815 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
8816 void ( STDMETHODCALLTYPE *EstimateMotion )(
8817 ID3D12VideoEncodeCommandList2 * This,
8818 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
8819 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
8820 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
8821
8822 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
8823 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
8824 ID3D12VideoEncodeCommandList2 * This,
8825 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
8826 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
8827
8828 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
8829 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8830 ID3D12VideoEncodeCommandList2 * This,
8831 UINT Count,
8832 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8833 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8834
8835 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
8836 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
8837 ID3D12VideoEncodeCommandList2 * This,
8838 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
8839
8840 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
8841 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
8842 ID3D12VideoEncodeCommandList2 * This,
8843 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8844 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
8845 SIZE_T InitializationParametersSizeInBytes);
8846
8847 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
8848 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8849 ID3D12VideoEncodeCommandList2 * This,
8850 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8851 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8852 SIZE_T ExecutionParametersSizeInBytes);
8853
8854 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
8855 void ( STDMETHODCALLTYPE *EncodeFrame )(
8856 ID3D12VideoEncodeCommandList2 * This,
8857 _In_ ID3D12VideoEncoder *pEncoder,
8858 _In_ ID3D12VideoEncoderHeap *pHeap,
8859 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8860 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
8861
8862 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
8863 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
8864 ID3D12VideoEncodeCommandList2 * This,
8865 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8866 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
8867
8868 END_INTERFACE
8869 } ID3D12VideoEncodeCommandList2Vtbl;
8870
8871 interface ID3D12VideoEncodeCommandList2
8872 {
8873 CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
8874 };
8875
8876
8877
8878#ifdef COBJMACROS
8879
8880
8881#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
8882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8883
8884#define ID3D12VideoEncodeCommandList2_AddRef(This) \
8885 ( (This)->lpVtbl -> AddRef(This) )
8886
8887#define ID3D12VideoEncodeCommandList2_Release(This) \
8888 ( (This)->lpVtbl -> Release(This) )
8889
8890
8891#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8892 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8893
8894#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8895 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8896
8897#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
8898 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8899
8900#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
8901 ( (This)->lpVtbl -> SetName(This,Name) )
8902
8903
8904#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
8905 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8906
8907
8908#define ID3D12VideoEncodeCommandList2_GetType(This) \
8909 ( (This)->lpVtbl -> GetType(This) )
8910
8911
8912#define ID3D12VideoEncodeCommandList2_Close(This) \
8913 ( (This)->lpVtbl -> Close(This) )
8914
8915#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
8916 ( (This)->lpVtbl -> Reset(This,pAllocator) )
8917
8918#define ID3D12VideoEncodeCommandList2_ClearState(This) \
8919 ( (This)->lpVtbl -> ClearState(This) )
8920
8921#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8922 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8923
8924#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
8925 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8926
8927#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8928 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8929
8930#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8931 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8932
8933#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8934 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8935
8936#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8937 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8938
8939#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
8940 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8941
8942#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
8943 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8944
8945#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
8946 ( (This)->lpVtbl -> EndEvent(This) )
8947
8948#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
8949 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
8950
8951#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
8952 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
8953
8954#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8955 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8956
8957#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
8958 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
8959
8960
8961#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
8962 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
8963
8964#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
8965 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
8966
8967
8968#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
8969 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
8970
8971#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
8972 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
8973
8974#endif /* COBJMACROS */
8975
8976
8977#endif /* C style interface */
8978
8979
8980
8981
8982#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
8983
8984
8985#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8986#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8987
8988/* interface ID3D12VideoEncodeCommandList3 */
8989/* [unique][local][object][uuid] */
8990
8991
8992EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
8993
8994#if defined(__cplusplus) && !defined(CINTERFACE)
8995
8996 MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
8997 ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
8998 {
8999 public:
9000 virtual void STDMETHODCALLTYPE Barrier(
9001 UINT32 NumBarrierGroups,
9002 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
9003
9004 };
9005
9006
9007#else /* C style interface */
9008
9009 typedef struct ID3D12VideoEncodeCommandList3Vtbl
9010 {
9011 BEGIN_INTERFACE
9012
9013 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9014 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9015 ID3D12VideoEncodeCommandList3 * This,
9016 REFIID riid,
9017 _COM_Outptr_ void **ppvObject);
9018
9019 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9020 ULONG ( STDMETHODCALLTYPE *AddRef )(
9021 ID3D12VideoEncodeCommandList3 * This);
9022
9023 DECLSPEC_XFGVIRT(IUnknown, Release)
9024 ULONG ( STDMETHODCALLTYPE *Release )(
9025 ID3D12VideoEncodeCommandList3 * This);
9026
9027 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9028 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9029 ID3D12VideoEncodeCommandList3 * This,
9030 _In_ REFGUID guid,
9031 _Inout_ UINT *pDataSize,
9032 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9033
9034 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9035 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9036 ID3D12VideoEncodeCommandList3 * This,
9037 _In_ REFGUID guid,
9038 _In_ UINT DataSize,
9039 _In_reads_bytes_opt_( DataSize ) const void *pData);
9040
9041 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9042 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9043 ID3D12VideoEncodeCommandList3 * This,
9044 _In_ REFGUID guid,
9045 _In_opt_ const IUnknown *pData);
9046
9047 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9048 HRESULT ( STDMETHODCALLTYPE *SetName )(
9049 ID3D12VideoEncodeCommandList3 * This,
9050 _In_z_ LPCWSTR Name);
9051
9052 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9053 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9054 ID3D12VideoEncodeCommandList3 * This,
9055 REFIID riid,
9056 _COM_Outptr_opt_ void **ppvDevice);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
9059 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
9060 ID3D12VideoEncodeCommandList3 * This);
9061
9062 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
9063 HRESULT ( STDMETHODCALLTYPE *Close )(
9064 ID3D12VideoEncodeCommandList3 * This);
9065
9066 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
9067 HRESULT ( STDMETHODCALLTYPE *Reset )(
9068 ID3D12VideoEncodeCommandList3 * This,
9069 _In_ ID3D12CommandAllocator *pAllocator);
9070
9071 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
9072 void ( STDMETHODCALLTYPE *ClearState )(
9073 ID3D12VideoEncodeCommandList3 * This);
9074
9075 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
9076 void ( STDMETHODCALLTYPE *ResourceBarrier )(
9077 ID3D12VideoEncodeCommandList3 * This,
9078 _In_ UINT NumBarriers,
9079 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
9080
9081 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
9082 void ( STDMETHODCALLTYPE *DiscardResource )(
9083 ID3D12VideoEncodeCommandList3 * This,
9084 _In_ ID3D12Resource *pResource,
9085 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
9086
9087 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
9088 void ( STDMETHODCALLTYPE *BeginQuery )(
9089 ID3D12VideoEncodeCommandList3 * This,
9090 _In_ ID3D12QueryHeap *pQueryHeap,
9091 _In_ D3D12_QUERY_TYPE Type,
9092 _In_ UINT Index);
9093
9094 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
9095 void ( STDMETHODCALLTYPE *EndQuery )(
9096 ID3D12VideoEncodeCommandList3 * This,
9097 _In_ ID3D12QueryHeap *pQueryHeap,
9098 _In_ D3D12_QUERY_TYPE Type,
9099 _In_ UINT Index);
9100
9101 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
9102 void ( STDMETHODCALLTYPE *ResolveQueryData )(
9103 ID3D12VideoEncodeCommandList3 * This,
9104 _In_ ID3D12QueryHeap *pQueryHeap,
9105 _In_ D3D12_QUERY_TYPE Type,
9106 _In_ UINT StartIndex,
9107 _In_ UINT NumQueries,
9108 _In_ ID3D12Resource *pDestinationBuffer,
9109 _In_ UINT64 AlignedDestinationBufferOffset);
9110
9111 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
9112 void ( STDMETHODCALLTYPE *SetPredication )(
9113 ID3D12VideoEncodeCommandList3 * This,
9114 _In_opt_ ID3D12Resource *pBuffer,
9115 _In_ UINT64 AlignedBufferOffset,
9116 _In_ D3D12_PREDICATION_OP Operation);
9117
9118 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
9119 void ( STDMETHODCALLTYPE *SetMarker )(
9120 ID3D12VideoEncodeCommandList3 * This,
9121 UINT Metadata,
9122 _In_reads_bytes_opt_(Size) const void *pData,
9123 UINT Size);
9124
9125 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
9126 void ( STDMETHODCALLTYPE *BeginEvent )(
9127 ID3D12VideoEncodeCommandList3 * This,
9128 UINT Metadata,
9129 _In_reads_bytes_opt_(Size) const void *pData,
9130 UINT Size);
9131
9132 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
9133 void ( STDMETHODCALLTYPE *EndEvent )(
9134 ID3D12VideoEncodeCommandList3 * This);
9135
9136 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
9137 void ( STDMETHODCALLTYPE *EstimateMotion )(
9138 ID3D12VideoEncodeCommandList3 * This,
9139 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
9140 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
9141 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
9142
9143 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
9144 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
9145 ID3D12VideoEncodeCommandList3 * This,
9146 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
9147 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
9148
9149 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
9150 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
9151 ID3D12VideoEncodeCommandList3 * This,
9152 UINT Count,
9153 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
9154 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
9155
9156 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
9157 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
9158 ID3D12VideoEncodeCommandList3 * This,
9159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
9160
9161 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
9162 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
9163 ID3D12VideoEncodeCommandList3 * This,
9164 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9165 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
9166 SIZE_T InitializationParametersSizeInBytes);
9167
9168 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
9169 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9170 ID3D12VideoEncodeCommandList3 * This,
9171 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9172 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9173 SIZE_T ExecutionParametersSizeInBytes);
9174
9175 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
9176 void ( STDMETHODCALLTYPE *EncodeFrame )(
9177 ID3D12VideoEncodeCommandList3 * This,
9178 _In_ ID3D12VideoEncoder *pEncoder,
9179 _In_ ID3D12VideoEncoderHeap *pHeap,
9180 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
9181 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
9182
9183 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
9184 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
9185 ID3D12VideoEncodeCommandList3 * This,
9186 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
9187 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
9188
9189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
9190 void ( STDMETHODCALLTYPE *Barrier )(
9191 ID3D12VideoEncodeCommandList3 * This,
9192 UINT32 NumBarrierGroups,
9193 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
9194
9195 END_INTERFACE
9196 } ID3D12VideoEncodeCommandList3Vtbl;
9197
9198 interface ID3D12VideoEncodeCommandList3
9199 {
9200 CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
9201 };
9202
9203
9204
9205#ifdef COBJMACROS
9206
9207
9208#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
9209 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9210
9211#define ID3D12VideoEncodeCommandList3_AddRef(This) \
9212 ( (This)->lpVtbl -> AddRef(This) )
9213
9214#define ID3D12VideoEncodeCommandList3_Release(This) \
9215 ( (This)->lpVtbl -> Release(This) )
9216
9217
9218#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
9219 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9220
9221#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
9222 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9223
9224#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
9225 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9226
9227#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
9228 ( (This)->lpVtbl -> SetName(This,Name) )
9229
9230
9231#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
9232 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9233
9234
9235#define ID3D12VideoEncodeCommandList3_GetType(This) \
9236 ( (This)->lpVtbl -> GetType(This) )
9237
9238
9239#define ID3D12VideoEncodeCommandList3_Close(This) \
9240 ( (This)->lpVtbl -> Close(This) )
9241
9242#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
9243 ( (This)->lpVtbl -> Reset(This,pAllocator) )
9244
9245#define ID3D12VideoEncodeCommandList3_ClearState(This) \
9246 ( (This)->lpVtbl -> ClearState(This) )
9247
9248#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
9249 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
9250
9251#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
9252 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
9253
9254#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
9255 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
9256
9257#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
9258 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
9259
9260#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
9261 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
9262
9263#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
9264 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
9265
9266#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
9267 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9268
9269#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
9270 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9271
9272#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
9273 ( (This)->lpVtbl -> EndEvent(This) )
9274
9275#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
9276 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
9277
9278#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
9279 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
9280
9281#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
9282 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
9283
9284#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
9285 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
9286
9287
9288#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
9289 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
9290
9291#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
9292 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
9293
9294
9295#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
9296 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
9297
9298#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
9299 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
9300
9301
9302#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
9303 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
9304
9305#endif /* COBJMACROS */
9306
9307
9308#endif /* C style interface */
9309
9310
9311
9312
9313#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
9314
9315
9316/* interface __MIDL_itf_d3d12video_0000_0027 */
9317/* [local] */
9318
9319typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
9320 {
9321 UINT NodeMask;
9322 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
9323 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
9324 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
9325 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
9326 UINT ResolutionsListCount;
9327 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
9328 UINT Pow2DownscaleFactor;
9329 } D3D12_VIDEO_ENCODER_HEAP_DESC1;
9330
9331
9332
9333extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
9335
9336#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9337#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9338
9339/* interface ID3D12VideoEncoderHeap1 */
9340/* [unique][local][object][uuid] */
9341
9342
9343EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
9344
9345#if defined(__cplusplus) && !defined(CINTERFACE)
9346
9347 MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
9348 ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
9349 {
9350 public:
9351 virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
9352
9353 };
9354
9355
9356#else /* C style interface */
9357
9358 typedef struct ID3D12VideoEncoderHeap1Vtbl
9359 {
9360 BEGIN_INTERFACE
9361
9362 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9363 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9364 ID3D12VideoEncoderHeap1 * This,
9365 REFIID riid,
9366 _COM_Outptr_ void **ppvObject);
9367
9368 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9369 ULONG ( STDMETHODCALLTYPE *AddRef )(
9370 ID3D12VideoEncoderHeap1 * This);
9371
9372 DECLSPEC_XFGVIRT(IUnknown, Release)
9373 ULONG ( STDMETHODCALLTYPE *Release )(
9374 ID3D12VideoEncoderHeap1 * This);
9375
9376 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9377 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9378 ID3D12VideoEncoderHeap1 * This,
9379 _In_ REFGUID guid,
9380 _Inout_ UINT *pDataSize,
9381 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9382
9383 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9384 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9385 ID3D12VideoEncoderHeap1 * This,
9386 _In_ REFGUID guid,
9387 _In_ UINT DataSize,
9388 _In_reads_bytes_opt_( DataSize ) const void *pData);
9389
9390 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9391 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9392 ID3D12VideoEncoderHeap1 * This,
9393 _In_ REFGUID guid,
9394 _In_opt_ const IUnknown *pData);
9395
9396 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9397 HRESULT ( STDMETHODCALLTYPE *SetName )(
9398 ID3D12VideoEncoderHeap1 * This,
9399 _In_z_ LPCWSTR Name);
9400
9401 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9402 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9403 ID3D12VideoEncoderHeap1 * This,
9404 REFIID riid,
9405 _COM_Outptr_opt_ void **ppvDevice);
9406
9407 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
9408 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
9409 ID3D12VideoEncoderHeap1 * This);
9410
9411 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
9412 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
9413 ID3D12VideoEncoderHeap1 * This);
9414
9415 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
9416 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
9417 ID3D12VideoEncoderHeap1 * This);
9418
9419 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
9420 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
9421 ID3D12VideoEncoderHeap1 * This,
9422 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
9423
9424 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
9425 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
9426 ID3D12VideoEncoderHeap1 * This,
9427 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
9428
9429 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
9430 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
9431 ID3D12VideoEncoderHeap1 * This);
9432
9433 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
9434 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
9435 ID3D12VideoEncoderHeap1 * This,
9436 const UINT ResolutionsListCount,
9437 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
9438
9439 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
9440 UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
9441 ID3D12VideoEncoderHeap1 * This);
9442
9443 END_INTERFACE
9444 } ID3D12VideoEncoderHeap1Vtbl;
9445
9446 interface ID3D12VideoEncoderHeap1
9447 {
9448 CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
9449 };
9450
9451
9452
9453#ifdef COBJMACROS
9454
9455
9456#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
9457 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9458
9459#define ID3D12VideoEncoderHeap1_AddRef(This) \
9460 ( (This)->lpVtbl -> AddRef(This) )
9461
9462#define ID3D12VideoEncoderHeap1_Release(This) \
9463 ( (This)->lpVtbl -> Release(This) )
9464
9465
9466#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
9467 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9468
9469#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
9470 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9471
9472#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
9473 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9474
9475#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
9476 ( (This)->lpVtbl -> SetName(This,Name) )
9477
9478
9479#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
9480 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9481
9482
9483
9484#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
9485 ( (This)->lpVtbl -> GetNodeMask(This) )
9486
9487#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
9488 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
9489
9490#define ID3D12VideoEncoderHeap1_GetCodec(This) \
9491 ( (This)->lpVtbl -> GetCodec(This) )
9492
9493#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
9494 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
9495
9496#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
9497 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
9498
9499#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
9500 ( (This)->lpVtbl -> GetResolutionListCount(This) )
9501
9502#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
9503 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
9504
9505
9506#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
9507 ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
9508
9509#endif /* COBJMACROS */
9510
9511
9512#endif /* C style interface */
9513
9514
9515
9516
9517#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
9518
9519
9520#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
9521#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
9522
9523/* interface ID3D12VideoDevice4 */
9524/* [unique][local][object][uuid] */
9525
9526
9527EXTERN_C const IID IID_ID3D12VideoDevice4;
9528
9529#if defined(__cplusplus) && !defined(CINTERFACE)
9530
9531 MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
9532 ID3D12VideoDevice4 : public ID3D12VideoDevice3
9533 {
9534 public:
9535 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
9536 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9537 _In_ REFIID riid,
9538 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
9539
9540 };
9541
9542
9543#else /* C style interface */
9544
9545 typedef struct ID3D12VideoDevice4Vtbl
9546 {
9547 BEGIN_INTERFACE
9548
9549 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9550 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9551 ID3D12VideoDevice4 * This,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppvObject);
9554
9555 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9556 ULONG ( STDMETHODCALLTYPE *AddRef )(
9557 ID3D12VideoDevice4 * This);
9558
9559 DECLSPEC_XFGVIRT(IUnknown, Release)
9560 ULONG ( STDMETHODCALLTYPE *Release )(
9561 ID3D12VideoDevice4 * This);
9562
9563 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
9564 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9565 ID3D12VideoDevice4 * This,
9566 D3D12_FEATURE_VIDEO FeatureVideo,
9567 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9568 UINT FeatureSupportDataSize);
9569
9570 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
9571 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
9572 ID3D12VideoDevice4 * This,
9573 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9574 _In_ REFIID riid,
9575 _COM_Outptr_ void **ppVideoDecoder);
9576
9577 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
9578 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
9579 ID3D12VideoDevice4 * This,
9580 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9581 _In_ REFIID riid,
9582 _COM_Outptr_ void **ppVideoDecoderHeap);
9583
9584 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
9585 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
9586 ID3D12VideoDevice4 * This,
9587 UINT NodeMask,
9588 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9589 UINT NumInputStreamDescs,
9590 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9591 _In_ REFIID riid,
9592 _COM_Outptr_ void **ppVideoProcessor);
9593
9594 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
9595 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
9596 ID3D12VideoDevice4 * This,
9597 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
9598 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9599 _In_ REFIID riid,
9600 _COM_Outptr_ void **ppVideoMotionEstimator);
9601
9602 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
9603 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
9604 ID3D12VideoDevice4 * This,
9605 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
9606 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9607 _In_ REFIID riid,
9608 _COM_Outptr_ void **ppVideoMotionVectorHeap);
9609
9610 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
9611 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
9612 ID3D12VideoDevice4 * This,
9613 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9614 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9615 _In_ REFIID riid,
9616 _COM_Outptr_ void **ppVideoDecoder);
9617
9618 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
9619 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
9620 ID3D12VideoDevice4 * This,
9621 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9622 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9623 _In_ REFIID riid,
9624 _COM_Outptr_ void **ppVideoDecoderHeap);
9625
9626 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
9627 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
9628 ID3D12VideoDevice4 * This,
9629 UINT NodeMask,
9630 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9631 UINT NumInputStreamDescs,
9632 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9633 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9634 _In_ REFIID riid,
9635 _COM_Outptr_ void **ppVideoProcessor);
9636
9637 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
9638 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
9639 ID3D12VideoDevice4 * This,
9640 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
9641 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
9642 SIZE_T CreationParametersDataSizeInBytes,
9643 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9644 _In_ REFIID riid,
9645 _COM_Outptr_ void **ppVideoExtensionCommand);
9646
9647 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
9648 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9649 ID3D12VideoDevice4 * This,
9650 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9651 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9652 SIZE_T ExecutionParametersSizeInBytes,
9653 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
9654 SIZE_T OutputDataSizeInBytes);
9655
9656 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
9657 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
9658 ID3D12VideoDevice4 * This,
9659 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
9660 _In_ REFIID riid,
9661 _COM_Outptr_ void **ppVideoEncoder);
9662
9663 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
9664 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
9665 ID3D12VideoDevice4 * This,
9666 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
9667 _In_ REFIID riid,
9668 _COM_Outptr_ void **ppVideoEncoderHeap);
9669
9670 DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
9671 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
9672 ID3D12VideoDevice4 * This,
9673 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9674 _In_ REFIID riid,
9675 _COM_Outptr_ void **ppVideoEncoderHeap);
9676
9677 END_INTERFACE
9678 } ID3D12VideoDevice4Vtbl;
9679
9680 interface ID3D12VideoDevice4
9681 {
9682 CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
9683 };
9684
9685
9686
9687#ifdef COBJMACROS
9688
9689
9690#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
9691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9692
9693#define ID3D12VideoDevice4_AddRef(This) \
9694 ( (This)->lpVtbl -> AddRef(This) )
9695
9696#define ID3D12VideoDevice4_Release(This) \
9697 ( (This)->lpVtbl -> Release(This) )
9698
9699
9700#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
9701 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
9702
9703#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
9704 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
9705
9706#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
9707 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
9708
9709#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
9710 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
9711
9712
9713#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
9714 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
9715
9716#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
9717 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
9718
9719
9720#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
9721 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
9722
9723#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
9724 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
9725
9726#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
9727 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
9728
9729#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
9730 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
9731
9732#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
9733 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
9734
9735
9736#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
9737 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
9738
9739#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
9740 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
9741
9742
9743#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
9744 ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
9745
9746#endif /* COBJMACROS */
9747
9748
9749#endif /* C style interface */
9750
9751
9752
9753
9754#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
9755
9756
9757/* interface __MIDL_itf_d3d12video_0000_0029 */
9758/* [local] */
9759
9760typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
9761 {
9762 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
9763 BOOL IsSupported;
9764 UINT64 MemoryPoolL0Size;
9765 UINT64 MemoryPoolL1Size;
9766 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
9767
9768typedef
9769enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
9770 {
9771 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
9772 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
9773 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
9774 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
9775 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
9776 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
9777 } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
9778
9779DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
9781 {
9782 UINT NodeIndex;
9783 D3D12_VIDEO_ENCODER_CODEC Codec;
9784 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9785 DXGI_FORMAT InputFormat;
9786 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
9787 BOOL IsSupported;
9788 UINT CompressedBitstreamBufferAccessAlignment;
9789 UINT EncoderMetadataBufferAccessAlignment;
9790 UINT MaxEncoderOutputMetadataBufferSize;
9791 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
9792 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9793 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
9794 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
9795 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
9796 UINT EncoderOutputMetadataFramePSNRComponentsNumber;
9797 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
9798 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
9799 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
9800
9801typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
9802 {
9803 float PSNRY;
9804 float PSNRU;
9805 float PSNRV;
9806 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
9807
9808typedef
9809enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
9810 {
9811 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
9812 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
9813 } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
9814
9815typedef
9816enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
9817 {
9818 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
9819 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
9820 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
9821
9822typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
9823 {
9824 D3D12_VIDEO_ENCODER_CODEC Codec;
9825 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9826 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9827 DXGI_FORMAT InputFormat;
9828 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9829 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9830 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9831 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9832 } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
9833
9834typedef
9835enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
9836 {
9837 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
9838 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
9839 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
9840 } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
9841
9842typedef
9843enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
9844 {
9845 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
9846 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
9847 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
9848 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
9849
9850typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
9851 {
9852 UINT NodeIndex;
9853 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9854 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9855 BOOL IsSupported;
9856 UINT MapSourcePreferenceRanking;
9857 UINT BlockSize;
9858 } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
9859
9860typedef
9861enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
9862 {
9863 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
9864 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
9865 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
9866 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
9867 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
9868
9869DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
9871 {
9872 UINT NodeIndex;
9873 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9874 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9875 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9876 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
9877 UINT MapSourcePreferenceRanking;
9878 } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
9879
9880typedef
9881enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
9882 {
9883 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
9884 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
9885 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
9886 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
9887
9888typedef
9889enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
9890 {
9891 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
9892 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
9893 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
9894 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
9895 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
9896
9897DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898typedef
9899enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
9900 {
9901 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
9902 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
9903 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
9904 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
9905 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
9906
9907DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
9909 {
9910 UINT NodeIndex;
9911 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9912 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9913 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9914 BOOL BidirectionalRefFrameEnabled;
9915 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9916 UINT MaxMotionHints;
9917 UINT MinDeviation;
9918 UINT MaxDeviation;
9919 UINT MapSourcePreferenceRanking;
9920 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
9921 } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
9922
9923typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
9924 {
9925 UINT NodeIndex;
9926 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9927 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
9928 BOOL IsSupported;
9929 UINT64 MaxResolvedBufferAllocationSize;
9930 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
9931
9932typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
9933 {
9934 BOOL Enabled;
9935 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9936 } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
9937
9938typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939 {
9940 UINT MapSourcePreferenceRanking;
9941 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
9944 {
9945 BOOL Enabled;
9946 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9947 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9948 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
9949
9950typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
9951 {
9952 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
9953 UINT MapSourcePreferenceRanking;
9954 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
9955
9956typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
9957 {
9958 BOOL Enabled;
9959 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9960 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9961 BOOL BidirectionalRefFrameEnabled;
9962 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
9963
9964typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
9965 {
9966 UINT MaxMotionHints;
9967 UINT MinDeviation;
9968 UINT MaxDeviation;
9969 UINT MapSourcePreferenceRanking;
9970 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
9971 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9972 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
9973
9974typedef
9975enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
9976 {
9977 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
9978 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
9979 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
9980 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
9981 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
9982 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
9983 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
9984 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 )
9985 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
9986
9987DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
9989 {
9990 UINT NodeIndex;
9991 D3D12_VIDEO_ENCODER_CODEC Codec;
9992 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9993 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9994 DXGI_FORMAT InputFormat;
9995 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9996 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9997 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9998 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9999 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10000 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10001 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10002 UINT Pow2DownscaleFactor;
10003 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10004 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
10005
10006typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
10007 {
10008 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10009 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
10010
10011typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
10012 {
10013 UINT MaxSubregionsNumber;
10014 UINT MaxIntraRefreshFrameDuration;
10015 UINT SubregionBlockPixelsSize;
10016 UINT QPMapRegionPixelsSize;
10017 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
10018 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
10019 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
10020 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
10021 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
10022
10023typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024 {
10025 BOOL Enabled;
10026 UINT Pow2DownscaleFactor;
10027 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
10030 {
10031 UINT NodeIndex;
10032 D3D12_VIDEO_ENCODER_CODEC Codec;
10033 DXGI_FORMAT InputFormat;
10034 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10035 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
10036 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
10037 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
10038 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
10039 UINT ResolutionsListCount;
10040 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
10041 UINT MaxReferenceFramesInDPB;
10042 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
10043 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
10044 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
10045 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
10046 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
10047 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
10048 UINT MaxQualityVsSpeed;
10049 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10050 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10051 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10052 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
10053 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
10054
10055typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
10056 {
10057 BOOL FullFrameIdentical;
10058 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10059 UINT NumDirtyRects;
10060 _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
10061 UINT SourceDPBFrameReference;
10062 } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
10063
10064typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
10065 {
10066 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10067 union
10068 {
10069 ID3D12Resource *pOpaqueLayoutBuffer;
10070 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
10071 } ;
10072 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
10073
10074typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075 {
10076 ID3D12Resource *pOpaqueQuantizationMap;
10077 } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
10080 {
10081 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
10082 UINT SearchDeviationLimit;
10083 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
10084
10085typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086 {
10087 POINT SourcePoint;
10088 RECT DestRect;
10089 } D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091typedef
10092enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
10093 {
10094 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
10095 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
10096 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
10097
10098typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
10099 {
10100 UINT NumMoveRegions;
10101 _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
10102 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10103 UINT SourceDPBFrameReference;
10104 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10105 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
10106 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
10107
10108typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
10109 {
10110 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10111 union
10112 {
10113 ID3D12Resource *pOpaqueLayoutBuffer;
10114 D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
10115 } ;
10116 } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
10117
10118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
10119 {
10120 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
10121 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
10122 UINT slice_pic_parameter_set_id;
10123 UINT PictureOrderCountNumber;
10124 UINT TemporalLayerIndex;
10125 UINT List0ReferenceFramesCount;
10126 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
10127 UINT List1ReferenceFramesCount;
10128 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
10129 UINT ReferenceFramesReconPictureDescriptorsCount;
10130 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
10131 UINT List0RefPicModificationsCount;
10132 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
10133 UINT List1RefPicModificationsCount;
10134 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
10135 UINT QPMapValuesCount;
10136 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
10137 UCHAR diff_cu_chroma_qp_offset_depth;
10138 UCHAR log2_sao_offset_scale_luma;
10139 UCHAR log2_sao_offset_scale_chroma;
10140 UCHAR log2_max_transform_skip_block_size_minus2;
10141 UCHAR chroma_qp_offset_list_len_minus1;
10142 CHAR cb_qp_offset_list[ 6 ];
10143 CHAR cr_qp_offset_list[ 6 ];
10144 UINT num_ref_idx_l0_active_minus1;
10145 UINT num_ref_idx_l1_active_minus1;
10146 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
10147
10148typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
10149 {
10150 UINT DataSize;
10151 union
10152 {
10153 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
10154 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
10155 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
10156 } ;
10157 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
10158
10159typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
10160 {
10161 ID3D12Resource *pDownscaledFrame;
10162 UINT64 Subresource;
10163 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
10164 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
10165
10166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
10167 {
10168 UINT IntraRefreshFrameIndex;
10169 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
10170 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
10171 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
10172 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
10173 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
10174 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
10175 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
10176 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
10177
10178typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
10179 {
10180 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
10181 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
10182 ID3D12Resource *pInputFrame;
10183 UINT InputFrameSubresource;
10184 UINT CurrentFrameBitstreamMetadataSize;
10185 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10186 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
10187
10188typedef
10189enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
10190 {
10191 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
10192 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
10193 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
10194
10195typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
10196 {
10197 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
10198 UINT ExpectedSubregionCount;
10199 UINT64 *pSubregionBitstreamsBaseOffsets;
10200 ID3D12Resource **ppSubregionBitstreams;
10201 ID3D12Resource **ppSubregionSizes;
10202 ID3D12Resource **ppSubregionOffsets;
10203 ID3D12Fence **ppSubregionFences;
10204 UINT64 *pSubregionFenceValues;
10205 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
10206
10207typedef
10208enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
10209 {
10210 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
10211 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
10212 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
10213
10214typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
10215 {
10216 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
10217 union
10218 {
10219 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
10220 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
10221 } ;
10222 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
10223
10224typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
10225 {
10226 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
10227 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
10228 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
10229 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
10230 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
10231
10232typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
10233 {
10234 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
10235 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
10236 DXGI_FORMAT EncoderInputFormat;
10237 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
10238 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
10239 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10240 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10241 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
10242
10243typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
10244 {
10245 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
10246 ID3D12Resource *pOutputQPMap;
10247 ID3D12Resource *pOutputSATDMap;
10248 ID3D12Resource *pOutputBitAllocationMap;
10249 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
10250 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
10251 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
10252
10253typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254 {
10255 ID3D12Resource *pQuantizationMap;
10256 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
10259 {
10260 BOOL FullFrameIdentical;
10261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10262 ID3D12Resource *pDirtyRegionsMap;
10263 UINT SourceDPBFrameReference;
10264 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
10265
10266typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
10267 {
10268 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10269 UINT NumHintsPerPixel;
10270 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
10271 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
10272 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
10273 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
10274 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10275 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
10276 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
10277
10278typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
10279 {
10280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
10281 union
10282 {
10283 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
10284 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
10285 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
10286 } ;
10287 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
10288
10289typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
10290 {
10291 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
10292 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
10293 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
10294
10295typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
10296 {
10297 ID3D12Resource *pOpaqueLayoutBuffer;
10298 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
10299
10300
10301
10302extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
10304
10305#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10306#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10307
10308/* interface ID3D12VideoEncodeCommandList4 */
10309/* [unique][local][object][uuid] */
10310
10311
10312EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
10313
10314#if defined(__cplusplus) && !defined(CINTERFACE)
10315
10316 MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
10317 ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
10318 {
10319 public:
10320 virtual void STDMETHODCALLTYPE EncodeFrame1(
10321 _In_ ID3D12VideoEncoder *pEncoder,
10322 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10323 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10324 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10325
10326 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
10327 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10328 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10329
10330 virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
10331 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10332 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
10333
10334 };
10335
10336
10337#else /* C style interface */
10338
10339 typedef struct ID3D12VideoEncodeCommandList4Vtbl
10340 {
10341 BEGIN_INTERFACE
10342
10343 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10344 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10345 ID3D12VideoEncodeCommandList4 * This,
10346 REFIID riid,
10347 _COM_Outptr_ void **ppvObject);
10348
10349 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10350 ULONG ( STDMETHODCALLTYPE *AddRef )(
10351 ID3D12VideoEncodeCommandList4 * This);
10352
10353 DECLSPEC_XFGVIRT(IUnknown, Release)
10354 ULONG ( STDMETHODCALLTYPE *Release )(
10355 ID3D12VideoEncodeCommandList4 * This);
10356
10357 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10358 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10359 ID3D12VideoEncodeCommandList4 * This,
10360 _In_ REFGUID guid,
10361 _Inout_ UINT *pDataSize,
10362 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10365 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10366 ID3D12VideoEncodeCommandList4 * This,
10367 _In_ REFGUID guid,
10368 _In_ UINT DataSize,
10369 _In_reads_bytes_opt_( DataSize ) const void *pData);
10370
10371 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10372 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10373 ID3D12VideoEncodeCommandList4 * This,
10374 _In_ REFGUID guid,
10375 _In_opt_ const IUnknown *pData);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10378 HRESULT ( STDMETHODCALLTYPE *SetName )(
10379 ID3D12VideoEncodeCommandList4 * This,
10380 _In_z_ LPCWSTR Name);
10381
10382 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10383 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10384 ID3D12VideoEncodeCommandList4 * This,
10385 REFIID riid,
10386 _COM_Outptr_opt_ void **ppvDevice);
10387
10388 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
10389 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
10390 ID3D12VideoEncodeCommandList4 * This);
10391
10392 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
10393 HRESULT ( STDMETHODCALLTYPE *Close )(
10394 ID3D12VideoEncodeCommandList4 * This);
10395
10396 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
10397 HRESULT ( STDMETHODCALLTYPE *Reset )(
10398 ID3D12VideoEncodeCommandList4 * This,
10399 _In_ ID3D12CommandAllocator *pAllocator);
10400
10401 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
10402 void ( STDMETHODCALLTYPE *ClearState )(
10403 ID3D12VideoEncodeCommandList4 * This);
10404
10405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
10406 void ( STDMETHODCALLTYPE *ResourceBarrier )(
10407 ID3D12VideoEncodeCommandList4 * This,
10408 _In_ UINT NumBarriers,
10409 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
10410
10411 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
10412 void ( STDMETHODCALLTYPE *DiscardResource )(
10413 ID3D12VideoEncodeCommandList4 * This,
10414 _In_ ID3D12Resource *pResource,
10415 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
10416
10417 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
10418 void ( STDMETHODCALLTYPE *BeginQuery )(
10419 ID3D12VideoEncodeCommandList4 * This,
10420 _In_ ID3D12QueryHeap *pQueryHeap,
10421 _In_ D3D12_QUERY_TYPE Type,
10422 _In_ UINT Index);
10423
10424 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
10425 void ( STDMETHODCALLTYPE *EndQuery )(
10426 ID3D12VideoEncodeCommandList4 * This,
10427 _In_ ID3D12QueryHeap *pQueryHeap,
10428 _In_ D3D12_QUERY_TYPE Type,
10429 _In_ UINT Index);
10430
10431 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
10432 void ( STDMETHODCALLTYPE *ResolveQueryData )(
10433 ID3D12VideoEncodeCommandList4 * This,
10434 _In_ ID3D12QueryHeap *pQueryHeap,
10435 _In_ D3D12_QUERY_TYPE Type,
10436 _In_ UINT StartIndex,
10437 _In_ UINT NumQueries,
10438 _In_ ID3D12Resource *pDestinationBuffer,
10439 _In_ UINT64 AlignedDestinationBufferOffset);
10440
10441 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
10442 void ( STDMETHODCALLTYPE *SetPredication )(
10443 ID3D12VideoEncodeCommandList4 * This,
10444 _In_opt_ ID3D12Resource *pBuffer,
10445 _In_ UINT64 AlignedBufferOffset,
10446 _In_ D3D12_PREDICATION_OP Operation);
10447
10448 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
10449 void ( STDMETHODCALLTYPE *SetMarker )(
10450 ID3D12VideoEncodeCommandList4 * This,
10451 UINT Metadata,
10452 _In_reads_bytes_opt_(Size) const void *pData,
10453 UINT Size);
10454
10455 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
10456 void ( STDMETHODCALLTYPE *BeginEvent )(
10457 ID3D12VideoEncodeCommandList4 * This,
10458 UINT Metadata,
10459 _In_reads_bytes_opt_(Size) const void *pData,
10460 UINT Size);
10461
10462 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
10463 void ( STDMETHODCALLTYPE *EndEvent )(
10464 ID3D12VideoEncodeCommandList4 * This);
10465
10466 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
10467 void ( STDMETHODCALLTYPE *EstimateMotion )(
10468 ID3D12VideoEncodeCommandList4 * This,
10469 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
10470 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
10471 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
10472
10473 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
10474 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
10475 ID3D12VideoEncodeCommandList4 * This,
10476 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
10477 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
10478
10479 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
10480 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
10481 ID3D12VideoEncodeCommandList4 * This,
10482 UINT Count,
10483 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
10484 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
10485
10486 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
10487 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
10488 ID3D12VideoEncodeCommandList4 * This,
10489 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
10490
10491 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
10492 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
10493 ID3D12VideoEncodeCommandList4 * This,
10494 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10495 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
10496 SIZE_T InitializationParametersSizeInBytes);
10497
10498 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
10499 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
10500 ID3D12VideoEncodeCommandList4 * This,
10501 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10502 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
10503 SIZE_T ExecutionParametersSizeInBytes);
10504
10505 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
10506 void ( STDMETHODCALLTYPE *EncodeFrame )(
10507 ID3D12VideoEncodeCommandList4 * This,
10508 _In_ ID3D12VideoEncoder *pEncoder,
10509 _In_ ID3D12VideoEncoderHeap *pHeap,
10510 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
10511 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
10512
10513 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
10514 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
10515 ID3D12VideoEncodeCommandList4 * This,
10516 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
10517 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
10518
10519 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
10520 void ( STDMETHODCALLTYPE *Barrier )(
10521 ID3D12VideoEncodeCommandList4 * This,
10522 UINT32 NumBarrierGroups,
10523 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
10524
10525 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
10526 void ( STDMETHODCALLTYPE *EncodeFrame1 )(
10527 ID3D12VideoEncodeCommandList4 * This,
10528 _In_ ID3D12VideoEncoder *pEncoder,
10529 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10530 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10531 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
10532
10533 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
10534 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
10535 ID3D12VideoEncodeCommandList4 * This,
10536 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10537 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
10538
10539 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
10540 void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
10541 ID3D12VideoEncodeCommandList4 * This,
10542 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10543 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
10544
10545 END_INTERFACE
10546 } ID3D12VideoEncodeCommandList4Vtbl;
10547
10548 interface ID3D12VideoEncodeCommandList4
10549 {
10550 CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
10551 };
10552
10553
10554
10555#ifdef COBJMACROS
10556
10557
10558#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
10559 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10560
10561#define ID3D12VideoEncodeCommandList4_AddRef(This) \
10562 ( (This)->lpVtbl -> AddRef(This) )
10563
10564#define ID3D12VideoEncodeCommandList4_Release(This) \
10565 ( (This)->lpVtbl -> Release(This) )
10566
10567
10568#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
10569 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10570
10571#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
10572 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10573
10574#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
10575 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10576
10577#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
10578 ( (This)->lpVtbl -> SetName(This,Name) )
10579
10580
10581#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
10582 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10583
10584
10585#define ID3D12VideoEncodeCommandList4_GetType(This) \
10586 ( (This)->lpVtbl -> GetType(This) )
10587
10588
10589#define ID3D12VideoEncodeCommandList4_Close(This) \
10590 ( (This)->lpVtbl -> Close(This) )
10591
10592#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
10593 ( (This)->lpVtbl -> Reset(This,pAllocator) )
10594
10595#define ID3D12VideoEncodeCommandList4_ClearState(This) \
10596 ( (This)->lpVtbl -> ClearState(This) )
10597
10598#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
10599 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
10600
10601#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
10602 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
10603
10604#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
10605 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
10606
10607#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
10608 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
10609
10610#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
10611 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
10612
10613#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
10614 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
10615
10616#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
10617 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
10618
10619#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
10620 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
10621
10622#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
10623 ( (This)->lpVtbl -> EndEvent(This) )
10624
10625#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
10626 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
10627
10628#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
10629 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
10630
10631#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
10632 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
10633
10634#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
10635 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
10636
10637
10638#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
10639 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
10640
10641#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
10642 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
10643
10644
10645#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10646 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10647
10648#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
10649 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
10650
10651
10652#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
10653 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
10654
10655
10656#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10657 ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10658
10659#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
10660 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
10661
10662#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
10663 ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
10664
10665#endif /* COBJMACROS */
10666
10667
10668#endif /* C style interface */
10669
10670
10671
10672
10673#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
10674
10675
10676/* interface __MIDL_itf_d3d12video_0000_0030 */
10677/* [local] */
10678
10679#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
10680#pragma endregion
10681DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
10715
10716/* Additional Prototypes for ALL interfaces */
10717
10718/* end of Additional Prototypes */
10719
10720#ifdef __cplusplus
10721}
10722#endif
10723
10724#endif
10725
10726
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl
new file mode 100644
index 0000000..b2c930b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl
@@ -0,0 +1,3818 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
83 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
84 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
85 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
86 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
87 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
88 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
89 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
90 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
91 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
92 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
93 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
94 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
95 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
96 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
97 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
98 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
99 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
100 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
101 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
102 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
103 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
104 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57,
105
106} D3D12_FEATURE_VIDEO;
107
108typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
109{
110 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
111} D3D12_BITSTREAM_ENCRYPTION_TYPE;
112
113typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
114{
115 GUID DecodeProfile;
116 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
117 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
118} D3D12_VIDEO_DECODE_CONFIGURATION;
119
120typedef struct D3D12_VIDEO_DECODER_DESC
121{
122 UINT NodeMask;
123 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
124} D3D12_VIDEO_DECODER_DESC;
125
126typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
127{
128 UINT NodeMask;
129 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
130 UINT DecodeWidth;
131 UINT DecodeHeight;
132 DXGI_FORMAT Format;
133 DXGI_RATIONAL FrameRate;
134 UINT BitRate;
135 UINT MaxDecodePictureBufferCount;
136} D3D12_VIDEO_DECODER_HEAP_DESC;
137
138typedef struct D3D12_VIDEO_SIZE_RANGE
139{
140 UINT MaxWidth;
141 UINT MaxHeight;
142 UINT MinWidth;
143 UINT MinHeight;
144} D3D12_VIDEO_SIZE_RANGE;
145
146typedef enum D3D12_VIDEO_PROCESS_FILTER
147{
148 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
149 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
150 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
151 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
152 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
153 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
154 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
155 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
156} D3D12_VIDEO_PROCESS_FILTER;
157
158typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
159{
160 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
161 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
162 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
163 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
164 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
165 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
166 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
167 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
168 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
169
170} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
171cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
172
173typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
174{
175 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
176 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
177 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
178
179} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
180cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
181
182typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
183{
184 BOOL Enable;
185 FLOAT Alpha;
186} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
187
188typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
189{
190 BOOL Enable;
191 FLOAT Lower;
192 FLOAT Upper;
193} D3D12_VIDEO_PROCESS_LUMA_KEY;
194
195typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
196{
197 DXGI_FORMAT Format;
198 DXGI_COLOR_SPACE_TYPE ColorSpace;
199 DXGI_RATIONAL SourceAspectRatio;
200 DXGI_RATIONAL DestinationAspectRatio;
201 DXGI_RATIONAL FrameRate;
202 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
203 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
204 BOOL EnableOrientation;
205 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
206 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
207 D3D12_VIDEO_FIELD_TYPE FieldType;
208 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
209 BOOL EnableAlphaBlending;
210 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
211 UINT NumPastFrames;
212 UINT NumFutureFrames;
213 BOOL EnableAutoProcessing;
214} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
215
216typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
217{
218 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
219 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
220 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
221 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
222} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
223
224typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
225{
226 DXGI_FORMAT Format;
227 DXGI_COLOR_SPACE_TYPE ColorSpace;
228 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
229 UINT AlphaFillModeSourceStreamIndex;
230 FLOAT BackgroundColor[4];
231 DXGI_RATIONAL FrameRate;
232 BOOL EnableStereo;
233} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
234
235[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
236interface ID3D12VideoDecoderHeap
237 : ID3D12Pageable
238{
239 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
240}
241
242[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
243interface ID3D12VideoDevice
244 : IUnknown
245{
246 HRESULT CheckFeatureSupport(
247 D3D12_FEATURE_VIDEO FeatureVideo,
248 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
249 UINT FeatureSupportDataSize
250 );
251
252 HRESULT CreateVideoDecoder(
253 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
254 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
255 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
256 );
257
258 HRESULT CreateVideoDecoderHeap(
259 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
260 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
261 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
262 );
263
264 HRESULT CreateVideoProcessor(
265 UINT NodeMask,
266 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
267 UINT NumInputStreamDescs,
268 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
269 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
270 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
271 );
272}
273
274[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
275interface ID3D12VideoDecoder
276 : ID3D12Pageable
277{
278 D3D12_VIDEO_DECODER_DESC GetDesc();
279}
280
281typedef enum D3D12_VIDEO_DECODE_TIER
282{
283 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
284 D3D12_VIDEO_DECODE_TIER_1 = 1,
285 D3D12_VIDEO_DECODE_TIER_2 = 2,
286 D3D12_VIDEO_DECODE_TIER_3 = 3,
287} D3D12_VIDEO_DECODE_TIER;
288
289typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
290{
291 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
292 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
293
294} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
295cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
296
297typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
298{
299 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
300 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
301 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
302 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
303 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
304
305} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
306cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
307
308typedef enum D3D12_VIDEO_DECODE_STATUS
309{
310 D3D12_VIDEO_DECODE_STATUS_OK = 0,
311 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
312 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
313 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
314 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
315} D3D12_VIDEO_DECODE_STATUS;
316
317typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
318{
319 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
320 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
321 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
322 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
323} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
324
325typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
326{
327 UINT NodeIndex; // input
328 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
329 UINT Width; // input
330 UINT Height; // input
331 DXGI_FORMAT DecodeFormat; // input
332 DXGI_RATIONAL FrameRate; // input
333 UINT BitRate; // input
334 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
335 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
336 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
337} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
338
339typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
340{
341 UINT NodeIndex; // input
342 UINT ProfileCount; // output
343} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
344
345typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
346{
347 UINT NodeIndex; // input
348 UINT ProfileCount; // input
349 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
350} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
351
352typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
353{
354 UINT NodeIndex; // input
355 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
356 UINT FormatCount; // output
357} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
358
359typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
360{
361 UINT NodeIndex; // input
362 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
363 UINT FormatCount; // input
364 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
365} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
366
367typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
368{
369 BOOL IOCoherent;
370} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
371
372typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
373{
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
375 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
376 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
377
378 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
379 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
380 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
381
382 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
383} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
384
385typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
386{
387 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
388
389 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
390 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
391 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
392
393 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
394 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
395 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
396
397 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
398} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
399cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
400
401typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
402{
403 UINT NodeIndex; // in
404 GUID DecodeProfile; // in
405 UINT Width; // in
406 UINT Height; // in
407 DXGI_FORMAT DecodeFormat; // in
408 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
409 UINT BinCount; // out
410 UINT CounterBitDepth; // out
411} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
412
413typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
414{
415 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
416 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
417
418} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
419cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
420
421typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
422{
423 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
424 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
425 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
426 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4,
427
428} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
429cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
430
431typedef struct D3D12_VIDEO_SCALE_SUPPORT
432{
433 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
434 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
435} D3D12_VIDEO_SCALE_SUPPORT;
436
437typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
438{
439 UINT NodeIndex; // input
440 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
441 D3D12_VIDEO_SAMPLE DecodeSample; // input
442 D3D12_VIDEO_FORMAT OutputFormat; // input
443 DXGI_RATIONAL FrameRate; // input
444 UINT BitRate; // input
445 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
446 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
447} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
448
449typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
450{
451 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
452 UINT64 MemoryPoolL0Size; // output
453 UINT64 MemoryPoolL1Size; // output
454} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
455
456typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
457{
458 UINT NodeMask;
459 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
460 UINT NumInputStreamDescs; // input
461 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
462 UINT64 MemoryPoolL0Size; // output
463 UINT64 MemoryPoolL1Size; // output
464} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
465
466typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
467{
468 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
469 UINT64 NumMacroblocksAffected;
470 DXGI_RATIONAL FrameRate;
471 UINT BitRate;
472} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
473
474typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
475{
476 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
477 UINT Size;
478 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
479} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
480
481typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
482{
483 UINT NumTexture2Ds;
484 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
485 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
486 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
487} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
488
489typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
490{
491 ID3D12Resource* pBuffer;
492 UINT64 Offset;
493 UINT64 Size;
494} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
495
496typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
497{
498 BOOL Enable;
499 ID3D12Resource* pReferenceTexture2D;
500 UINT ReferenceSubresource;
501 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
502 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
503} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
504
505typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
506{
507 UINT NumFrameArguments;
508 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
509 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
510 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
511 ID3D12VideoDecoderHeap *pHeap;
512} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
513
514typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
515{
516 ID3D12Resource* pOutputTexture2D;
517 UINT OutputSubresource;
518 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
519} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
520
521[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
522interface ID3D12VideoProcessor
523 : ID3D12Pageable
524{
525 UINT GetNodeMask();
526 UINT GetNumInputStreamDescs();
527 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
529}
530
531typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
532{
533 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
534 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
535 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
536 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
537 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
538 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
539 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
540 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
541
542} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
543cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
544
545typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
546{
547 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
548 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
549 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
550 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
551 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
552 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
553 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
554 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
555 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
556 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
557
558} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
559cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
560
561typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
562{
563 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
564 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
565 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
566 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
567 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
568 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
569 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
570 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
571} D3D12_VIDEO_PROCESS_ORIENTATION;
572
573typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
574{
575 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
576 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
577 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
578
579} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
580cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
581
582typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
583{
584 INT Minimum;
585 INT Maximum;
586 INT Default;
587 FLOAT Multiplier;
588} D3D12_VIDEO_PROCESS_FILTER_RANGE;
589
590typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
591{
592 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
593 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
594
595} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
596cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
597
598typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
599{
600 UINT NodeIndex; // input
601 D3D12_VIDEO_SAMPLE InputSample; // input
602 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
603 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
604 DXGI_RATIONAL InputFrameRate; // input
605 D3D12_VIDEO_FORMAT OutputFormat; // input
606 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
607 DXGI_RATIONAL OutputFrameRate; // input
608 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
609 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
610 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
611 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
612 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
613 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
614 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
615} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
616
617typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
618{
619 UINT NodeIndex; // input
620 UINT MaxInputStreams; // output
621} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
622
623typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
624{
625 UINT NodeIndex; // input
626 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
627 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
628 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
629 DXGI_RATIONAL InputFrameRate; // input
630 DXGI_RATIONAL OutputFrameRate; // input
631 BOOL EnableAutoProcessing; // input
632 UINT PastFrames; // output
633 UINT FutureFrames; // output
634} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
635
636typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
637{
638 UINT NumPastFrames;
639 ID3D12Resource **ppPastFrames;
640 UINT *pPastSubresources;
641 UINT NumFutureFrames;
642 ID3D12Resource **ppFutureFrames;
643 UINT *pFutureSubresources;
644} D3D12_VIDEO_PROCESS_REFERENCE_SET;
645
646typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
647{
648 D3D12_RECT SourceRectangle;
649 D3D12_RECT DestinationRectangle;
650 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
651} D3D12_VIDEO_PROCESS_TRANSFORM;
652
653typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
654{
655 UINT OutputIndex;
656 UINT InputFrameOrField;
657} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
658
659typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
660{
661 ID3D12Resource *pTexture2D;
662 UINT Subresource;
663 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
664} D3D12_VIDEO_PROCESS_INPUT_STREAM;
665
666typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
667{
668 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
669 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
670 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
671 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
672 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
673 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
674} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
675
676typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
677{
678 ID3D12Resource* pTexture2D;
679 UINT Subresource;
680} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
681
682typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
683{
684 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
685 D3D12_RECT TargetRectangle;
686} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
687
688[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
689interface ID3D12VideoDecodeCommandList
690 : ID3D12CommandList
691{
692 HRESULT Close();
693
694 HRESULT Reset(
695 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
696 );
697
698 void ClearState();
699
700 void ResourceBarrier(
701 [annotation("_In_")] UINT NumBarriers,
702 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
703 );
704
705 void DiscardResource(
706 [annotation("_In_")] ID3D12Resource* pResource,
707 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
708 );
709
710 void BeginQuery(
711 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
712 [annotation("_In_")] D3D12_QUERY_TYPE Type,
713 [annotation("_In_")] UINT Index
714 );
715
716 void EndQuery(
717 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
718 [annotation("_In_")] D3D12_QUERY_TYPE Type,
719 [annotation("_In_")] UINT Index
720 );
721
722 void ResolveQueryData(
723 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
724 [annotation("_In_")] D3D12_QUERY_TYPE Type,
725 [annotation("_In_")] UINT StartIndex,
726 [annotation("_In_")] UINT NumQueries,
727 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
728 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
729 );
730
731 void SetPredication(
732 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
733 [annotation("_In_")] UINT64 AlignedBufferOffset,
734 [annotation("_In_")] D3D12_PREDICATION_OP Operation
735 );
736
737 void SetMarker(
738 UINT Metadata,
739 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
740 UINT Size);
741
742 void BeginEvent(
743 UINT Metadata,
744 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
745 UINT Size);
746
747 void EndEvent();
748
749 void DecodeFrame(
750 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
751 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
752 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
753 );
754
755 void WriteBufferImmediate(
756 UINT Count,
757 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
758 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
759 );
760}
761
762[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
763interface ID3D12VideoProcessCommandList
764 : ID3D12CommandList
765{
766 HRESULT Close();
767
768 HRESULT Reset(
769 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
770 );
771
772 void ClearState();
773
774 void ResourceBarrier(
775 [annotation("_In_")] UINT NumBarriers,
776 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
777 );
778
779 void DiscardResource(
780 [annotation("_In_")] ID3D12Resource* pResource,
781 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
782 );
783
784 void BeginQuery(
785 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
786 [annotation("_In_")] D3D12_QUERY_TYPE Type,
787 [annotation("_In_")] UINT Index
788 );
789
790 void EndQuery(
791 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
792 [annotation("_In_")] D3D12_QUERY_TYPE Type,
793 [annotation("_In_")] UINT Index
794 );
795
796 void ResolveQueryData(
797 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
798 [annotation("_In_")] D3D12_QUERY_TYPE Type,
799 [annotation("_In_")] UINT StartIndex,
800 [annotation("_In_")] UINT NumQueries,
801 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
802 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
803 );
804
805 void SetPredication(
806 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
807 [annotation("_In_")] UINT64 AlignedBufferOffset,
808 [annotation("_In_")] D3D12_PREDICATION_OP Operation
809 );
810
811 void SetMarker(
812 UINT Metadata,
813 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
814 UINT Size);
815
816 void BeginEvent(
817 UINT Metadata,
818 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
819 UINT Size);
820
821 void EndEvent();
822
823 void ProcessFrames(
824 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
825 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
826 UINT NumInputStreams,
827 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
828 );
829
830 void WriteBufferImmediate(
831 UINT Count,
832 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
833 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
834 );
835}
836
837typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
838{
839 UINT64 Offset;
840 ID3D12Resource* pBuffer;
841} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
842
843typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
844{
845 BOOL Enable;
846 ID3D12Resource* pReferenceTexture2D;
847 UINT ReferenceSubresource;
848 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
849 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
850 UINT OutputWidth;
851 UINT OutputHeight;
852} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
853
854typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
855{
856 ID3D12Resource* pOutputTexture2D;
857 UINT OutputSubresource;
858 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
859 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
860} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
861
862[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
863interface ID3D12VideoDecodeCommandList1
864 : ID3D12VideoDecodeCommandList
865{
866 void DecodeFrame1(
867 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
868 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
869 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
870 );
871}
872
873typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
874{
875 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
876 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
877 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
878 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
879 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
880 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
881 D3D12_VIDEO_FIELD_TYPE FieldType;
882} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
883
884[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
885interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
886{
887 void ProcessFrames1(
888 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
889 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
890 UINT NumInputStreams,
891 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
892 );
893}
894
895typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
896{
897 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
898 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
899} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
900
901typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
902{
903 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
904 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
905 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
906
907} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
908cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
909
910typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
911{
912 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
913} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
914
915typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
916{
917 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
918 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
919
920} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
921cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
922
923// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
924typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
925{
926 UINT NodeIndex; // input
927 BOOL VideoDecodeSupport; // output
928 BOOL VideoProcessSupport; // output
929 BOOL VideoEncodeSupport; // output
930} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
931
932// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
933typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
934{
935 UINT NodeIndex; // input
936 DXGI_FORMAT InputFormat; // input
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
939 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
940} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
941
942// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
943typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
944{
945 UINT NodeIndex; // input
946 DXGI_FORMAT InputFormat; // input
947 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
948 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
949 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
950 BOOL Protected; // input
951 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
952 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
953 UINT64 MotionEstimatorMemoryPoolL0Size; // output
954 UINT64 MotionEstimatorMemoryPoolL1Size; // output
955} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
956
957typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
958{
959 UINT NodeMask;
960 DXGI_FORMAT InputFormat;
961 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
962 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
963 D3D12_VIDEO_SIZE_RANGE SizeRange;
964
965} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
966
967[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
968interface ID3D12VideoMotionEstimator
969 : ID3D12Pageable
970{
971 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
972
973 HRESULT GetProtectedResourceSession(
974 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
975 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
976}
977
978typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
979{
980 UINT NodeMask;
981 DXGI_FORMAT InputFormat;
982 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
983 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
984 D3D12_VIDEO_SIZE_RANGE SizeRange;
985
986} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
987
988[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
989interface ID3D12VideoMotionVectorHeap
990 : ID3D12Pageable
991{
992 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
993
994 HRESULT GetProtectedResourceSession(
995 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
996 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
997}
998
999[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
1000interface ID3D12VideoDevice1
1001 : ID3D12VideoDevice
1002{
1003 HRESULT CreateVideoMotionEstimator(
1004 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
1005 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1006 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
1007 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
1008 );
1009
1010 HRESULT CreateVideoMotionVectorHeap(
1011 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
1012 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1013 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
1014 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
1015 );
1016}
1017
1018typedef struct D3D12_RESOURCE_COORDINATE
1019{
1020 // Coordinate values below index pixels.
1021 UINT64 X; // Used for buffer, 1D, 2D, 3D
1022 UINT Y; // Used for 2D, 3D
1023 UINT Z; // Used for 3D
1024 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1025} D3D12_RESOURCE_COORDINATE;
1026
1027typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1028{
1029 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1030} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1031
1032typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1033{
1034 ID3D12Resource* pInputTexture2D;
1035 UINT InputSubresourceIndex;
1036 ID3D12Resource* pReferenceTexture2D;
1037 UINT ReferenceSubresourceIndex;
1038 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1039} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1040
1041typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1042{
1043 ID3D12Resource* pMotionVectorTexture2D;
1044 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1045} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1046
1047typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1048{
1049 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1050 UINT PixelWidth;
1051 UINT PixelHeight;
1052} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1053
1054[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1055interface ID3D12VideoEncodeCommandList
1056 : ID3D12CommandList
1057{
1058 HRESULT Close();
1059
1060 HRESULT Reset(
1061 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1062 );
1063
1064 void ClearState();
1065
1066 void ResourceBarrier(
1067 [annotation("_In_")] UINT NumBarriers,
1068 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1069 );
1070
1071 void DiscardResource(
1072 [annotation("_In_")] ID3D12Resource* pResource,
1073 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1074 );
1075
1076 void BeginQuery(
1077 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1078 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1079 [annotation("_In_")] UINT Index
1080 );
1081
1082 void EndQuery(
1083 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1084 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1085 [annotation("_In_")] UINT Index
1086 );
1087
1088 void ResolveQueryData(
1089 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1090 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1091 [annotation("_In_")] UINT StartIndex,
1092 [annotation("_In_")] UINT NumQueries,
1093 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1094 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1095 );
1096
1097 void SetPredication(
1098 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1099 [annotation("_In_")] UINT64 AlignedBufferOffset,
1100 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1101 );
1102
1103 void SetMarker(
1104 UINT Metadata,
1105 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1106 UINT Size);
1107
1108 void BeginEvent(
1109 UINT Metadata,
1110 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1111 UINT Size);
1112
1113 void EndEvent();
1114
1115 void EstimateMotion(
1116 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1117 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1118 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1119 );
1120
1121 void ResolveMotionVectorHeap(
1122 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1123 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1124 );
1125
1126 void WriteBufferImmediate(
1127 UINT Count,
1128 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1129 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1130 );
1131
1132 void SetProtectedResourceSession(
1133 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1134 );
1135}
1136
1137typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1138{
1139 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1141
1142} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1143cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
1144
1145// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1146typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1147{
1148 UINT NodeIndex; // input
1149 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1150 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1151} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1152
1153// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1154typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1155{
1156 UINT NodeIndex; // input
1157 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1158} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1159
1160// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1161typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1162{
1163 UINT NodeIndex; // input
1164 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1165} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1166
1167//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1168typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1169{
1170 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1171 BOOL Protected; // input
1172 UINT64 MemoryPoolL0Size; // output
1173 UINT64 MemoryPoolL1Size; // output
1174} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1175
1176// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1177typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1178{
1179 UINT NodeMask;
1180 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1181 UINT NumInputStreamDescs; // input
1182 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1183 BOOL Protected; // input
1184 UINT64 MemoryPoolL0Size; // output
1185 UINT64 MemoryPoolL1Size; // output
1186} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1187
1188typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1189{
1190 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1191 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1195 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1196 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1197} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1198
1199typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1200{
1201 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1202 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1203 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1204 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1205 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1206 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1207 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1208 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1209 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1210 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1211 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1212} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1213
1214typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1215{
1216 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1217 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1218 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1219} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1220
1221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
1222
1223typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1224{
1225 UINT NodeIndex; // in
1226 UINT CommandCount; // out
1227} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1228
1229typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1230{
1231 GUID CommandId;
1232 LPCWSTR Name;
1233 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1234} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1235
1236typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1237{
1238 UINT NodeIndex;
1239 UINT CommandCount;
1240 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1241} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1242
1243typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1244{
1245 GUID CommandId; // in
1246 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1247 UINT ParameterCount; // out
1248 UINT ParameterPacking; // out
1249} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1250
1251typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1252{
1253 LPCWSTR Name;
1254 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1255 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1256} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1257
1258typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1259{
1260 GUID CommandId; // in
1261 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1262 UINT ParameterCount; // in
1263 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1264} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1265
1266typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1267{
1268 UINT NodeIndex;
1269 GUID CommandId;
1270 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1271 SIZE_T InputDataSizeInBytes;
1272 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1273 SIZE_T OutputDataSizeInBytes;
1274} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1275
1276typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1277{
1278 UINT NodeIndex;
1279 GUID CommandId;
1280 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1281 SIZE_T CreationParametersSizeInBytes;
1282 UINT64 MemoryPoolL0Size; // output
1283 UINT64 MemoryPoolL1Size; // output
1284} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1285
1286typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1287{
1288 UINT NodeMask;
1289 GUID CommandId;
1290} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1291
1292[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1293interface ID3D12VideoDecoder1
1294 : ID3D12VideoDecoder
1295{
1296 HRESULT GetProtectedResourceSession(
1297 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1298 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1299}
1300
1301[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1302interface ID3D12VideoDecoderHeap1
1303 : ID3D12VideoDecoderHeap
1304{
1305 HRESULT GetProtectedResourceSession(
1306 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1307 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1308}
1309
1310[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1311interface ID3D12VideoProcessor1
1312 : ID3D12VideoProcessor
1313{
1314 HRESULT GetProtectedResourceSession(
1315 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1316 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1317}
1318
1319[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1320interface ID3D12VideoExtensionCommand
1321 : ID3D12Pageable
1322{
1323 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1324
1325 HRESULT GetProtectedResourceSession(
1326 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1327 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1328}
1329
1330[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1331interface ID3D12VideoDevice2
1332 : ID3D12VideoDevice1
1333{
1334 HRESULT CreateVideoDecoder1(
1335 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1336 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1337 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1338 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1339 );
1340
1341 HRESULT CreateVideoDecoderHeap1(
1342 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1344 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1345 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1346 );
1347
1348 HRESULT CreateVideoProcessor1(
1349 UINT NodeMask,
1350 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1351 UINT NumInputStreamDescs,
1352 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1353 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1354 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1355 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1356 );
1357
1358 HRESULT CreateVideoExtensionCommand(
1359 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1360 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1361 SIZE_T CreationParametersDataSizeInBytes,
1362 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1363 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1364 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1365
1366 HRESULT ExecuteExtensionCommand(
1367 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1368 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1369 SIZE_T ExecutionParametersSizeInBytes,
1370 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1371 SIZE_T OutputDataSizeInBytes
1372 );
1373}
1374
1375[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1376interface ID3D12VideoDecodeCommandList2
1377 : ID3D12VideoDecodeCommandList1
1378{
1379 void SetProtectedResourceSession(
1380 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1381 );
1382
1383 void InitializeExtensionCommand(
1384 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1385 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1386 SIZE_T InitializationParametersSizeInBytes);
1387
1388 void ExecuteExtensionCommand(
1389 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1390 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1391 SIZE_T ExecutionParametersSizeInBytes);
1392}
1393
1394[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
1395interface ID3D12VideoDecodeCommandList3
1396 : ID3D12VideoDecodeCommandList2
1397{
1398 void Barrier(
1399 UINT32 NumBarrierGroups,
1400 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1401 );
1402}
1403
1404
1405
1406[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1407interface ID3D12VideoProcessCommandList2
1408 : ID3D12VideoProcessCommandList1
1409{
1410
1411 void SetProtectedResourceSession(
1412 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1413 );
1414
1415 void InitializeExtensionCommand(
1416 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1417 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1418 SIZE_T InitializationParametersSizeInBytes);
1419
1420 void ExecuteExtensionCommand(
1421 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1422 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1423 SIZE_T ExecutionParametersSizeInBytes);
1424}
1425
1426[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
1427interface ID3D12VideoProcessCommandList3
1428 : ID3D12VideoProcessCommandList2
1429{
1430 void Barrier(
1431 UINT32 NumBarrierGroups,
1432 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1433 );
1434}
1435
1436
1437
1438[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1439interface ID3D12VideoEncodeCommandList1
1440 : ID3D12VideoEncodeCommandList
1441{
1442 void InitializeExtensionCommand(
1443 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1444 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1445 SIZE_T InitializationParametersSizeInBytes);
1446
1447 void ExecuteExtensionCommand(
1448 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1449 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1450 SIZE_T ExecutionParametersSizeInBytes);
1451}
1452
1453cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1454cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1455cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1456cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1457cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1458cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1459cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1460cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1461cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1462cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1463cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1464cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1465cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
1466cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
1467cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
1468cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
1469cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
1470cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
1471cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
1472cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
1473cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
1474cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
1475cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1476cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1477cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1478cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1479cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1480cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1481cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1482cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1483cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
1484cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
1485cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
1486cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
1487cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
1488cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
1489cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
1490
1491///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1492// Video Encoder
1493///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1494
1495typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
1496{
1497 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
1498 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
1499 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
1500} D3D12_VIDEO_ENCODER_AV1_PROFILE;
1501
1502typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
1503{ // These values are defined according to the AV1 codec standard spec
1504 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
1505 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
1506 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
1507 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
1508 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
1509 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
1510 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
1511 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
1512 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
1513 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
1514 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
1515 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
1516 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
1517 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
1518 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
1519 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
1520 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
1521 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
1522 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
1523 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
1524 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
1525 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
1526 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
1527 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
1528} D3D12_VIDEO_ENCODER_AV1_LEVELS;
1529
1530typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
1531{
1532 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
1533 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
1534} D3D12_VIDEO_ENCODER_AV1_TIER;
1535
1536typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
1537{
1538 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
1539 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
1540} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
1541
1542typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
1543{
1544 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
1545 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
1546 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
1547 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
1548 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
1549 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
1550 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
1551 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
1552 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
1553 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
1554 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
1555 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
1556 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
1557 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
1558 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
1559 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
1560 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
1561 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
1562 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
1563 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
1564 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
1565 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
1566 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
1567 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
1568 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
1569 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
1570 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
1571} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
1572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
1573
1574typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
1575 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
1576 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
1577 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
1578} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
1579
1580typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
1581 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
1582 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
1583 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
1584 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
1585} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
1586cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
1587
1588typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
1589 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
1590 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
1591 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
1592 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
1593 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
1594} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
1595
1596typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
1597 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
1598 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
1599 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
1600 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
1601 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
1602 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
1603} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
1604cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
1605
1606typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
1607 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
1608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
1609 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
1610 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
1611 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
1612} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
1613
1614typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
1615 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
1616 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
1617 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
1618 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
1619 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
1620 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
1621 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
1622 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
1623 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
1624} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
1625
1626typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
1627 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
1628 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
1629 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
1630 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
1631 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
1632 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
1633 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
1634 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
1635 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
1636 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
1637} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
1638cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
1639
1640typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
1641 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
1642 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
1643 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
1644 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
1645} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
1646
1647typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
1648 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
1649 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
1650 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
1651 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
1652 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
1653} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
1654
1655typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
1656 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
1657 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
1658 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
1659 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
1660 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
1661} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
1662cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
1663
1664typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
1665{
1666 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
1667 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
1668 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
1669 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
1670} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
1671
1672typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
1673 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
1674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
1675 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
1676 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
1677 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
1678} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
1679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
1680
1681typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
1682 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
1683 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
1684 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
1685 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
1686 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
1687 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
1688 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
1689 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
1690 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
1691 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
1692} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
1693cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
1694
1695typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
1696 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
1697 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
1698 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
1699 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
1700 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
1701 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
1702 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
1703 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
1704 UINT MaxTemporalLayers;
1705 UINT MaxSpatialLayers;
1706} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
1707
1708typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
1709{
1710 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
1711 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
1712 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
1713 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
1714} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
1715
1716typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
1717 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
1718 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
1719 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
1720 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
1721 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
1722} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
1723cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
1724
1725typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1726{
1727 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
1728 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
1729} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
1730
1731typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
1732 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
1733 UINT MaxUniqueReferencesPerFrame;
1734 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
1735 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
1736} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
1737
1738typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
1739 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
1740 UINT OrderHintBitsMinus1;
1741} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
1742
1743typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
1744{
1745 UINT IntraDistance;
1746 UINT InterFramePeriod;
1747} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
1748
1749typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
1750{
1751 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
1752 INT TransformationMatrix[8];
1753 BOOL InvalidAffineSet; // Valid or invalid on affine set
1754} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
1755
1756typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
1757{
1758 UINT ReconstructedPictureResourceIndex;
1759 UINT TemporalLayerIndexPlus1;
1760 UINT SpatialLayerIndexPlus1;
1761 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1762 // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
1763 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
1764 UINT OrderHint;
1765 UINT PictureIndex;
1766} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
1767
1768typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
1769{
1770 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
1771 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
1772 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
1773 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
1774 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
1775 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
1776 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
1777 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
1778 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
1779 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
1780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
1781 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
1782 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
1783 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
1784 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
1785 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
1786
1787} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
1788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
1789
1790typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
1791 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
1792 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
1793} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
1794
1795typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
1796 UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
1797 // For the enabled features in EnabledFeatures, the array below
1798 // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
1799 INT64 FeatureValue[8];
1800} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
1801
1802typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
1803 UINT64 UpdateMap;
1804 UINT64 TemporalUpdate;
1805 UINT64 UpdateData;
1806 UINT64 NumSegments;
1807 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
1808} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
1809
1810typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
1811 UINT SegmentsMapByteSize;
1812 UINT8* pSegmentsMap;
1813} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
1814
1815typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
1816 UINT64 LoopFilterLevel[2];
1817 UINT64 LoopFilterLevelU;
1818 UINT64 LoopFilterLevelV;
1819 UINT64 LoopFilterSharpnessLevel;
1820 UINT64 LoopFilterDeltaEnabled;
1821 // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
1822 UINT64 UpdateRefDelta;
1823 INT64 RefDeltas[8];
1824 UINT64 UpdateModeDelta;
1825 INT64 ModeDeltas[2];
1826} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
1827
1828typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
1829 UINT64 DeltaLFPresent;
1830 UINT64 DeltaLFMulti;
1831 UINT64 DeltaLFRes;
1832} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
1833
1834typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
1835 UINT64 BaseQIndex;
1836 INT64 YDCDeltaQ;
1837 INT64 UDCDeltaQ;
1838 INT64 UACDeltaQ;
1839 INT64 VDCDeltaQ;
1840 INT64 VACDeltaQ;
1841 UINT64 UsingQMatrix;
1842 UINT64 QMY;
1843 UINT64 QMU;
1844 UINT64 QMV;
1845} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
1846
1847typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
1848 UINT64 DeltaQPresent;
1849 UINT64 DeltaQRes;
1850} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
1851
1852typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
1853 UINT64 CdefBits;
1854 UINT64 CdefDampingMinus3;
1855 UINT64 CdefYPriStrength[8];
1856 UINT64 CdefUVPriStrength[8];
1857 UINT64 CdefYSecStrength[8];
1858 UINT64 CdefUVSecStrength[8];
1859} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
1860
1861typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
1862{
1863 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
1864 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1865 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
1866 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
1867 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
1868 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
1869 UINT SuperResDenominator;
1870 UINT OrderHint;
1871 UINT PictureIndex;
1872 UINT TemporalLayerIndexPlus1;
1873 UINT SpatialLayerIndexPlus1;
1874 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
1875 UINT ReferenceIndices[7];
1876 UINT PrimaryRefFrame;
1877 UINT RefreshFrameFlags;
1878 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1879 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1880 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1881 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1882 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1883 UINT QPMapValuesCount;
1884 [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
1885 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
1886 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
1887} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
1888
1889typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
1890{
1891 UINT64 RowCount;
1892 UINT64 ColCount;
1893 UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
1894 UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
1895 UINT64 ContextUpdateTileId;
1896} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
1897
1898typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
1899{
1900 UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1901 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1902 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1903 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1904 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1905 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1906 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
1907 UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
1908 UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
1909} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
1910
1911//
1912// Rate control API
1913//
1914
1915typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
1916{
1917 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
1918 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
1919 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
1920 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
1921 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
1922} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
1923
1924typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
1925{
1926 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
1927 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
1928 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
1929 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
1930 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
1931 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
1932 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
1933 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
1934 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
1935 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100,
1936} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
1937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
1938
1939typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
1940 UINT ConstantQP_FullIntracodedFrame;
1941 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1942 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1943} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
1944
1945typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
1946 UINT ConstantQP_FullIntracodedFrame;
1947 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1948 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1949 UINT QualityVsSpeed;
1950} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
1951
1952typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
1953 UINT InitialQP;
1954 UINT MinQP;
1955 UINT MaxQP;
1956 UINT64 MaxFrameBitSize;
1957 UINT64 TargetBitRate;
1958 UINT64 VBVCapacity;
1959 UINT64 InitialVBVFullness;
1960} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
1961
1962typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
1963 UINT InitialQP;
1964 UINT MinQP;
1965 UINT MaxQP;
1966 UINT64 MaxFrameBitSize;
1967 UINT64 TargetBitRate;
1968 UINT64 VBVCapacity;
1969 UINT64 InitialVBVFullness;
1970 UINT QualityVsSpeed;
1971} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
1972
1973typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
1974 UINT InitialQP;
1975 UINT MinQP;
1976 UINT MaxQP;
1977 UINT64 MaxFrameBitSize;
1978 UINT64 TargetAvgBitRate;
1979 UINT64 PeakBitRate;
1980 UINT64 VBVCapacity;
1981 UINT64 InitialVBVFullness;
1982} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
1983
1984typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
1985 UINT InitialQP;
1986 UINT MinQP;
1987 UINT MaxQP;
1988 UINT64 MaxFrameBitSize;
1989 UINT64 TargetAvgBitRate;
1990 UINT64 PeakBitRate;
1991 UINT64 VBVCapacity;
1992 UINT64 InitialVBVFullness;
1993 UINT QualityVsSpeed;
1994} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
1995
1996typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
1997 UINT InitialQP;
1998 UINT MinQP;
1999 UINT MaxQP;
2000 UINT64 MaxFrameBitSize;
2001 UINT64 TargetAvgBitRate;
2002 UINT64 PeakBitRate;
2003 UINT ConstantQualityTarget;
2004} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
2005
2006typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
2007{
2008 UINT InitialQP;
2009 UINT MinQP;
2010 UINT MaxQP;
2011 UINT64 MaxFrameBitSize;
2012 UINT64 TargetAvgBitRate;
2013 UINT64 PeakBitRate;
2014 UINT ConstantQualityTarget;
2015 UINT64 VBVCapacity;
2016 UINT64 InitialVBVFullness;
2017 UINT QualityVsSpeed;
2018} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
2019
2020typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
2021 UINT QualityVsSpeed;
2022} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
2023
2024typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
2025{
2026 UINT DataSize;
2027 union
2028 {
2029 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
2030 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
2031 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
2032 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
2033 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
2034 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
2035 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
2036 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
2037 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
2038 };
2039} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
2040
2041typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
2042 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
2043 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
2044 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
2045 DXGI_RATIONAL TargetFrameRate;
2046} D3D12_VIDEO_ENCODER_RATE_CONTROL;
2047
2048//
2049// Video Encoder support API
2050//
2051
2052typedef enum D3D12_VIDEO_ENCODER_CODEC
2053{
2054 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
2055 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
2056 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
2057} D3D12_VIDEO_ENCODER_CODEC;
2058
2059typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
2060{
2061 UINT NodeIndex; // input
2062 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2063 BOOL IsSupported; // output
2064} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
2065
2066typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
2067{
2068 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
2069 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
2070 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
2071} D3D12_VIDEO_ENCODER_PROFILE_H264;
2072
2073typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
2074{
2075 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
2076 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
2077 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
2078 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
2079 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
2080 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
2081 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
2082 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
2083 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
2084} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
2085
2086typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
2087{
2088 UINT DataSize;
2089 union
2090 {
2091 D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
2092 D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
2093 D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
2094 };
2095} D3D12_VIDEO_ENCODER_PROFILE_DESC;
2096
2097typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
2098{
2099 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
2100 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
2101 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
2102 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
2103 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
2104 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
2105 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
2106 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
2107 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
2108 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
2109 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
2110 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
2111 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
2112 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
2113 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
2114 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
2115 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
2116 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
2117 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
2118 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
2119} D3D12_VIDEO_ENCODER_LEVELS_H264;
2120
2121typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
2122{
2123 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
2124 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
2125} D3D12_VIDEO_ENCODER_TIER_HEVC;
2126
2127typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
2128{
2129 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
2130 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
2131 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
2132 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
2133 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
2134 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
2135 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
2136 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
2137 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
2138 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
2139 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
2140 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
2141 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
2142} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
2143
2144typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
2145{
2146 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
2147 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
2148} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
2149
2150typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
2151{
2152 UINT DataSize;
2153 union
2154 {
2155 D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
2156 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
2157 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
2158 };
2159} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
2160
2161typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
2162{
2163 UINT NodeIndex; // input
2164 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2165 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2166 BOOL IsSupported; // output
2167 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
2168 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
2169} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
2170
2171typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
2172{
2173 UINT Width;
2174 UINT Height;
2175} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
2176
2177typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
2178{
2179 UINT WidthRatio;
2180 UINT HeightRatio;
2181} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
2182
2183typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
2184{
2185 UINT NodeIndex; // input
2186 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2187 UINT ResolutionRatiosCount; // output
2188} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
2189
2190typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
2191{
2192 UINT NodeIndex; // input
2193 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2194 UINT ResolutionRatiosCount; // input
2195 BOOL IsSupported; // output
2196 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
2197 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
2198 UINT ResolutionWidthMultipleRequirement; // output
2199 UINT ResolutionHeightMultipleRequirement; // output
2200 [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
2201} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
2202
2203typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
2204{
2205 UINT NodeIndex; // input
2206 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2207 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2208 DXGI_FORMAT Format; // input
2209 BOOL IsSupported; // output
2210} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
2211
2212typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
2213{
2214 UINT NodeIndex; // input
2215 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2216 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode; // input
2217 BOOL IsSupported; // output
2218} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
2219
2220typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
2221{
2222 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
2223 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
2224} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2225
2226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
2227 UINT NodeIndex; // input
2228 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2229 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2230 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2231 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode; // input
2232 BOOL IsSupported; // output
2233} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2234
2235typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2236{
2237 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
2238 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
2239 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
2240 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
2241 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
2242 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
2243 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
2244 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7,
2245} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2246
2247typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2248{
2249 UINT NodeIndex; // input
2250 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2251 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2252 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2253 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2254 BOOL IsSupported; // output
2255} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2256
2257typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
2258{
2259 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
2260 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
2261 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
2262 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
2263 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
2264 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
2265 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
2266 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
2267 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
2268
2269} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
2270cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
2271
2272typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
2273{
2274 BOOL Use128SuperBlocks;
2275 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
2276 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
2277 UINT MinTileRows;
2278 UINT MaxTileRows;
2279 UINT MinTileCols;
2280 UINT MaxTileCols;
2281 UINT MinTileWidth;
2282 UINT MaxTileWidth;
2283 UINT MinTileArea;
2284 UINT MaxTileArea;
2285 UINT TileSizeBytesMinus1;
2286} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2287
2288typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
2289 UINT DataSize;
2290 union
2291 {
2292 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
2293 };
2294} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2295
2296typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
2297{
2298 UINT NodeIndex; // input
2299 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2300 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2301 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2302 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2303 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
2304 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
2305 BOOL IsSupported; // output
2306} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
2307
2308typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
2309{
2310 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
2311 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
2312 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
2313 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
2314 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8,
2315} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
2316cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
2317
2318typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
2319{
2320 UINT NodeMask;
2321 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
2322 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2323 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2324 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
2325 UINT ResolutionsListCount;
2326 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2327} D3D12_VIDEO_ENCODER_HEAP_DESC;
2328
2329typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
2330 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc; // input
2331 BOOL IsSupported; // output
2332 UINT64 MemoryPoolL0Size; // output
2333 UINT64 MemoryPoolL1Size; // output
2334} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
2335
2336typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
2337{
2338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
2339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
2340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
2342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
2343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
2344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
2345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
2346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
2347} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
2348cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
2349
2350typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
2351 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
2352 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
2353 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
2354 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
2355 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
2356 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
2357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
2358} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
2359
2360typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
2361 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
2362 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),
2363 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),
2364 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),
2365 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),
2366 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),
2367 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),
2368 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),
2369} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
2370cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
2371
2372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
2373 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
2374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
2375} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
2376
2377typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
2378{
2379 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
2380 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
2381 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
2383 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
2384 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
2385 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
2386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
2387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
2388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
2389 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
2390 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
2391 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
2392 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
2393 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
2394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
2395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
2396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
2397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
2398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
2399 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
2400 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
2401 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
2402 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
2403 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
2404 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
2405 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
2406 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
2407 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
2408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
2409 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
2410 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
2411 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
2412
2413} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
2414cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
2415
2416typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
2417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
2418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
2419 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
2420 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
2421} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
2422
2423typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
2424 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
2425 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
2426 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
2427 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
2428} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
2429
2430typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
2431 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2432 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2433 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2434 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2435 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2436 UCHAR max_transform_hierarchy_depth_inter;
2437 UCHAR max_transform_hierarchy_depth_intra;
2438} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
2439
2440
2441typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
2442{
2443 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
2444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
2445 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
2446} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
2447cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
2448
2449typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
2450 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2451 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2452 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2453 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2454 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2455 UCHAR max_transform_hierarchy_depth_inter;
2456 UCHAR max_transform_hierarchy_depth_intra;
2457 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
2458 UINT allowed_log2_sao_offset_scale_luma_values;
2459 UINT allowed_log2_sao_offset_scale_chroma_values;
2460 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
2461 UINT allowed_chroma_qp_offset_list_len_minus1_values;
2462 UINT allowed_cb_qp_offset_list_values[6];
2463 UINT allowed_cr_qp_offset_list_values[6];
2464 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
2465} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
2466
2467typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2468 UINT DataSize;
2469 union
2470 {
2471 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
2472 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
2473 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
2474 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
2475 };
2476} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2477
2478typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2479 UINT NodeIndex; // input
2480 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2481 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2482 BOOL IsSupported; // output
2483 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits; // input/output
2484} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2485
2486typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
2487 UINT MaxL0ReferencesForP;
2488 UINT MaxL0ReferencesForB;
2489 UINT MaxL1ReferencesForB;
2490 UINT MaxLongTermReferences;
2491 UINT MaxDPBCapacity;
2492} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
2493
2494typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
2495 UINT MaxL0ReferencesForP;
2496 UINT MaxL0ReferencesForB;
2497 UINT MaxL1ReferencesForB;
2498 UINT MaxLongTermReferences;
2499 UINT MaxDPBCapacity;
2500} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
2501
2502typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2503 UINT DataSize;
2504 union
2505 {
2506 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
2507 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
2508 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
2509 };
2510} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2511
2512typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2513 UINT NodeIndex; // input
2514 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2515 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2516 BOOL IsSupported; // output
2517 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport; // output
2518} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2519
2520typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
2521{
2522 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
2523 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
2524 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
2525 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
2526 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
2527 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
2528 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
2529 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
2530 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
2531 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
2532 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
2533 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
2534 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
2535 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
2536 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
2537 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
2538 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
2539 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
2540 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
2541 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
2542 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
2543 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
2544 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
2545 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
2546 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000,
2547} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
2548cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
2549
2550typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
2551{
2552 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
2553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
2554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
2555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
2556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
2557} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
2558cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
2559
2560typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
2561 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
2562 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
2563 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
2564} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
2565
2566typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
2567{
2568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
2569 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
2570 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
2571} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
2572
2573typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
2574{
2575 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
2576 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
2577 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
2578 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
2579 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
2580 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
2581 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
2582 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
2583 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
2584 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
2585 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
2586 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
2587 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
2588 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
2589 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
2590 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
2591 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
2592 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
2593} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
2594cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
2595
2596typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
2597 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
2598 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2599 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2600 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2601 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2602 UCHAR max_transform_hierarchy_depth_inter;
2603 UCHAR max_transform_hierarchy_depth_intra;
2604} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
2605
2606typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
2607{
2608 UINT DataSize;
2609 union
2610 {
2611 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
2612 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
2613 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
2614 };
2615} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
2616
2617typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
2618{
2619 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
2620 UINT IntraRefreshDuration;
2621} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
2622
2623
2624typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
2625{
2626 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
2627 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
2628 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
2629 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
2630 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
2631} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
2632
2633typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
2634{
2635 UINT MaxSubregionsNumber;
2636 UINT MaxIntraRefreshFrameDuration;
2637 UINT SubregionBlockPixelsSize;
2638 UINT QPMapRegionPixelsSize;
2639} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
2640
2641typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
2642{
2643 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
2644 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
2645 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
2646 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
2647 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
2648 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
2649 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
2650 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
2651 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
2652 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
2653 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
2654 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
2655 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
2656 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
2657 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000,
2658} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
2659cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
2660
2661typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
2662{
2663 UINT GOPLength;
2664 UINT PPicturePeriod;
2665 UCHAR pic_order_cnt_type;
2666 UCHAR log2_max_frame_num_minus4;
2667 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2668} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
2669
2670typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
2671{
2672 UINT GOPLength;
2673 UINT PPicturePeriod;
2674 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2675} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
2676
2677typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
2678{
2679 UINT DataSize;
2680 union
2681 {
2682 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
2683 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
2684 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
2685 };
2686} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
2687
2688typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
2689{
2690 // input
2691 UINT NodeIndex;
2692 D3D12_VIDEO_ENCODER_CODEC Codec;
2693 DXGI_FORMAT InputFormat;
2694 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2695 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2696 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2697 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2698 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2699 UINT ResolutionsListCount;
2700 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2701 UINT MaxReferenceFramesInDPB;
2702
2703 // single value output
2704 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2705 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2706 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2707 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
2708
2709 // resolution dependent output
2710 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2711} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
2712
2713typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
2714{
2715 // Mutually exclusive options according to selected mode
2716 union
2717 {
2718 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
2719 UINT MaxBytesPerSlice;
2720
2721 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
2722 UINT NumberOfCodingUnitsPerSlice;
2723
2724 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
2725 UINT NumberOfRowsPerSlice;
2726
2727 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
2728 UINT NumberOfSlicesPerFrame;
2729 };
2730} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
2731
2732typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
2733{
2734 UINT DataSize;
2735 union
2736 {
2737 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
2738 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
2739 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
2740 };
2741
2742} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
2743
2744typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
2745{
2746 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
2747 UINT NodeIndex;
2748 D3D12_VIDEO_ENCODER_CODEC Codec;
2749 DXGI_FORMAT InputFormat;
2750 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2751 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2752 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2753 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2754 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2755 UINT ResolutionsListCount;
2756 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2757 UINT MaxReferenceFramesInDPB;
2758 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2759 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2760 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2761 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
2762 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2763
2764 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
2765 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
2766 UINT MaxQualityVsSpeed;
2767} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
2768
2769typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
2770{
2771 UINT NodeIndex; // input
2772 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2773 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2774 DXGI_FORMAT InputFormat; // input
2775 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
2776
2777 BOOL IsSupported; // output
2778 UINT CompressedBitstreamBufferAccessAlignment; // output
2779 UINT EncoderMetadataBufferAccessAlignment; // output
2780 UINT MaxEncoderOutputMetadataBufferSize; // output
2781} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
2782
2783//
2784// Video Encoder creation API
2785//
2786
2787typedef enum D3D12_VIDEO_ENCODER_FLAGS
2788{
2789 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
2790} D3D12_VIDEO_ENCODER_FLAGS;
2791cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
2792
2793typedef struct D3D12_VIDEO_ENCODER_DESC
2794{
2795 UINT NodeMask;
2796 D3D12_VIDEO_ENCODER_FLAGS Flags;
2797 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2798 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2799 DXGI_FORMAT InputFormat;
2800 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2801 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
2802} D3D12_VIDEO_ENCODER_DESC;
2803
2804[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
2805interface ID3D12VideoEncoder
2806 : ID3D12Pageable
2807{
2808 UINT GetNodeMask();
2809 D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags();
2810 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2811 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2812 HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
2813 DXGI_FORMAT GetInputFormat();
2814 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
2815}
2816
2817[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
2818interface ID3D12VideoEncoderHeap
2819 : ID3D12Pageable
2820{
2821 UINT GetNodeMask();
2822 D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags();
2823 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2824 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2825 HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
2826 UINT GetResolutionListCount();
2827 HRESULT GetResolutionList(
2828 const UINT ResolutionsListCount,
2829 [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList);
2830}
2831
2832[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
2833interface ID3D12VideoDevice3
2834 : ID3D12VideoDevice2
2835{
2836
2837 HRESULT CreateVideoEncoder(
2838 [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
2839 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
2840 [annotation("_COM_Outptr_")] void** ppVideoEncoder);
2841
2842 HRESULT CreateVideoEncoderHeap(
2843 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
2844 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
2845 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
2846
2847}
2848
2849//
2850// Video Encoder operation API
2851//
2852
2853
2854typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
2855{
2856 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
2857 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
2858 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
2859 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
2860} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
2861
2862
2863typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
2864{
2865 UINT ReconstructedPictureResourceIndex;
2866 BOOL IsLongTermReference;
2867 UINT LongTermPictureIdx;
2868 UINT PictureOrderCountNumber;
2869 UINT FrameDecodingOrderNumber;
2870 UINT TemporalLayerIndex;
2871} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
2872
2873typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
2874{
2875 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
2876 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2877 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2878} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
2879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
2880
2881typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
2882{
2883 UCHAR memory_management_control_operation;
2884 UINT difference_of_pic_nums_minus1;
2885 UINT long_term_pic_num;
2886 UINT long_term_frame_idx;
2887 UINT max_long_term_frame_idx_plus1;
2888} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
2889
2890typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
2891{
2892 UCHAR modification_of_pic_nums_idc;
2893 UINT abs_diff_pic_num_minus1;
2894 UINT long_term_pic_num;
2895} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
2896
2897typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
2898{
2899 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
2900 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
2901 UINT pic_parameter_set_id;
2902 UINT idr_pic_id;
2903 UINT PictureOrderCountNumber;
2904 UINT FrameDecodingOrderNumber;
2905 UINT TemporalLayerIndex;
2906 UINT List0ReferenceFramesCount;
2907 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2908 UINT List1ReferenceFramesCount;
2909 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2910 UINT ReferenceFramesReconPictureDescriptorsCount;
2911 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
2912 UCHAR adaptive_ref_pic_marking_mode_flag;
2913 UINT RefPicMarkingOperationsCommandsCount;
2914 [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
2915 UINT List0RefPicModificationsCount;
2916 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
2917 UINT List1RefPicModificationsCount;
2918 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
2919 UINT QPMapValuesCount;
2920 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2921} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
2922
2923typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
2924{
2925 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
2926 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
2927 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
2928 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
2929} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
2930
2931typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
2932{
2933 UINT ReconstructedPictureResourceIndex;
2934 BOOL IsRefUsedByCurrentPic;
2935 BOOL IsLongTermReference;
2936 UINT PictureOrderCountNumber;
2937 UINT TemporalLayerIndex;
2938} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
2939
2940typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
2941{
2942 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
2943 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2944 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2945 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
2946 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
2947} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
2948cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
2949
2950typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
2951{
2952 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2953 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2954 UINT slice_pic_parameter_set_id;
2955 UINT PictureOrderCountNumber;
2956 UINT TemporalLayerIndex;
2957 UINT List0ReferenceFramesCount;
2958 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2959 UINT List1ReferenceFramesCount;
2960 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2961 UINT ReferenceFramesReconPictureDescriptorsCount;
2962 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2963 UINT List0RefPicModificationsCount;
2964 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2965 UINT List1RefPicModificationsCount;
2966 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2967 UINT QPMapValuesCount;
2968 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2969} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
2970
2971typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
2972{
2973 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2974 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2975 UINT slice_pic_parameter_set_id;
2976 UINT PictureOrderCountNumber;
2977 UINT TemporalLayerIndex;
2978 UINT List0ReferenceFramesCount;
2979 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2980 UINT List1ReferenceFramesCount;
2981 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2982 UINT ReferenceFramesReconPictureDescriptorsCount;
2983 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2984 UINT List0RefPicModificationsCount;
2985 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2986 UINT List1RefPicModificationsCount;
2987 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2988 UINT QPMapValuesCount;
2989 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
2990 UCHAR diff_cu_chroma_qp_offset_depth;
2991 UCHAR log2_sao_offset_scale_luma;
2992 UCHAR log2_sao_offset_scale_chroma;
2993 UCHAR log2_max_transform_skip_block_size_minus2;
2994 UCHAR chroma_qp_offset_list_len_minus1;
2995 CHAR cb_qp_offset_list[6];
2996 CHAR cr_qp_offset_list[6];
2997} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
2998
2999typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
3000{
3001 UINT DataSize;
3002 union
3003 {
3004 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3005 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
3006 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
3007 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3008 };
3009} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
3010
3011typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
3012{
3013 UINT NumTexture2Ds;
3014 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
3015 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
3016} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
3017
3018typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
3019{
3020 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
3021 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
3022 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
3023 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
3024 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8,
3025} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
3026cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
3027
3028typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
3029{
3030 UINT IntraRefreshFrameIndex;
3031 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3032 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
3033 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3034} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
3035
3036typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
3037{
3038 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
3039 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
3040 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
3041 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
3042 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
3043 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
3044} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
3045cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
3046
3047typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
3048{
3049 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
3050 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
3051 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3052 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
3053 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
3054 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
3055 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3056} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
3057
3058//
3059// Video Encoder operation commands API
3060//
3061
3062typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
3063{
3064 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3065 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
3066 ID3D12Resource *pInputFrame;
3067 UINT InputFrameSubresource;
3068 UINT CurrentFrameBitstreamMetadataSize;
3069} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
3070
3071typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
3072{
3073 ID3D12Resource* pBuffer;
3074 UINT64 FrameStartOffset;
3075} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
3076
3077typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
3078{
3079 ID3D12Resource *pReconstructedPicture;
3080 UINT ReconstructedPictureSubresource;
3081} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
3082
3083typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
3084{
3085 UINT64 bSize;
3086 UINT64 bStartOffset;
3087 UINT64 bHeaderSize;
3088} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
3089
3090typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3091{
3092 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
3093 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
3094 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
3095 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
3096 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
3097 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
3098} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
3099cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
3100
3101typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
3102{
3103 UINT64 AverageQP;
3104 UINT64 IntraCodingUnitsCount;
3105 UINT64 InterCodingUnitsCount;
3106 UINT64 SkipCodingUnitsCount;
3107 UINT64 AverageMotionEstimationXDirection;
3108 UINT64 AverageMotionEstimationYDirection;
3109} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
3110
3111typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
3112{
3113 UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3114 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
3115 UINT64 EncodedBitstreamWrittenBytesCount;
3116 UINT64 WrittenSubregionsCount;
3117} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
3118
3119typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
3120{
3121 ID3D12Resource* pBuffer;
3122 UINT64 Offset;
3123} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
3124
3125typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
3126{
3127 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3128 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3129 DXGI_FORMAT EncoderInputFormat;
3130 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3131 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3132} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
3133
3134typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
3135{
3136 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3137} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
3138
3139typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
3140{
3141 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
3142 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3143 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3144} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
3145
3146[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
3147interface ID3D12VideoEncodeCommandList2
3148 : ID3D12VideoEncodeCommandList1
3149{
3150 void EncodeFrame(
3151 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3152 [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
3153 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
3154 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
3155
3156 void ResolveEncoderOutputMetadata(
3157 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
3158 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
3159}
3160
3161
3162[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
3163interface ID3D12VideoEncodeCommandList3
3164 : ID3D12VideoEncodeCommandList2
3165{
3166
3167 void Barrier(
3168 UINT32 NumBarrierGroups,
3169 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
3170 );
3171}
3172
3173
3174
3175typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
3176{
3177 UINT NodeMask;
3178 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
3179 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3180 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3181 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
3182 UINT ResolutionsListCount;
3183 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3184 UINT Pow2DownscaleFactor;
3185} D3D12_VIDEO_ENCODER_HEAP_DESC1;
3186
3187[uuid(ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9), object, local, pointer_default(unique)]
3188interface ID3D12VideoEncoderHeap1
3189 : ID3D12VideoEncoderHeap
3190{
3191 UINT GetPow2DownscaleFactor();
3192}
3193
3194[uuid(e59ad09e-f1ae-42bb-8983-9f6e5586c4eb), object, local, pointer_default(unique)]
3195interface ID3D12VideoDevice4
3196 : ID3D12VideoDevice3
3197{
3198 HRESULT CreateVideoEncoderHeap1(
3199 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC1* pDesc,
3200 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap1,
3201 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
3202
3203}
3204
3205typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1 {
3206 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc; // input
3207 BOOL IsSupported; // output
3208 UINT64 MemoryPoolL0Size; // output
3209 UINT64 MemoryPoolL1Size; // output
3210} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
3211
3212typedef enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
3213{
3214 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0x0,
3215 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
3216 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
3217 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
3218 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
3219 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10,
3220} D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
3221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )")
3222
3223// Binary back-compat with D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
3224typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
3225{
3226 UINT NodeIndex; // input
3227 D3D12_VIDEO_ENCODER_CODEC Codec; // input
3228 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
3229 DXGI_FORMAT InputFormat; // input
3230 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
3231
3232 BOOL IsSupported; // output
3233 UINT CompressedBitstreamBufferAccessAlignment; // output
3234 UINT EncoderMetadataBufferAccessAlignment; // output
3235 UINT MaxEncoderOutputMetadataBufferSize; // output
3236 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; // input
3237 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; // input
3238 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions; // output
3239 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions; // output
3240 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions; // output
3241 UINT EncoderOutputMetadataFramePSNRComponentsNumber; // output
3242 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber; // output
3243 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize; // output
3244} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
3245
3246typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
3247{
3248 float PSNRY;
3249 float PSNRU;
3250 float PSNRV;
3251} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
3252
3253typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
3254{
3255 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
3256 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1,
3257} D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
3258
3259typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
3260{
3261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
3262 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1,
3263} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
3264
3265typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
3266{
3267 D3D12_VIDEO_ENCODER_CODEC Codec;
3268 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3269 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3270 DXGI_FORMAT InputFormat;
3271 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3273 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3274 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3275} D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
3276
3277typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
3278{
3279 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
3280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
3281 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2,
3282} D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
3283
3284typedef enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
3285{
3286 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
3287 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
3288 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2,
3289} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
3290
3291// D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT
3292typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
3293{
3294 UINT NodeIndex;
3295 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3296 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3297 BOOL IsSupported;
3298 UINT MapSourcePreferenceRanking;
3299 UINT BlockSize;
3300} D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
3301
3302typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
3303{
3304 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0x0,
3305 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
3306 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
3307 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4,
3308} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
3309cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )")
3310
3311// D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS
3312typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
3313{
3314 UINT NodeIndex;
3315 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3316 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3317 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3318 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
3319 UINT MapSourcePreferenceRanking;
3320} D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
3321
3322typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
3323{
3324 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
3325 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
3326 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2,
3327} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
3328
3329typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS {
3330 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0x0,
3331 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL), // 0x1
3332 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL), // 0x2
3333 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL), // 0x4
3334} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
3335cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )")
3336
3337typedef enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
3338{
3339 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0x0,
3340 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
3341 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
3342 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4,
3343
3344
3345} D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
3346cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )")
3347
3348// D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH
3349typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
3350{
3351 UINT NodeIndex;
3352 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3353 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3354 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3355 BOOL BidirectionalRefFrameEnabled;
3356 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3357 UINT MaxMotionHints;
3358 UINT MinDeviation;
3359 UINT MaxDeviation;
3360 UINT MapSourcePreferenceRanking;
3361 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
3362} D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
3363
3364// D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3365typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3366{
3367 UINT NodeIndex;
3368 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3369 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3370 BOOL IsSupported;
3371 UINT64 MaxResolvedBufferAllocationSize;
3372} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
3373
3374typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
3375{
3376 BOOL Enabled;
3377 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3378} D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
3379
3380typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
3381{
3382 // Reuse existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1.QPMapRegionPixelsSize for BlockSize
3383 UINT MapSourcePreferenceRanking;
3384} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
3385
3386typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
3387{
3388 BOOL Enabled;
3389 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3390 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3391} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
3392
3393typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
3394{
3395 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
3396 UINT MapSourcePreferenceRanking;
3397} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
3398
3399typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
3400{
3401 BOOL Enabled;
3402 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3403 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3404 BOOL BidirectionalRefFrameEnabled;
3405} D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
3406
3407typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
3408{
3409 UINT MaxMotionHints;
3410 UINT MinDeviation;
3411 UINT MaxDeviation;
3412 UINT MapSourcePreferenceRanking;
3413 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
3414 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3415} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
3416
3417typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
3418{
3419 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0x0,
3420 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
3421 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
3422 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
3423 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
3424 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
3425 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
3426
3427 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED =
3428 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED |
3429 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED |
3430 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED,
3431
3432} D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
3433cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )")
3434
3435// D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3436typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3437{
3438 UINT NodeIndex;
3439 D3D12_VIDEO_ENCODER_CODEC Codec;
3440 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3441 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3442 DXGI_FORMAT InputFormat;
3443 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3445 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3446 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3447 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3448 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3449 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3450 UINT Pow2DownscaleFactor;
3451 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3452} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
3453
3454typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
3455{
3456 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3457} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
3458
3459typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3460{
3461 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS */
3462 UINT MaxSubregionsNumber;
3463 UINT MaxIntraRefreshFrameDuration;
3464 UINT SubregionBlockPixelsSize;
3465 UINT QPMapRegionPixelsSize;
3466
3467 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 */
3468 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
3469 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
3470 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
3471 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
3472} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
3473
3474typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
3475{
3476 BOOL Enabled;
3477 UINT Pow2DownscaleFactor;
3478} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
3479
3480// D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2
3481typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
3482{
3483 /*
3484 * Below params match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 binary size
3485 * please note pResolutionDependentSupport type changes from D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS to D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3486 */
3487
3488 UINT NodeIndex;
3489 D3D12_VIDEO_ENCODER_CODEC Codec;
3490 DXGI_FORMAT InputFormat;
3491 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3492 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3493 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3494 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
3495 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3496 UINT ResolutionsListCount;
3497 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3498 UINT MaxReferenceFramesInDPB;
3499 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
3500 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
3501 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
3502 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
3503 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1* pResolutionDependentSupport;
3504 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3505 UINT MaxQualityVsSpeed;
3506
3507 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 */
3508 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3509 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3510 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3511 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
3512} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
3513
3514typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
3515{
3516 BOOL FullFrameIdentical;
3517 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3518 UINT NumDirtyRects;
3519 [annotation("_Field_size_full_(NumDirtyRects)")] RECT* pDirtyRects;
3520 UINT SourceDPBFrameReference;
3521} D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
3522
3523typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
3524{
3525 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3526 union
3527 {
3528 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3529 ID3D12Resource* pOpaqueLayoutBuffer;
3530 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3531 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO* pCPUBuffer;
3532 };
3533} D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
3534
3535typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
3536{
3537 ID3D12Resource* pOpaqueQuantizationMap;
3538} D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
3539
3540typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
3541{
3542 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3543 UINT SearchDeviationLimit;
3544} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
3545
3546typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
3547{
3548 POINT SourcePoint;
3549 RECT DestRect;
3550} D3D12_VIDEO_ENCODER_MOVE_RECT;
3551
3552typedef enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
3553{
3554 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0x0,
3555 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1,
3556} D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
3557
3558typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
3559{
3560 UINT NumMoveRegions;
3561 [annotation("_Field_size_full_(NumMoveRegions)")] D3D12_VIDEO_ENCODER_MOVE_RECT* pMoveRegions;
3562 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3563 UINT SourceDPBFrameReference;
3564 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3565 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
3566} D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
3567
3568typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
3569{
3570 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3571 union
3572 {
3573 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3574 ID3D12Resource* pOpaqueLayoutBuffer;
3575 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3576 D3D12_VIDEO_ENCODER_MOVEREGION_INFO* pCPUBuffer;
3577 };
3578} D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
3579
3580typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
3581{
3582 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
3583 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
3584 UINT slice_pic_parameter_set_id;
3585 UINT PictureOrderCountNumber;
3586 UINT TemporalLayerIndex;
3587 UINT List0ReferenceFramesCount;
3588 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
3589 UINT List1ReferenceFramesCount;
3590 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
3591 UINT ReferenceFramesReconPictureDescriptorsCount;
3592 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
3593 UINT List0RefPicModificationsCount;
3594 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
3595 UINT List1RefPicModificationsCount;
3596 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
3597 UINT QPMapValuesCount;
3598 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
3599 UCHAR diff_cu_chroma_qp_offset_depth;
3600 UCHAR log2_sao_offset_scale_luma;
3601 UCHAR log2_sao_offset_scale_chroma;
3602 UCHAR log2_max_transform_skip_block_size_minus2;
3603 UCHAR chroma_qp_offset_list_len_minus1;
3604 CHAR cb_qp_offset_list[6];
3605 CHAR cr_qp_offset_list[6];
3606 UINT num_ref_idx_l0_active_minus1;
3607 UINT num_ref_idx_l1_active_minus1;
3608} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
3609
3610typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
3611{
3612 UINT DataSize;
3613 union
3614 {
3615 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3616 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2* pHEVCPicData;
3617 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3618 };
3619} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
3620
3621typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
3622{
3623 ID3D12Resource* pDownscaledFrame;
3624 UINT64 Subresource;
3625 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
3626} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
3627
3628typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
3629{
3630 UINT IntraRefreshFrameIndex;
3631 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3632 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
3633 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3634 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
3635 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
3636 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
3637 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
3638} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
3639
3640typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
3641{
3642 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3643 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
3644 ID3D12Resource* pInputFrame;
3645 UINT InputFrameSubresource;
3646 UINT CurrentFrameBitstreamMetadataSize;
3647 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3648} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
3649
3650typedef enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
3651{
3652 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
3653 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1,
3654} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
3655
3656typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
3657{
3658 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
3659 UINT ExpectedSubregionCount;
3660 UINT64* pSubregionBitstreamsBaseOffsets;
3661 ID3D12Resource** ppSubregionBitstreams;
3662 ID3D12Resource** ppSubregionSizes;
3663 ID3D12Resource** ppSubregionOffsets;
3664 ID3D12Fence** ppSubregionFences;
3665 UINT64* pSubregionFenceValues;
3666} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
3667
3668typedef enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
3669{
3670 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
3671 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1,
3672} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
3673
3674typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
3675{
3676 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
3677 union
3678 {
3679 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
3680 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
3681 };
3682} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
3683
3684typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
3685{
3686 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
3687 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3688 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3689 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
3690} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
3691
3692typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
3693{
3694 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3695 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3696 DXGI_FORMAT EncoderInputFormat;
3697 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3698 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3699 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3700 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3701} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
3702
3703typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
3704{
3705 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3706 ID3D12Resource* pOutputQPMap;
3707 ID3D12Resource* pOutputSATDMap;
3708 ID3D12Resource* pOutputBitAllocationMap;
3709 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
3710 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
3711} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
3712
3713typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
3714{
3715 ID3D12Resource* pQuantizationMap;
3716} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
3717
3718typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
3719{
3720 BOOL FullFrameIdentical;
3721 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3722 ID3D12Resource* pDirtyRegionsMap;
3723 UINT SourceDPBFrameReference;
3724} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
3725
3726typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
3727{
3728 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3729 UINT NumHintsPerPixel;
3730 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMaps;
3731 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsSubresources;
3732 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMapsMetadata;
3733 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsMetadataSubresources;
3734 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3735 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
3736} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
3737
3738typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
3739{
3740 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3741 union
3742 {
3743 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX
3744 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
3745 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS
3746 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
3747 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS
3748 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
3749 };
3750} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
3751
3752typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
3753{
3754 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3755 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
3756} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
3757
3758typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
3759{
3760 ID3D12Resource* pOpaqueLayoutBuffer;
3761} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
3762
3763// Change this interface UUID when changing the base class in the inheritance
3764[uuid(69aeb5b7-55f2-4012-8b73-3a88d65a204c), object, local, pointer_default(unique)]
3765interface ID3D12VideoEncodeCommandList4
3766 : ID3D12VideoEncodeCommandList3
3767{
3768 void EncodeFrame1(
3769 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3770 [annotation("_In_")] ID3D12VideoEncoderHeap1* pHeap,
3771 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1* pInputArguments,
3772 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1* pOutputArguments);
3773
3774 void ResolveEncoderOutputMetadata1(
3775 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1* pInputArguments,
3776 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1* pOutputArguments);
3777
3778 void ResolveInputParamLayout(
3779 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS* pInputArguments,
3780 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS* pOutputArguments);
3781}
3782
3783
3784
3785cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
3786#pragma endregion
3787
3788
3789cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
3790cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
3791cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
3792cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
3793cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
3794cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
3795cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
3796cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
3797cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
3798cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
3799cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
3800cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
3801cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
3802cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
3803cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
3804cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
3805cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
3806cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
3807cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
3808cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
3809cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
3810cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
3811cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
3812cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
3813cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
3814cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
3815cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )
3816cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);" )
3817cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);" )
3818cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h
new file mode 100644
index 0000000..2e2418d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h
@@ -0,0 +1,1133 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if defined(_CONTROL_FLOW_GUARD_XFG)
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "oaidl.h"
72#include "ocidl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
97 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
98 D3D_FEATURE_LEVEL_9_1 = 0x9100,
99 D3D_FEATURE_LEVEL_9_2 = 0x9200,
100 D3D_FEATURE_LEVEL_9_3 = 0x9300,
101 D3D_FEATURE_LEVEL_10_0 = 0xa000,
102 D3D_FEATURE_LEVEL_10_1 = 0xa100,
103 D3D_FEATURE_LEVEL_11_0 = 0xb000,
104 D3D_FEATURE_LEVEL_11_1 = 0xb100,
105 D3D_FEATURE_LEVEL_12_0 = 0xc000,
106 D3D_FEATURE_LEVEL_12_1 = 0xc100,
107 D3D_FEATURE_LEVEL_12_2 = 0xc200
108 } D3D_FEATURE_LEVEL;
109
110#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
111#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
112#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
113#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
114#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
115#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
116#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
117#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
118#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
119#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
120#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
121#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
122#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
123#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
124#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
125typedef
126enum D3D_PRIMITIVE_TOPOLOGY
127 {
128 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
129 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
130 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
131 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
133 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
134 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
135 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
136 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
137 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
138 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
139 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
140 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
141 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
142 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
143 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
144 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
145 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
146 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
147 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
148 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
149 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
150 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
151 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
152 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
153 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
154 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
155 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
156 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
157 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
158 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
159 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
160 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
161 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
162 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
163 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
164 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
165 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
166 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
167 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
168 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
169 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
170 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
171 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
172 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
173 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
176 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
177 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
179 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
180 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
181 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
182 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
183 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
186 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
187 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
190 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
191 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
221 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
222 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
223 } D3D_PRIMITIVE_TOPOLOGY;
224
225typedef
226enum D3D_PRIMITIVE
227 {
228 D3D_PRIMITIVE_UNDEFINED = 0,
229 D3D_PRIMITIVE_POINT = 1,
230 D3D_PRIMITIVE_LINE = 2,
231 D3D_PRIMITIVE_TRIANGLE = 3,
232 D3D_PRIMITIVE_LINE_ADJ = 6,
233 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
234 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
235 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
236 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
237 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
238 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
239 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
240 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
241 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
242 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
243 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
244 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
245 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
246 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
247 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
248 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
249 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
250 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
251 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
252 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
253 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
254 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
255 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
256 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
257 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
258 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
259 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
260 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
261 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
262 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
263 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
264 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
265 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
266 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
267 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
268 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
269 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
270 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
271 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
272 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
273 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
274 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
275 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
276 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
277 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
278 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
308 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
309 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
310 } D3D_PRIMITIVE;
311
312typedef
313enum D3D_SRV_DIMENSION
314 {
315 D3D_SRV_DIMENSION_UNKNOWN = 0,
316 D3D_SRV_DIMENSION_BUFFER = 1,
317 D3D_SRV_DIMENSION_TEXTURE1D = 2,
318 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
319 D3D_SRV_DIMENSION_TEXTURE2D = 4,
320 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
321 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
322 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
323 D3D_SRV_DIMENSION_TEXTURE3D = 8,
324 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
325 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
326 D3D_SRV_DIMENSION_BUFFEREX = 11,
327 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
328 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
329 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
330 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
332 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
334 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
335 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
336 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
337 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
338 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
339 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
340 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
344 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
345 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
346 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
347 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
348 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
349 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
350 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
351 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
353 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
355 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
356 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
357 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
358 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
359 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
360 } D3D_SRV_DIMENSION;
361
362#define D3D_SHADER_FEATURE_DOUBLES 0x00001
363#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
364#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
365#define D3D_SHADER_FEATURE_64_UAVS 0x00008
366#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
367#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
368#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
369#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
370#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
371#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
372#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
373#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
374#define D3D_SHADER_FEATURE_ROVS 0x01000
375#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
376#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
377#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
378#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
379#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
380#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
381#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
382#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
383#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
384#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
385#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
386#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
387#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
388#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
389#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
390#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
391#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
392#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
393#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
394#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
395#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
396#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
397typedef struct _D3D_SHADER_MACRO
398 {
399 LPCSTR Name;
400 LPCSTR Definition;
401 } D3D_SHADER_MACRO;
402
403typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
404
405DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
406
407
408extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
409extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
410
411#ifndef __ID3D10Blob_INTERFACE_DEFINED__
412#define __ID3D10Blob_INTERFACE_DEFINED__
413
414/* interface ID3D10Blob */
415/* [unique][local][object][uuid] */
416
417
418EXTERN_C const IID IID_ID3D10Blob;
419
420#if defined(__cplusplus) && !defined(CINTERFACE)
421
422 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
423 ID3D10Blob : public IUnknown
424 {
425 public:
426 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
427
428 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
429
430 };
431
432
433#else /* C style interface */
434
435 typedef struct ID3D10BlobVtbl
436 {
437 BEGIN_INTERFACE
438
439 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
440 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
441 ID3D10Blob * This,
442 /* [in] */ REFIID riid,
443 /* [annotation][iid_is][out] */
444 _COM_Outptr_ void **ppvObject);
445
446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
447 ULONG ( STDMETHODCALLTYPE *AddRef )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(IUnknown, Release)
451 ULONG ( STDMETHODCALLTYPE *Release )(
452 ID3D10Blob * This);
453
454 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
455 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
456 ID3D10Blob * This);
457
458 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
459 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
460 ID3D10Blob * This);
461
462 END_INTERFACE
463 } ID3D10BlobVtbl;
464
465 interface ID3D10Blob
466 {
467 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D10Blob_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D10Blob_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D10Blob_GetBufferPointer(This) \
486 ( (This)->lpVtbl -> GetBufferPointer(This) )
487
488#define ID3D10Blob_GetBufferSize(This) \
489 ( (This)->lpVtbl -> GetBufferSize(This) )
490
491#endif /* COBJMACROS */
492
493
494#endif /* C style interface */
495
496
497
498
499#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
500
501
502/* interface __MIDL_itf_d3dcommon_0000_0001 */
503/* [local] */
504
505typedef interface ID3D10Blob* LPD3D10BLOB;
506typedef ID3D10Blob ID3DBlob;
507
508typedef ID3DBlob* LPD3DBLOB;
509#define IID_ID3DBlob IID_ID3D10Blob
510typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
511 void *pData);
512
513
514
515extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
516extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
517
518#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
519#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
520
521/* interface ID3DDestructionNotifier */
522/* [unique][local][object][uuid] */
523
524
525EXTERN_C const IID IID_ID3DDestructionNotifier;
526
527#if defined(__cplusplus) && !defined(CINTERFACE)
528
529 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
530 ID3DDestructionNotifier : public IUnknown
531 {
532 public:
533 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
534 /* [annotation] */
535 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
536 /* [annotation] */
537 _In_ void *pData,
538 /* [annotation] */
539 _Out_ UINT *pCallbackID) = 0;
540
541 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
542 /* [annotation] */
543 _In_ UINT callbackID) = 0;
544
545 };
546
547
548#else /* C style interface */
549
550 typedef struct ID3DDestructionNotifierVtbl
551 {
552 BEGIN_INTERFACE
553
554 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
555 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
556 ID3DDestructionNotifier * This,
557 /* [in] */ REFIID riid,
558 /* [annotation][iid_is][out] */
559 _COM_Outptr_ void **ppvObject);
560
561 DECLSPEC_XFGVIRT(IUnknown, AddRef)
562 ULONG ( STDMETHODCALLTYPE *AddRef )(
563 ID3DDestructionNotifier * This);
564
565 DECLSPEC_XFGVIRT(IUnknown, Release)
566 ULONG ( STDMETHODCALLTYPE *Release )(
567 ID3DDestructionNotifier * This);
568
569 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
570 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
571 ID3DDestructionNotifier * This,
572 /* [annotation] */
573 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
574 /* [annotation] */
575 _In_ void *pData,
576 /* [annotation] */
577 _Out_ UINT *pCallbackID);
578
579 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
580 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
581 ID3DDestructionNotifier * This,
582 /* [annotation] */
583 _In_ UINT callbackID);
584
585 END_INTERFACE
586 } ID3DDestructionNotifierVtbl;
587
588 interface ID3DDestructionNotifier
589 {
590 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
591 };
592
593
594
595#ifdef COBJMACROS
596
597
598#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
599 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
600
601#define ID3DDestructionNotifier_AddRef(This) \
602 ( (This)->lpVtbl -> AddRef(This) )
603
604#define ID3DDestructionNotifier_Release(This) \
605 ( (This)->lpVtbl -> Release(This) )
606
607
608#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
609 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
610
611#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
612 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
613
614#endif /* COBJMACROS */
615
616
617#endif /* C style interface */
618
619
620
621
622#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
623
624
625/* interface __MIDL_itf_d3dcommon_0000_0002 */
626/* [local] */
627
628typedef
629enum _D3D_INCLUDE_TYPE
630 {
631 D3D_INCLUDE_LOCAL = 0,
632 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
633 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
634 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
635 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
636 } D3D_INCLUDE_TYPE;
637
638typedef interface ID3DInclude ID3DInclude;
639#undef INTERFACE
640#define INTERFACE ID3DInclude
641DECLARE_INTERFACE(ID3DInclude)
642{
643 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
644 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
645};
646typedef ID3DInclude* LPD3DINCLUDE;
647typedef
648enum _D3D_SHADER_VARIABLE_CLASS
649 {
650 D3D_SVC_SCALAR = 0,
651 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
652 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
653 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
654 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
655 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
656 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
657 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
658 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
659 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
660 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
661 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
662 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
663 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
664 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
665 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
666 D3D_SVC_FORCE_DWORD = 0x7fffffff
667 } D3D_SHADER_VARIABLE_CLASS;
668
669typedef
670enum _D3D_SHADER_VARIABLE_FLAGS
671 {
672 D3D_SVF_USERPACKED = 1,
673 D3D_SVF_USED = 2,
674 D3D_SVF_INTERFACE_POINTER = 4,
675 D3D_SVF_INTERFACE_PARAMETER = 8,
676 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
677 D3D10_SVF_USED = D3D_SVF_USED,
678 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
679 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
680 D3D_SVF_FORCE_DWORD = 0x7fffffff
681 } D3D_SHADER_VARIABLE_FLAGS;
682
683typedef
684enum _D3D_SHADER_VARIABLE_TYPE
685 {
686 D3D_SVT_VOID = 0,
687 D3D_SVT_BOOL = 1,
688 D3D_SVT_INT = 2,
689 D3D_SVT_FLOAT = 3,
690 D3D_SVT_STRING = 4,
691 D3D_SVT_TEXTURE = 5,
692 D3D_SVT_TEXTURE1D = 6,
693 D3D_SVT_TEXTURE2D = 7,
694 D3D_SVT_TEXTURE3D = 8,
695 D3D_SVT_TEXTURECUBE = 9,
696 D3D_SVT_SAMPLER = 10,
697 D3D_SVT_SAMPLER1D = 11,
698 D3D_SVT_SAMPLER2D = 12,
699 D3D_SVT_SAMPLER3D = 13,
700 D3D_SVT_SAMPLERCUBE = 14,
701 D3D_SVT_PIXELSHADER = 15,
702 D3D_SVT_VERTEXSHADER = 16,
703 D3D_SVT_PIXELFRAGMENT = 17,
704 D3D_SVT_VERTEXFRAGMENT = 18,
705 D3D_SVT_UINT = 19,
706 D3D_SVT_UINT8 = 20,
707 D3D_SVT_GEOMETRYSHADER = 21,
708 D3D_SVT_RASTERIZER = 22,
709 D3D_SVT_DEPTHSTENCIL = 23,
710 D3D_SVT_BLEND = 24,
711 D3D_SVT_BUFFER = 25,
712 D3D_SVT_CBUFFER = 26,
713 D3D_SVT_TBUFFER = 27,
714 D3D_SVT_TEXTURE1DARRAY = 28,
715 D3D_SVT_TEXTURE2DARRAY = 29,
716 D3D_SVT_RENDERTARGETVIEW = 30,
717 D3D_SVT_DEPTHSTENCILVIEW = 31,
718 D3D_SVT_TEXTURE2DMS = 32,
719 D3D_SVT_TEXTURE2DMSARRAY = 33,
720 D3D_SVT_TEXTURECUBEARRAY = 34,
721 D3D_SVT_HULLSHADER = 35,
722 D3D_SVT_DOMAINSHADER = 36,
723 D3D_SVT_INTERFACE_POINTER = 37,
724 D3D_SVT_COMPUTESHADER = 38,
725 D3D_SVT_DOUBLE = 39,
726 D3D_SVT_RWTEXTURE1D = 40,
727 D3D_SVT_RWTEXTURE1DARRAY = 41,
728 D3D_SVT_RWTEXTURE2D = 42,
729 D3D_SVT_RWTEXTURE2DARRAY = 43,
730 D3D_SVT_RWTEXTURE3D = 44,
731 D3D_SVT_RWBUFFER = 45,
732 D3D_SVT_BYTEADDRESS_BUFFER = 46,
733 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
734 D3D_SVT_STRUCTURED_BUFFER = 48,
735 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
736 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
737 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
738 D3D_SVT_MIN8FLOAT = 52,
739 D3D_SVT_MIN10FLOAT = 53,
740 D3D_SVT_MIN16FLOAT = 54,
741 D3D_SVT_MIN12INT = 55,
742 D3D_SVT_MIN16INT = 56,
743 D3D_SVT_MIN16UINT = 57,
744 D3D_SVT_INT16 = 58,
745 D3D_SVT_UINT16 = 59,
746 D3D_SVT_FLOAT16 = 60,
747 D3D_SVT_INT64 = 61,
748 D3D_SVT_UINT64 = 62,
749 D3D10_SVT_VOID = D3D_SVT_VOID,
750 D3D10_SVT_BOOL = D3D_SVT_BOOL,
751 D3D10_SVT_INT = D3D_SVT_INT,
752 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
753 D3D10_SVT_STRING = D3D_SVT_STRING,
754 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
755 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
756 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
757 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
758 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
759 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
760 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
761 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
762 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
763 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
764 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
765 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
766 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
767 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
768 D3D10_SVT_UINT = D3D_SVT_UINT,
769 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
770 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
771 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
772 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
773 D3D10_SVT_BLEND = D3D_SVT_BLEND,
774 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
775 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
776 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
777 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
778 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
779 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
780 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
781 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
782 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
783 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
784 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
785 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
786 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
787 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
788 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
789 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
790 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
791 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
792 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
793 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
794 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
795 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
796 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
797 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
798 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
799 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
800 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
801 D3D_SVT_FORCE_DWORD = 0x7fffffff
802 } D3D_SHADER_VARIABLE_TYPE;
803
804typedef
805enum _D3D_SHADER_INPUT_FLAGS
806 {
807 D3D_SIF_USERPACKED = 0x1,
808 D3D_SIF_COMPARISON_SAMPLER = 0x2,
809 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
810 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
811 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
812 D3D_SIF_UNUSED = 0x10,
813 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
814 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
815 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
816 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
817 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
818 D3D_SIF_FORCE_DWORD = 0x7fffffff
819 } D3D_SHADER_INPUT_FLAGS;
820
821typedef
822enum _D3D_SHADER_INPUT_TYPE
823 {
824 D3D_SIT_CBUFFER = 0,
825 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
826 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
827 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
828 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
829 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
830 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
831 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
832 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
833 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
834 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
835 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
836 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
837 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
838 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
839 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
840 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
841 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
842 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
843 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
844 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
845 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
846 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
847 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
848 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
849 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
850 } D3D_SHADER_INPUT_TYPE;
851
852typedef
853enum _D3D_SHADER_CBUFFER_FLAGS
854 {
855 D3D_CBF_USERPACKED = 1,
856 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
857 D3D_CBF_FORCE_DWORD = 0x7fffffff
858 } D3D_SHADER_CBUFFER_FLAGS;
859
860typedef
861enum _D3D_CBUFFER_TYPE
862 {
863 D3D_CT_CBUFFER = 0,
864 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
865 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
866 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
867 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
868 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
869 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
870 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
871 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
872 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
873 } D3D_CBUFFER_TYPE;
874
875typedef
876enum D3D_NAME
877 {
878 D3D_NAME_UNDEFINED = 0,
879 D3D_NAME_POSITION = 1,
880 D3D_NAME_CLIP_DISTANCE = 2,
881 D3D_NAME_CULL_DISTANCE = 3,
882 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
883 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
884 D3D_NAME_VERTEX_ID = 6,
885 D3D_NAME_PRIMITIVE_ID = 7,
886 D3D_NAME_INSTANCE_ID = 8,
887 D3D_NAME_IS_FRONT_FACE = 9,
888 D3D_NAME_SAMPLE_INDEX = 10,
889 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
890 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
891 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
892 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
893 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
894 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
895 D3D_NAME_BARYCENTRICS = 23,
896 D3D_NAME_SHADINGRATE = 24,
897 D3D_NAME_CULLPRIMITIVE = 25,
898 D3D_NAME_TARGET = 64,
899 D3D_NAME_DEPTH = 65,
900 D3D_NAME_COVERAGE = 66,
901 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
902 D3D_NAME_DEPTH_LESS_EQUAL = 68,
903 D3D_NAME_STENCIL_REF = 69,
904 D3D_NAME_INNER_COVERAGE = 70,
905 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
906 D3D10_NAME_POSITION = D3D_NAME_POSITION,
907 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
908 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
909 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
910 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
911 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
912 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
913 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
914 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
915 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
916 D3D10_NAME_TARGET = D3D_NAME_TARGET,
917 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
918 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
919 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
920 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
921 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
922 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
923 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
924 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
925 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
926 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
927 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
928 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
929 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
930 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
931 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
932 } D3D_NAME;
933
934typedef
935enum D3D_RESOURCE_RETURN_TYPE
936 {
937 D3D_RETURN_TYPE_UNORM = 1,
938 D3D_RETURN_TYPE_SNORM = 2,
939 D3D_RETURN_TYPE_SINT = 3,
940 D3D_RETURN_TYPE_UINT = 4,
941 D3D_RETURN_TYPE_FLOAT = 5,
942 D3D_RETURN_TYPE_MIXED = 6,
943 D3D_RETURN_TYPE_DOUBLE = 7,
944 D3D_RETURN_TYPE_CONTINUED = 8,
945 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
946 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
947 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
948 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
949 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
950 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
951 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
952 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
953 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
954 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
955 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
956 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
957 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
958 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
959 } D3D_RESOURCE_RETURN_TYPE;
960
961typedef
962enum D3D_REGISTER_COMPONENT_TYPE
963 {
964 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
965 D3D_REGISTER_COMPONENT_UINT32 = 1,
966 D3D_REGISTER_COMPONENT_SINT32 = 2,
967 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
968 D3D_REGISTER_COMPONENT_UINT16 = 4,
969 D3D_REGISTER_COMPONENT_SINT16 = 5,
970 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
971 D3D_REGISTER_COMPONENT_UINT64 = 7,
972 D3D_REGISTER_COMPONENT_SINT64 = 8,
973 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
974 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
975 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
976 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
977 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
978 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
979 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
980 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
981 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
982 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
983 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
984 } D3D_REGISTER_COMPONENT_TYPE;
985
986typedef
987enum D3D_TESSELLATOR_DOMAIN
988 {
989 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
990 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
991 D3D_TESSELLATOR_DOMAIN_TRI = 2,
992 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
993 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
994 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
995 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
996 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
997 } D3D_TESSELLATOR_DOMAIN;
998
999typedef
1000enum D3D_TESSELLATOR_PARTITIONING
1001 {
1002 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1003 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
1004 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
1005 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1006 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
1007 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1008 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
1009 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
1010 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1011 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1012 } D3D_TESSELLATOR_PARTITIONING;
1013
1014typedef
1015enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1016 {
1017 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
1018 D3D_TESSELLATOR_OUTPUT_POINT = 1,
1019 D3D_TESSELLATOR_OUTPUT_LINE = 2,
1020 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
1021 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
1022 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1023 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
1024 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1025 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1026 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1027 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1028
1029typedef
1030enum D3D_MIN_PRECISION
1031 {
1032 D3D_MIN_PRECISION_DEFAULT = 0,
1033 D3D_MIN_PRECISION_FLOAT_16 = 1,
1034 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1035 D3D_MIN_PRECISION_RESERVED = 3,
1036 D3D_MIN_PRECISION_SINT_16 = 4,
1037 D3D_MIN_PRECISION_UINT_16 = 5,
1038 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1039 D3D_MIN_PRECISION_ANY_10 = 0xf1
1040 } D3D_MIN_PRECISION;
1041
1042typedef
1043enum D3D_INTERPOLATION_MODE
1044 {
1045 D3D_INTERPOLATION_UNDEFINED = 0,
1046 D3D_INTERPOLATION_CONSTANT = 1,
1047 D3D_INTERPOLATION_LINEAR = 2,
1048 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1049 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1050 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1051 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1052 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1053 } D3D_INTERPOLATION_MODE;
1054
1055typedef
1056enum _D3D_PARAMETER_FLAGS
1057 {
1058 D3D_PF_NONE = 0,
1059 D3D_PF_IN = 0x1,
1060 D3D_PF_OUT = 0x2,
1061 D3D_PF_FORCE_DWORD = 0x7fffffff
1062 } D3D_PARAMETER_FLAGS;
1063
1064typedef
1065enum D3D_FORMAT_LAYOUT
1066 {
1067 D3DFL_STANDARD = 0,
1068 D3DFL_CUSTOM = -1
1069 } D3D_FORMAT_LAYOUT;
1070
1071typedef
1072enum D3D_FORMAT_TYPE_LEVEL
1073 {
1074 D3DFTL_NO_TYPE = 0,
1075 D3DFTL_PARTIAL_TYPE = -2,
1076 D3DFTL_FULL_TYPE = -1
1077 } D3D_FORMAT_TYPE_LEVEL;
1078
1079typedef
1080enum D3D_FORMAT_COMPONENT_NAME
1081 {
1082 D3DFCN_R = -4,
1083 D3DFCN_G = -3,
1084 D3DFCN_B = -2,
1085 D3DFCN_A = -1,
1086 D3DFCN_D = 0,
1087 D3DFCN_S = 1,
1088 D3DFCN_X = 2
1089 } D3D_FORMAT_COMPONENT_NAME;
1090
1091typedef
1092enum D3D_FORMAT_COMPONENT_INTERPRETATION
1093 {
1094 D3DFCI_TYPELESS = 0,
1095 D3DFCI_FLOAT = -4,
1096 D3DFCI_SNORM = -3,
1097 D3DFCI_UNORM = -2,
1098 D3DFCI_SINT = -1,
1099 D3DFCI_UINT = 1,
1100 D3DFCI_UNORM_SRGB = 2,
1101 D3DFCI_BIASED_FIXED_2_8 = 3
1102 } D3D_FORMAT_COMPONENT_INTERPRETATION;
1103
1104DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1105DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1106DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1107DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1108#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1109#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1110#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1111#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1112#define D3D_COMPONENT_MASK_X 1
1113#define D3D_COMPONENT_MASK_Y 2
1114#define D3D_COMPONENT_MASK_Z 4
1115#define D3D_COMPONENT_MASK_W 8
1116DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1117DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1118
1119
1120extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1121extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1122
1123/* Additional Prototypes for ALL interfaces */
1124
1125/* end of Additional Prototypes */
1126
1127#ifdef __cplusplus
1128}
1129#endif
1130
1131#endif
1132
1133
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl
new file mode 100644
index 0000000..bfa375d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl
@@ -0,0 +1,991 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
29 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
30 D3D_FEATURE_LEVEL_9_1 = 0x9100,
31 D3D_FEATURE_LEVEL_9_2 = 0x9200,
32 D3D_FEATURE_LEVEL_9_3 = 0x9300,
33 D3D_FEATURE_LEVEL_10_0 = 0xa000,
34 D3D_FEATURE_LEVEL_10_1 = 0xa100,
35 D3D_FEATURE_LEVEL_11_0 = 0xb000,
36 D3D_FEATURE_LEVEL_11_1 = 0xb100,
37 D3D_FEATURE_LEVEL_12_0 = 0xc000,
38 D3D_FEATURE_LEVEL_12_1 = 0xc100,
39 D3D_FEATURE_LEVEL_12_2 = 0xc200
40} D3D_FEATURE_LEVEL;
41
42cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
43cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
44cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
45cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
46cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
47cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
48cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
49cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
50cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
51cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
52cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
53cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
54cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
55cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
56cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
57
58typedef enum D3D_PRIMITIVE_TOPOLOGY
59{
60 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
61 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
62 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
63 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
65 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
66 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
67 // Adjacency values should be equal to (0x8 & non-adjacency):
68 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
69 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
71 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
72 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
73 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
74 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
75 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
76 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
77 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
78 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
79 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
80 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
81 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
82 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
83 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
84 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
85 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
86 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
87 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
88 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
89 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
90 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
91 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
92 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
93 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
94 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
95 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
96 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
97 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
98 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
99 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
100 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
101 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
102 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
103 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
104
105 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
106 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
108 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
110 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
111 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
114 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
115
116 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
117 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
119 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
121 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
122 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
126 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
157 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
158} D3D_PRIMITIVE_TOPOLOGY;
159
160typedef enum D3D_PRIMITIVE
161{
162 D3D_PRIMITIVE_UNDEFINED = 0,
163 D3D_PRIMITIVE_POINT = 1,
164 D3D_PRIMITIVE_LINE = 2,
165 D3D_PRIMITIVE_TRIANGLE = 3,
166 // Adjacency values should be equal to (0x4 & non-adjacency):
167 D3D_PRIMITIVE_LINE_ADJ = 6,
168 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
169 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
170 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
171 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
172 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
173 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
174 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
175 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
176 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
177 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
178 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
179 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
180 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
181 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
182 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
183 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
184 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
185 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
186 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
187 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
188 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
189 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
190 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
191 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
192 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
193 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
194 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
195 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
196 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
197 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
198 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
199 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
200 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
201
202 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
203 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
204 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
205 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
206 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
207 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
208
209 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
210 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
211 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
212 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
213 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
214 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
215 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
246 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
247} D3D_PRIMITIVE;
248
249typedef enum D3D_SRV_DIMENSION
250{
251 D3D_SRV_DIMENSION_UNKNOWN = 0,
252 D3D_SRV_DIMENSION_BUFFER = 1,
253 D3D_SRV_DIMENSION_TEXTURE1D = 2,
254 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
255 D3D_SRV_DIMENSION_TEXTURE2D = 4,
256 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
257 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
258 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
259 D3D_SRV_DIMENSION_TEXTURE3D = 8,
260 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
261 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
262 D3D_SRV_DIMENSION_BUFFEREX = 11,
263
264 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
265 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
266 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
267 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
268 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
269 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
270 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
271 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
272 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
273 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
274
275 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
276 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
277 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
278 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
279 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
282 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
283 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
285 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
286
287 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
288 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
289 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
290 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
291 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
292 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
293 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
294 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
295 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
296 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
297 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
298 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
299} D3D_SRV_DIMENSION;
300
301// Bits in shaders indicating features they use which the runtime checks against current device support:
302cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
303cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
304cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
305cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
306cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
308cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
309cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
310cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
311cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
312cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
313cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
314cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
315cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
316cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
317cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
318cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
319cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
320cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
321cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
322cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
323cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
325cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
326cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
327cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
328cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
329cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
330cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
331cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000")
332cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000")
333cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000")
334cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull")
335
336// This section is for flags that do not directly indicate a required feature,
337// but are used to indicate something about the shader.
338
339// Flag for any derivative use. This allows call-graph validation
340// in the runtime to detect misuse of derivatives for an entry point that cannot
341// support it, or to determine when the flag
342// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
343cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull")
344
345cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull")
346
347
348// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
349// When adding entries here, make sure they don't conflict with what's there.
350
351//----------------------------------------------------------------------------
352//
353// Shader compilation information.
354//
355//----------------------------------------------------------------------------
356
357//----------------------------------------------------------------------------
358// D3D_SHADER_MACRO:
359// ----------
360// Preprocessor macro definition. The application pass in a NULL-terminated
361// array of this structure to various D3D APIs. This enables the application
362// to #define tokens at runtime, before the file is parsed.
363//----------------------------------------------------------------------------
364
365typedef struct _D3D_SHADER_MACRO
366{
367 LPCSTR Name;
368 LPCSTR Definition;
369} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
370
371//----------------------------------------------------------------------------
372// ID3DBlob:
373// ------------
374// The buffer object is used by D3D to return arbitrary size data.
375// For compatibility with D3D10 this interface is also called ID3D10Blob,
376// but the version-neutral form is preferred.
377//
378// GetBufferPointer -
379// Returns a pointer to the beginning of the buffer.
380//
381// GetBufferSize -
382// Returns the size of the buffer, in bytes.
383//----------------------------------------------------------------------------
384
385// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
386cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
387
388[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
389interface ID3D10Blob : IUnknown
390{
391 LPVOID GetBufferPointer();
392 SIZE_T GetBufferSize();
393};
394
395cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
396
397typedef ID3D10Blob ID3DBlob;
398cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
399cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
400
401// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
402typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
403
404[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
405interface ID3DDestructionNotifier
406 : IUnknown
407{
408 HRESULT RegisterDestructionCallback(
409 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
410 [annotation("_In_")] void* pData,
411 [annotation("_Out_")] UINT* pCallbackID
412 );
413 HRESULT UnregisterDestructionCallback(
414 [annotation("_In_")] UINT callbackID
415 );
416};
417
418typedef enum _D3D_INCLUDE_TYPE
419{
420 D3D_INCLUDE_LOCAL,
421 D3D_INCLUDE_SYSTEM,
422
423 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
424 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
425
426 // force 32-bit size enum
427 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
428} D3D_INCLUDE_TYPE;
429
430//----------------------------------------------------------------------------
431// ID3DInclude:
432// -------------
433// This interface is intended to be implemented by the application, and can
434// be used by various D3D APIs. This enables application-specific handling
435// of #include directives in source files.
436//
437// Open()
438// Opens an include file. If successful, it should fill in ppData and
439// pBytes. The data pointer returned must remain valid until Close is
440// subsequently called. The name of the file is encoded in UTF-8 format.
441// Close()
442// Closes an include file. If Open was successful, Close is guaranteed
443// to be called before the API using this interface returns.
444//----------------------------------------------------------------------------
445
446cpp_quote("typedef interface ID3DInclude ID3DInclude;")
447
448cpp_quote("#undef INTERFACE")
449cpp_quote("#define INTERFACE ID3DInclude")
450
451cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
452cpp_quote("{")
453cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
454cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
455cpp_quote("};")
456
457cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
458
459//----------------------------------------------------------------------------
460//
461// Shader reflection information.
462//
463//----------------------------------------------------------------------------
464
465typedef enum _D3D_SHADER_VARIABLE_CLASS
466{
467 D3D_SVC_SCALAR,
468 D3D_SVC_VECTOR,
469 D3D_SVC_MATRIX_ROWS,
470 D3D_SVC_MATRIX_COLUMNS,
471 D3D_SVC_OBJECT,
472 D3D_SVC_STRUCT,
473 D3D_SVC_INTERFACE_CLASS,
474 D3D_SVC_INTERFACE_POINTER,
475
476 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
477 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
478 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
479 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
480 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
481 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
482
483 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
484 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
485
486 // force 32-bit size enum
487 D3D_SVC_FORCE_DWORD = 0x7fffffff
488} D3D_SHADER_VARIABLE_CLASS;
489
490typedef enum _D3D_SHADER_VARIABLE_FLAGS
491{
492 D3D_SVF_USERPACKED = 1,
493 D3D_SVF_USED = 2,
494
495 D3D_SVF_INTERFACE_POINTER = 4,
496 D3D_SVF_INTERFACE_PARAMETER = 8,
497
498 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
499 D3D10_SVF_USED = D3D_SVF_USED,
500
501 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
502 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
503
504 // force 32-bit size enum
505 D3D_SVF_FORCE_DWORD = 0x7fffffff
506} D3D_SHADER_VARIABLE_FLAGS;
507
508typedef enum _D3D_SHADER_VARIABLE_TYPE
509{
510 D3D_SVT_VOID = 0,
511 D3D_SVT_BOOL = 1,
512 D3D_SVT_INT = 2,
513 D3D_SVT_FLOAT = 3,
514 D3D_SVT_STRING = 4,
515 D3D_SVT_TEXTURE = 5,
516 D3D_SVT_TEXTURE1D = 6,
517 D3D_SVT_TEXTURE2D = 7,
518 D3D_SVT_TEXTURE3D = 8,
519 D3D_SVT_TEXTURECUBE = 9,
520 D3D_SVT_SAMPLER = 10,
521 D3D_SVT_SAMPLER1D = 11,
522 D3D_SVT_SAMPLER2D = 12,
523 D3D_SVT_SAMPLER3D = 13,
524 D3D_SVT_SAMPLERCUBE = 14,
525 D3D_SVT_PIXELSHADER = 15,
526 D3D_SVT_VERTEXSHADER = 16,
527 D3D_SVT_PIXELFRAGMENT = 17,
528 D3D_SVT_VERTEXFRAGMENT = 18,
529 D3D_SVT_UINT = 19,
530 D3D_SVT_UINT8 = 20,
531 D3D_SVT_GEOMETRYSHADER = 21,
532 D3D_SVT_RASTERIZER = 22,
533 D3D_SVT_DEPTHSTENCIL = 23,
534 D3D_SVT_BLEND = 24,
535 D3D_SVT_BUFFER = 25,
536 D3D_SVT_CBUFFER = 26,
537 D3D_SVT_TBUFFER = 27,
538 D3D_SVT_TEXTURE1DARRAY = 28,
539 D3D_SVT_TEXTURE2DARRAY = 29,
540 D3D_SVT_RENDERTARGETVIEW = 30,
541 D3D_SVT_DEPTHSTENCILVIEW = 31,
542
543 D3D_SVT_TEXTURE2DMS = 32,
544 D3D_SVT_TEXTURE2DMSARRAY = 33,
545
546 D3D_SVT_TEXTURECUBEARRAY = 34,
547
548 D3D_SVT_HULLSHADER = 35,
549 D3D_SVT_DOMAINSHADER = 36,
550
551 D3D_SVT_INTERFACE_POINTER = 37,
552 D3D_SVT_COMPUTESHADER = 38,
553
554 D3D_SVT_DOUBLE = 39,
555
556 D3D_SVT_RWTEXTURE1D = 40,
557 D3D_SVT_RWTEXTURE1DARRAY = 41,
558 D3D_SVT_RWTEXTURE2D = 42,
559 D3D_SVT_RWTEXTURE2DARRAY = 43,
560 D3D_SVT_RWTEXTURE3D = 44,
561 D3D_SVT_RWBUFFER = 45,
562
563 D3D_SVT_BYTEADDRESS_BUFFER = 46,
564 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
565 D3D_SVT_STRUCTURED_BUFFER = 48,
566 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
567 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
568 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
569
570 D3D_SVT_MIN8FLOAT = 52,
571 D3D_SVT_MIN10FLOAT = 53,
572 D3D_SVT_MIN16FLOAT = 54,
573 D3D_SVT_MIN12INT = 55,
574 D3D_SVT_MIN16INT = 56,
575 D3D_SVT_MIN16UINT = 57,
576
577 D3D_SVT_INT16 = 58,
578 D3D_SVT_UINT16 = 59,
579 D3D_SVT_FLOAT16 = 60,
580 D3D_SVT_INT64 = 61,
581 D3D_SVT_UINT64 = 62,
582
583 D3D10_SVT_VOID = D3D_SVT_VOID,
584 D3D10_SVT_BOOL = D3D_SVT_BOOL,
585 D3D10_SVT_INT = D3D_SVT_INT,
586 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
587 D3D10_SVT_STRING = D3D_SVT_STRING,
588 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
589 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
590 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
591 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
592 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
593 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
594 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
595 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
596 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
597 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
598 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
599 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
600 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
601 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
602 D3D10_SVT_UINT = D3D_SVT_UINT,
603 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
604 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
605 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
606 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
607 D3D10_SVT_BLEND = D3D_SVT_BLEND,
608 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
609 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
610 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
611 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
612 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
613 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
614 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
615
616 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
617 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
618
619 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
620
621 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
622 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
623
624 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
625 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
626
627 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
628
629 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
630 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
631 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
632 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
633 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
634 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
635
636 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
637 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
638 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
639 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
640 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
641 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
642
643 // force 32-bit size enum
644 D3D_SVT_FORCE_DWORD = 0x7fffffff
645} D3D_SHADER_VARIABLE_TYPE;
646
647typedef enum _D3D_SHADER_INPUT_FLAGS
648{
649 D3D_SIF_USERPACKED = 0x01,
650 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
651 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
652 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
653 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
654 D3D_SIF_UNUSED = 0x10,
655
656 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
657 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
658 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
659 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
660 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
661
662 // force 32-bit size enum
663 D3D_SIF_FORCE_DWORD = 0x7fffffff
664} D3D_SHADER_INPUT_FLAGS;
665
666typedef enum _D3D_SHADER_INPUT_TYPE
667{
668 D3D_SIT_CBUFFER,
669 D3D_SIT_TBUFFER,
670 D3D_SIT_TEXTURE,
671 D3D_SIT_SAMPLER,
672 D3D_SIT_UAV_RWTYPED,
673 D3D_SIT_STRUCTURED,
674 D3D_SIT_UAV_RWSTRUCTURED,
675 D3D_SIT_BYTEADDRESS,
676 D3D_SIT_UAV_RWBYTEADDRESS,
677 D3D_SIT_UAV_APPEND_STRUCTURED,
678 D3D_SIT_UAV_CONSUME_STRUCTURED,
679 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
680 D3D_SIT_RTACCELERATIONSTRUCTURE,
681 D3D_SIT_UAV_FEEDBACKTEXTURE,
682
683 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
684 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
685 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
686 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
687
688 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
689 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
690 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
691 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
692 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
693 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
694 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
695 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
696} D3D_SHADER_INPUT_TYPE;
697
698typedef enum _D3D_SHADER_CBUFFER_FLAGS
699{
700 D3D_CBF_USERPACKED = 1,
701
702 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
703
704 // force 32-bit size enum
705 D3D_CBF_FORCE_DWORD = 0x7fffffff
706} D3D_SHADER_CBUFFER_FLAGS;
707
708typedef enum _D3D_CBUFFER_TYPE
709{
710 D3D_CT_CBUFFER,
711 D3D_CT_TBUFFER,
712 D3D_CT_INTERFACE_POINTERS,
713 D3D_CT_RESOURCE_BIND_INFO,
714
715 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
716 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
717
718 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
719 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
720 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
721 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
722} D3D_CBUFFER_TYPE;
723
724typedef enum D3D_NAME
725{
726 D3D_NAME_UNDEFINED = 0,
727
728 // Names meaningful to both HLSL and hardware
729 D3D_NAME_POSITION = 1,
730 D3D_NAME_CLIP_DISTANCE = 2,
731 D3D_NAME_CULL_DISTANCE = 3,
732 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
733 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
734 D3D_NAME_VERTEX_ID = 6,
735 D3D_NAME_PRIMITIVE_ID = 7,
736 D3D_NAME_INSTANCE_ID = 8,
737 D3D_NAME_IS_FRONT_FACE = 9,
738 D3D_NAME_SAMPLE_INDEX = 10,
739 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
740 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
741 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
742 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
743 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
744 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
745 D3D_NAME_BARYCENTRICS = 23,
746 D3D_NAME_SHADINGRATE = 24,
747 D3D_NAME_CULLPRIMITIVE = 25,
748
749 // Names meaningful to HLSL only
750 D3D_NAME_TARGET = 64,
751 D3D_NAME_DEPTH = 65,
752 D3D_NAME_COVERAGE = 66,
753 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
754 D3D_NAME_DEPTH_LESS_EQUAL = 68,
755 D3D_NAME_STENCIL_REF = 69,
756 D3D_NAME_INNER_COVERAGE = 70,
757
758 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
759 D3D10_NAME_POSITION = D3D_NAME_POSITION,
760 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
761 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
762 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
763 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
764 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
765 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
766 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
767 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
768 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
769 D3D10_NAME_TARGET = D3D_NAME_TARGET,
770 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
771 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
772
773 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
774 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
775 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
776 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
777 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
778 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
779 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
780 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
781
782 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
783 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
784
785 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
786 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
787 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
788} D3D_NAME;
789
790typedef enum D3D_RESOURCE_RETURN_TYPE
791{
792 D3D_RETURN_TYPE_UNORM = 1,
793 D3D_RETURN_TYPE_SNORM = 2,
794 D3D_RETURN_TYPE_SINT = 3,
795 D3D_RETURN_TYPE_UINT = 4,
796 D3D_RETURN_TYPE_FLOAT = 5,
797 D3D_RETURN_TYPE_MIXED = 6,
798 D3D_RETURN_TYPE_DOUBLE = 7,
799 D3D_RETURN_TYPE_CONTINUED = 8,
800
801 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
802 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
803 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
804 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
805 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
806 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
807
808 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
809 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
810 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
811 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
812 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
813 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
814 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
815 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
816} D3D_RESOURCE_RETURN_TYPE;
817
818typedef enum D3D_REGISTER_COMPONENT_TYPE
819{
820 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
821 D3D_REGISTER_COMPONENT_UINT32 = 1,
822 D3D_REGISTER_COMPONENT_SINT32 = 2,
823 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
824 D3D_REGISTER_COMPONENT_UINT16 = 4,
825 D3D_REGISTER_COMPONENT_SINT16 = 5,
826 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
827 D3D_REGISTER_COMPONENT_UINT64 = 7,
828 D3D_REGISTER_COMPONENT_SINT64 = 8,
829 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
830
831 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
832 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
833 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
834 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
835 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
836 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
837 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
838 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
839 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
840 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
841} D3D_REGISTER_COMPONENT_TYPE;
842
843typedef enum D3D_TESSELLATOR_DOMAIN
844{
845 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
846 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
847 D3D_TESSELLATOR_DOMAIN_TRI = 2,
848 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
849
850 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
851 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
852 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
853 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
854} D3D_TESSELLATOR_DOMAIN;
855
856typedef enum D3D_TESSELLATOR_PARTITIONING
857{
858 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
859 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
860 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
861 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
862 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
863
864 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
865 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
866 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
867 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
868 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
869} D3D_TESSELLATOR_PARTITIONING;
870
871typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
872{
873 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
874 D3D_TESSELLATOR_OUTPUT_POINT = 1,
875 D3D_TESSELLATOR_OUTPUT_LINE = 2,
876 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
877 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
878
879 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
880 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
881 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
882 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
883 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
884} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
885
886typedef enum D3D_MIN_PRECISION
887{
888 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
889 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
890 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
891 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
892 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
893 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
894
895 // These values are abstractions of width only for use in situations
896 // where a general width is needed instead of specific types. They
897 // will never be used in shader operands.
898 D3D_MIN_PRECISION_ANY_16 = 0xf0,
899 D3D_MIN_PRECISION_ANY_10 = 0xf1,
900} D3D_MIN_PRECISION;
901
902typedef enum D3D_INTERPOLATION_MODE
903{
904 D3D_INTERPOLATION_UNDEFINED = 0,
905 D3D_INTERPOLATION_CONSTANT = 1,
906 D3D_INTERPOLATION_LINEAR = 2,
907 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
908 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
909 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
910 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
911 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
912} D3D_INTERPOLATION_MODE;
913
914// Parameter flags.
915typedef enum _D3D_PARAMETER_FLAGS
916{
917 D3D_PF_NONE = 0x00000000,
918 D3D_PF_IN = 0x00000001,
919 D3D_PF_OUT = 0x00000002,
920 D3D_PF_FORCE_DWORD = 0x7fffffff
921} D3D_PARAMETER_FLAGS;
922
923// Format Layout Properties
924typedef enum D3D_FORMAT_LAYOUT
925{
926 D3DFL_STANDARD = 0, // standard layout
927 D3DFL_CUSTOM = -1 // custom layout
928 // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
929 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
930} D3D_FORMAT_LAYOUT;
931
932typedef enum D3D_FORMAT_TYPE_LEVEL
933{
934 D3DFTL_NO_TYPE = 0,
935 D3DFTL_PARTIAL_TYPE = -2,
936 D3DFTL_FULL_TYPE = -1,
937 // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
938 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
939} D3D_FORMAT_TYPE_LEVEL;
940
941typedef enum D3D_FORMAT_COMPONENT_NAME
942{
943 D3DFCN_R = -4,
944 D3DFCN_G = -3,
945 D3DFCN_B = -2,
946 D3DFCN_A = -1,
947 D3DFCN_D = 0,
948 D3DFCN_S = 1,
949 D3DFCN_X = 2,
950 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
951 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
952} D3D_FORMAT_COMPONENT_NAME;
953
954typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
955{
956 D3DFCI_TYPELESS = 0,
957 D3DFCI_FLOAT = -4,
958 D3DFCI_SNORM = -3,
959 D3DFCI_UNORM = -2,
960 D3DFCI_SINT = -1,
961 D3DFCI_UINT = 1,
962 D3DFCI_UNORM_SRGB = 2,
963 D3DFCI_BIASED_FIXED_2_8 = 3,
964 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
965 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
966} D3D_FORMAT_COMPONENT_INTERPRETATION;
967
968// Well-Known Private Data IDs (WKPDID_*):
969
970// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
971//
972// const char c_szName[] = "texture.jpg";
973// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
974cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
975cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
976cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
977cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
978
979cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
980cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
981cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
982cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
983
984cpp_quote("#define D3D_COMPONENT_MASK_X 1")
985cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
986cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
987cpp_quote("#define D3D_COMPONENT_MASK_W 8")
988
989cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
990cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
991
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h
new file mode 100644
index 0000000..671866a
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3dshadercacheregistration_h__
39#define __d3dshadercacheregistration_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
56#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
57typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
58
59#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
60
61
62#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
63#define __ID3DShaderCacheComponent_FWD_DEFINED__
64typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
65
66#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
67
68
69#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
70#define __ID3DShaderCacheApplication_FWD_DEFINED__
71typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
72
73#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
74
75
76#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
77#define __ID3DShaderCacheInstaller_FWD_DEFINED__
78typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
79
80#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
81
82
83#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
84#define __ID3DShaderCacheExplorer_FWD_DEFINED__
85typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
86
87#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
88
89
90#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
91#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
92typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
93
94#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "oaidl.h"
99#include "ocidl.h"
100
101#ifdef __cplusplus
102extern "C"{
103#endif
104
105
106/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
107/* [local] */
108
109#pragma once
110DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
111typedef
112enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
113 {
114 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
115 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
116 } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
117
118
119
120
121extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
122extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
123
124#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
125#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
126
127/* interface ID3DShaderCacheInstallerClient */
128/* [unique][local][object][uuid] */
129
130
131EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
132
133#if defined(__cplusplus) && !defined(CINTERFACE)
134
135 MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
136 ID3DShaderCacheInstallerClient
137 {
138 public:
139 BEGIN_INTERFACE
140 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
141 _Inout_ SIZE_T *pNameLength,
142 _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
143
144 virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
145
146 virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
147 _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
148
149 END_INTERFACE
150 };
151
152
153#else /* C style interface */
154
155 typedef struct ID3DShaderCacheInstallerClientVtbl
156 {
157 BEGIN_INTERFACE
158
159 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
160 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
161 ID3DShaderCacheInstallerClient * This,
162 _Inout_ SIZE_T *pNameLength,
163 _Out_writes_opt_(*pNameLength) wchar_t *pName);
164
165 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
166 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
167 ID3DShaderCacheInstallerClient * This);
168
169 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
170 HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
171 ID3DShaderCacheInstallerClient * This,
172 _In_ ID3DShaderCacheInstaller *pInstaller);
173
174 END_INTERFACE
175 } ID3DShaderCacheInstallerClientVtbl;
176
177 interface ID3DShaderCacheInstallerClient
178 {
179 CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
180 };
181
182
183
184#ifdef COBJMACROS
185
186
187#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
188 ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
189
190#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
191 ( (This)->lpVtbl -> GetInstallerScope(This) )
192
193#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
194 ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
195
196#endif /* COBJMACROS */
197
198
199#endif /* C style interface */
200
201
202
203
204#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
205
206
207/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
208/* [local] */
209
210typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
211 {
212 const wchar_t *pAdapterFamily;
213 const wchar_t *pPsdbPath;
214 } D3D_SHADER_CACHE_PSDB_PROPERTIES;
215
216
217
218extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
219extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
220
221#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
222#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
223
224/* interface ID3DShaderCacheComponent */
225/* [unique][local][object][uuid] */
226
227
228EXTERN_C const IID IID_ID3DShaderCacheComponent;
229
230#if defined(__cplusplus) && !defined(CINTERFACE)
231
232 MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
233 ID3DShaderCacheComponent : public IUnknown
234 {
235 public:
236 virtual HRESULT STDMETHODCALLTYPE GetComponentName(
237 _Out_ const wchar_t **pName) = 0;
238
239 virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
240 _Out_ const wchar_t **pPath) = 0;
241
242 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
243 _In_ const wchar_t *pAdapterFamily,
244 _Inout_ const wchar_t **pPath) = 0;
245
246 virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
247
248 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
249 UINT ArraySize,
250 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
251
252 };
253
254
255#else /* C style interface */
256
257 typedef struct ID3DShaderCacheComponentVtbl
258 {
259 BEGIN_INTERFACE
260
261 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
262 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
263 ID3DShaderCacheComponent * This,
264 REFIID riid,
265 _COM_Outptr_ void **ppvObject);
266
267 DECLSPEC_XFGVIRT(IUnknown, AddRef)
268 ULONG ( STDMETHODCALLTYPE *AddRef )(
269 ID3DShaderCacheComponent * This);
270
271 DECLSPEC_XFGVIRT(IUnknown, Release)
272 ULONG ( STDMETHODCALLTYPE *Release )(
273 ID3DShaderCacheComponent * This);
274
275 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
276 HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
277 ID3DShaderCacheComponent * This,
278 _Out_ const wchar_t **pName);
279
280 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
281 HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
282 ID3DShaderCacheComponent * This,
283 _Out_ const wchar_t **pPath);
284
285 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
286 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
287 ID3DShaderCacheComponent * This,
288 _In_ const wchar_t *pAdapterFamily,
289 _Inout_ const wchar_t **pPath);
290
291 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
292 UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
293 ID3DShaderCacheComponent * This);
294
295 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
296 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
297 ID3DShaderCacheComponent * This,
298 UINT ArraySize,
299 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
300
301 END_INTERFACE
302 } ID3DShaderCacheComponentVtbl;
303
304 interface ID3DShaderCacheComponent
305 {
306 CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
307 };
308
309
310
311#ifdef COBJMACROS
312
313
314#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
315 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
316
317#define ID3DShaderCacheComponent_AddRef(This) \
318 ( (This)->lpVtbl -> AddRef(This) )
319
320#define ID3DShaderCacheComponent_Release(This) \
321 ( (This)->lpVtbl -> Release(This) )
322
323
324#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
325 ( (This)->lpVtbl -> GetComponentName(This,pName) )
326
327#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
328 ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
329
330#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
331 ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
332
333#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
334 ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
335
336#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
337 ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
338
339#endif /* COBJMACROS */
340
341
342#endif /* C style interface */
343
344
345
346
347#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
348
349
350/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
351/* [local] */
352
353typedef
354enum D3D_SHADER_CACHE_TARGET_FLAGS
355 {
356 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
357 } D3D_SHADER_CACHE_TARGET_FLAGS;
358
359DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
360typedef union D3D_VERSION_NUMBER
361 {
362 UINT64 Version;
363 UINT16 VersionParts[ 4 ];
364 } D3D_VERSION_NUMBER;
365
366typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
367 {
368 wchar_t szAdapterFamily[ 128 ];
369 UINT64 MinimumABISupportVersion;
370 UINT64 MaximumABISupportVersion;
371 D3D_VERSION_NUMBER CompilerVersion;
372 D3D_VERSION_NUMBER ApplicationProfileVersion;
373 } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
374
375typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
376 {
377 const wchar_t *pExeFilename;
378 const wchar_t *pName;
379 D3D_VERSION_NUMBER Version;
380 const wchar_t *pEngineName;
381 D3D_VERSION_NUMBER EngineVersion;
382 } D3D_SHADER_CACHE_APPLICATION_DESC;
383
384
385
386extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
387extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
388
389#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
390#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
391
392/* interface ID3DShaderCacheApplication */
393/* [unique][local][object][uuid] */
394
395
396EXTERN_C const IID IID_ID3DShaderCacheApplication;
397
398#if defined(__cplusplus) && !defined(CINTERFACE)
399
400 MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
401 ID3DShaderCacheApplication : public IUnknown
402 {
403 public:
404 virtual HRESULT STDMETHODCALLTYPE GetExePath(
405 _Out_ const wchar_t **pExePath) = 0;
406
407 virtual HRESULT STDMETHODCALLTYPE GetDesc(
408 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
409
410 virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
411 _In_ const wchar_t *pName,
412 _In_ const wchar_t *pStateObjectDBPath,
413 _In_ UINT NumPSDB,
414 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
415 REFIID riid,
416 _COM_Outptr_ void **ppvComponent) = 0;
417
418 virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
419 _In_ ID3DShaderCacheComponent *pComponent) = 0;
420
421 virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
422
423 virtual HRESULT STDMETHODCALLTYPE GetComponent(
424 _In_ UINT index,
425 REFIID riid,
426 _COM_Outptr_ void **ppvComponent) = 0;
427
428 virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
429 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
430
431 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
432 _In_ UINT ArraySize,
433 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
434 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
435
436 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
437 _Out_ const wchar_t **pInstallerName) = 0;
438
439 };
440
441
442#else /* C style interface */
443
444 typedef struct ID3DShaderCacheApplicationVtbl
445 {
446 BEGIN_INTERFACE
447
448 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
449 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
450 ID3DShaderCacheApplication * This,
451 REFIID riid,
452 _COM_Outptr_ void **ppvObject);
453
454 DECLSPEC_XFGVIRT(IUnknown, AddRef)
455 ULONG ( STDMETHODCALLTYPE *AddRef )(
456 ID3DShaderCacheApplication * This);
457
458 DECLSPEC_XFGVIRT(IUnknown, Release)
459 ULONG ( STDMETHODCALLTYPE *Release )(
460 ID3DShaderCacheApplication * This);
461
462 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
463 HRESULT ( STDMETHODCALLTYPE *GetExePath )(
464 ID3DShaderCacheApplication * This,
465 _Out_ const wchar_t **pExePath);
466
467 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
468 HRESULT ( STDMETHODCALLTYPE *GetDesc )(
469 ID3DShaderCacheApplication * This,
470 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
471
472 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
473 HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
474 ID3DShaderCacheApplication * This,
475 _In_ const wchar_t *pName,
476 _In_ const wchar_t *pStateObjectDBPath,
477 _In_ UINT NumPSDB,
478 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
479 REFIID riid,
480 _COM_Outptr_ void **ppvComponent);
481
482 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
483 HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
484 ID3DShaderCacheApplication * This,
485 _In_ ID3DShaderCacheComponent *pComponent);
486
487 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
488 UINT ( STDMETHODCALLTYPE *GetComponentCount )(
489 ID3DShaderCacheApplication * This);
490
491 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
492 HRESULT ( STDMETHODCALLTYPE *GetComponent )(
493 ID3DShaderCacheApplication * This,
494 _In_ UINT index,
495 REFIID riid,
496 _COM_Outptr_ void **ppvComponent);
497
498 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
499 UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
500 ID3DShaderCacheApplication * This,
501 D3D_SHADER_CACHE_TARGET_FLAGS flags);
502
503 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
504 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
505 ID3DShaderCacheApplication * This,
506 _In_ UINT ArraySize,
507 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
508 D3D_SHADER_CACHE_TARGET_FLAGS flags);
509
510 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
511 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
512 ID3DShaderCacheApplication * This,
513 _Out_ const wchar_t **pInstallerName);
514
515 END_INTERFACE
516 } ID3DShaderCacheApplicationVtbl;
517
518 interface ID3DShaderCacheApplication
519 {
520 CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
521 };
522
523
524
525#ifdef COBJMACROS
526
527
528#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
529 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
530
531#define ID3DShaderCacheApplication_AddRef(This) \
532 ( (This)->lpVtbl -> AddRef(This) )
533
534#define ID3DShaderCacheApplication_Release(This) \
535 ( (This)->lpVtbl -> Release(This) )
536
537
538#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
539 ( (This)->lpVtbl -> GetExePath(This,pExePath) )
540
541#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
542 ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
543
544#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
545 ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
546
547#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
548 ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
549
550#define ID3DShaderCacheApplication_GetComponentCount(This) \
551 ( (This)->lpVtbl -> GetComponentCount(This) )
552
553#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
554 ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
555
556#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
557 ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
558
559#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
560 ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
561
562#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
563 ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
564
565#endif /* COBJMACROS */
566
567
568#endif /* C style interface */
569
570
571
572
573#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
574
575
576/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
577/* [local] */
578
579typedef struct SC_HANDLE__ *SC_HANDLE;
580
581
582
583extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
584extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
585
586#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
587#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
588
589/* interface ID3DShaderCacheInstaller */
590/* [unique][local][object][uuid] */
591
592
593EXTERN_C const IID IID_ID3DShaderCacheInstaller;
594
595#if defined(__cplusplus) && !defined(CINTERFACE)
596
597 MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
598 ID3DShaderCacheInstaller : public IUnknown
599 {
600 public:
601 virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
602
603 virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
604
605 virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
606 SC_HANDLE hServiceHandle) = 0;
607
608 virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
609 SC_HANDLE hServiceHandle) = 0;
610
611 virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
612 _In_ const wchar_t *pExePath,
613 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
614 REFIID riid,
615 _COM_Outptr_ void **ppvApp) = 0;
616
617 virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
618 _In_ ID3DShaderCacheApplication *pApplication) = 0;
619
620 virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
621
622 virtual HRESULT STDMETHODCALLTYPE GetApplication(
623 _In_ UINT index,
624 REFIID riid,
625 _COM_Outptr_ void **ppvApp) = 0;
626
627 virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
628
629 virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
630
631 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
632 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
633 _Inout_ UINT *pArraySize,
634 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
635 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
636
637 };
638
639
640#else /* C style interface */
641
642 typedef struct ID3DShaderCacheInstallerVtbl
643 {
644 BEGIN_INTERFACE
645
646 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
647 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
648 ID3DShaderCacheInstaller * This,
649 REFIID riid,
650 _COM_Outptr_ void **ppvObject);
651
652 DECLSPEC_XFGVIRT(IUnknown, AddRef)
653 ULONG ( STDMETHODCALLTYPE *AddRef )(
654 ID3DShaderCacheInstaller * This);
655
656 DECLSPEC_XFGVIRT(IUnknown, Release)
657 ULONG ( STDMETHODCALLTYPE *Release )(
658 ID3DShaderCacheInstaller * This);
659
660 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
661 HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
662 ID3DShaderCacheInstaller * This);
663
664 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
665 HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
666 ID3DShaderCacheInstaller * This);
667
668 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
669 HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
670 ID3DShaderCacheInstaller * This,
671 SC_HANDLE hServiceHandle);
672
673 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
674 HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
675 ID3DShaderCacheInstaller * This,
676 SC_HANDLE hServiceHandle);
677
678 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
679 HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
680 ID3DShaderCacheInstaller * This,
681 _In_ const wchar_t *pExePath,
682 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
683 REFIID riid,
684 _COM_Outptr_ void **ppvApp);
685
686 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
687 HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
688 ID3DShaderCacheInstaller * This,
689 _In_ ID3DShaderCacheApplication *pApplication);
690
691 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
692 UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
693 ID3DShaderCacheInstaller * This);
694
695 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
696 HRESULT ( STDMETHODCALLTYPE *GetApplication )(
697 ID3DShaderCacheInstaller * This,
698 _In_ UINT index,
699 REFIID riid,
700 _COM_Outptr_ void **ppvApp);
701
702 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
703 HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
704 ID3DShaderCacheInstaller * This);
705
706 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
707 UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
708 ID3DShaderCacheInstaller * This);
709
710 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
711 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
712 ID3DShaderCacheInstaller * This,
713 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
714 _Inout_ UINT *pArraySize,
715 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
716 D3D_SHADER_CACHE_TARGET_FLAGS flags);
717
718 END_INTERFACE
719 } ID3DShaderCacheInstallerVtbl;
720
721 interface ID3DShaderCacheInstaller
722 {
723 CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
724 };
725
726
727
728#ifdef COBJMACROS
729
730
731#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
732 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
733
734#define ID3DShaderCacheInstaller_AddRef(This) \
735 ( (This)->lpVtbl -> AddRef(This) )
736
737#define ID3DShaderCacheInstaller_Release(This) \
738 ( (This)->lpVtbl -> Release(This) )
739
740
741#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
742 ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
743
744#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
745 ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
746
747#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
748 ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
749
750#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
751 ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
752
753#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
754 ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
755
756#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
757 ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
758
759#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
760 ( (This)->lpVtbl -> GetApplicationCount(This) )
761
762#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
763 ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
764
765#define ID3DShaderCacheInstaller_ClearAllState(This) \
766 ( (This)->lpVtbl -> ClearAllState(This) )
767
768#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
769 ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
770
771#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
772 ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
773
774#endif /* COBJMACROS */
775
776
777#endif /* C style interface */
778
779
780
781
782#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
783
784
785#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
786#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
787
788/* interface ID3DShaderCacheExplorer */
789/* [unique][local][object][uuid] */
790
791
792EXTERN_C const IID IID_ID3DShaderCacheExplorer;
793
794#if defined(__cplusplus) && !defined(CINTERFACE)
795
796 MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
797 ID3DShaderCacheExplorer : public IUnknown
798 {
799 public:
800 virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
801 _In_ const wchar_t *pFullExePath,
802 REFIID riid,
803 _COM_Outptr_ void **ppvApp) = 0;
804
805 };
806
807
808#else /* C style interface */
809
810 typedef struct ID3DShaderCacheExplorerVtbl
811 {
812 BEGIN_INTERFACE
813
814 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
815 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
816 ID3DShaderCacheExplorer * This,
817 REFIID riid,
818 _COM_Outptr_ void **ppvObject);
819
820 DECLSPEC_XFGVIRT(IUnknown, AddRef)
821 ULONG ( STDMETHODCALLTYPE *AddRef )(
822 ID3DShaderCacheExplorer * This);
823
824 DECLSPEC_XFGVIRT(IUnknown, Release)
825 ULONG ( STDMETHODCALLTYPE *Release )(
826 ID3DShaderCacheExplorer * This);
827
828 DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
829 HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
830 ID3DShaderCacheExplorer * This,
831 _In_ const wchar_t *pFullExePath,
832 REFIID riid,
833 _COM_Outptr_ void **ppvApp);
834
835 END_INTERFACE
836 } ID3DShaderCacheExplorerVtbl;
837
838 interface ID3DShaderCacheExplorer
839 {
840 CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
841 };
842
843
844
845#ifdef COBJMACROS
846
847
848#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
850
851#define ID3DShaderCacheExplorer_AddRef(This) \
852 ( (This)->lpVtbl -> AddRef(This) )
853
854#define ID3DShaderCacheExplorer_Release(This) \
855 ( (This)->lpVtbl -> Release(This) )
856
857
858#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
859 ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
860
861#endif /* COBJMACROS */
862
863
864#endif /* C style interface */
865
866
867
868
869#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
870
871
872#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
873#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
874
875/* interface ID3DShaderCacheInstallerFactory */
876/* [unique][local][object][uuid] */
877
878
879EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
880
881#if defined(__cplusplus) && !defined(CINTERFACE)
882
883 MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
884 ID3DShaderCacheInstallerFactory : public IUnknown
885 {
886 public:
887 virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
888 _In_ ID3DShaderCacheInstallerClient *pClient,
889 REFIID riid,
890 _COM_Outptr_ void **ppvInstaller) = 0;
891
892 virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
893 IUnknown *pUnknown,
894 REFIID riid,
895 _COM_Outptr_ void **ppvExplorer) = 0;
896
897 };
898
899
900#else /* C style interface */
901
902 typedef struct ID3DShaderCacheInstallerFactoryVtbl
903 {
904 BEGIN_INTERFACE
905
906 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
907 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
908 ID3DShaderCacheInstallerFactory * This,
909 REFIID riid,
910 _COM_Outptr_ void **ppvObject);
911
912 DECLSPEC_XFGVIRT(IUnknown, AddRef)
913 ULONG ( STDMETHODCALLTYPE *AddRef )(
914 ID3DShaderCacheInstallerFactory * This);
915
916 DECLSPEC_XFGVIRT(IUnknown, Release)
917 ULONG ( STDMETHODCALLTYPE *Release )(
918 ID3DShaderCacheInstallerFactory * This);
919
920 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
921 HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
922 ID3DShaderCacheInstallerFactory * This,
923 _In_ ID3DShaderCacheInstallerClient *pClient,
924 REFIID riid,
925 _COM_Outptr_ void **ppvInstaller);
926
927 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
928 HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
929 ID3DShaderCacheInstallerFactory * This,
930 IUnknown *pUnknown,
931 REFIID riid,
932 _COM_Outptr_ void **ppvExplorer);
933
934 END_INTERFACE
935 } ID3DShaderCacheInstallerFactoryVtbl;
936
937 interface ID3DShaderCacheInstallerFactory
938 {
939 CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
940 };
941
942
943
944#ifdef COBJMACROS
945
946
947#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
948 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
949
950#define ID3DShaderCacheInstallerFactory_AddRef(This) \
951 ( (This)->lpVtbl -> AddRef(This) )
952
953#define ID3DShaderCacheInstallerFactory_Release(This) \
954 ( (This)->lpVtbl -> Release(This) )
955
956
957#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
958 ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
959
960#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
961 ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
962
963#endif /* COBJMACROS */
964
965
966#endif /* C style interface */
967
968
969
970
971#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
972
973
974/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
975/* [local] */
976
977DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
978DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
979DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
980DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
981DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
982DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
983
984
985extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
986extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
987
988/* Additional Prototypes for ALL interfaces */
989
990/* end of Additional Prototypes */
991
992#ifdef __cplusplus
993}
994#endif
995
996#endif
997
998
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl
new file mode 100644
index 0000000..7dcc53d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl
@@ -0,0 +1,195 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7#pragma once
8import "oaidl.idl";
9import "ocidl.idl";
10
11cpp_quote("DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);")
12
13typedef enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
14{
15 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER,
16 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM
17} D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
18
19interface ID3DShaderCacheInstaller;
20
21// This interface is implemented by the game installer
22[uuid(a16ee930-d9f6-4222-a514-244473e5d266), object, local, pointer_default(unique)]
23interface ID3DShaderCacheInstallerClient
24{
25 HRESULT GetInstallerName(
26 [annotation("_Inout_")] SIZE_T* pNameLength,
27 [annotation("_Out_writes_opt_(*pNameLength)")] wchar_t* pName);
28
29 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE GetInstallerScope();
30
31 HRESULT HandleDriverUpdate(
32 [annotation("_In_")] ID3DShaderCacheInstaller* pInstaller);
33};
34
35typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
36{
37 const wchar_t* pAdapterFamily;
38 const wchar_t* pPsdbPath;
39} D3D_SHADER_CACHE_PSDB_PROPERTIES;
40
41[uuid(eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828), object, local, pointer_default(unique)]
42interface ID3DShaderCacheComponent : IUnknown
43{
44 HRESULT GetComponentName(
45 [annotation("_Out_")] const wchar_t** pName);
46
47 HRESULT GetStateObjectDatabasePath(
48 [annotation("_Out_")] const wchar_t** pPath);
49
50 HRESULT GetPrecompiledCachePath(
51 [annotation("_In_")] const wchar_t* pAdapterFamily,
52 [annotation("_Inout_")] const wchar_t** pPath);
53
54 UINT GetPrecompiledShaderDatabaseCount();
55
56 HRESULT GetPrecompiledShaderDatabases(
57 UINT ArraySize,
58 [annotation("_Out_writes_(ArraySize)")] D3D_SHADER_CACHE_PSDB_PROPERTIES * pPSDBs);
59};
60
61typedef enum D3D_SHADER_CACHE_TARGET_FLAGS
62{
63 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0,
64}D3D_SHADER_CACHE_TARGET_FLAGS;
65cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )")
66
67typedef union D3D_VERSION_NUMBER
68{
69 UINT64 Version;
70 UINT16 VersionParts[4];
71} D3D_VERSION_NUMBER;
72
73typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
74{
75 wchar_t szAdapterFamily[128];
76 UINT64 MinimumABISupportVersion;
77 UINT64 MaximumABISupportVersion;
78 D3D_VERSION_NUMBER CompilerVersion;
79 D3D_VERSION_NUMBER ApplicationProfileVersion;
80} D3D_SHADER_CACHE_COMPILER_PROPERTIES;
81
82typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
83{
84 const wchar_t* pExeFilename;
85 const wchar_t* pName;
86 D3D_VERSION_NUMBER Version;
87 const wchar_t* pEngineName;
88 D3D_VERSION_NUMBER EngineVersion;
89} D3D_SHADER_CACHE_APPLICATION_DESC;
90
91[uuid(fc688ee2-1b35-4913-93be-1ca3fa7df39e), object, local, pointer_default(unique)]
92interface ID3DShaderCacheApplication : IUnknown
93{
94 HRESULT GetExePath(
95 [annotation("_Out_")] const wchar_t** pExePath);
96
97 HRESULT GetDesc(
98 [annotation("_Out_")] D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc);
99
100 HRESULT RegisterComponent(
101 [annotation("_In_")] const wchar_t* pName,
102 [annotation("_In_")] const wchar_t* pStateObjectDBPath,
103 [annotation("_In_")] UINT NumPSDB,
104 [annotation("_In_reads_(NumPSDB)")] const D3D_SHADER_CACHE_PSDB_PROPERTIES* pPSDBs,
105 [in] REFIID riid,
106 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
107
108 HRESULT RemoveComponent(
109 [annotation("_In_")] ID3DShaderCacheComponent* pComponent);
110
111 UINT GetComponentCount();
112
113 HRESULT GetComponent(
114 [annotation("_In_")] UINT index,
115 [in] REFIID riid,
116 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
117
118 UINT GetPrecompileTargetCount(D3D_SHADER_CACHE_TARGET_FLAGS flags);
119
120 HRESULT GetPrecompileTargets(
121 [annotation("_In_")] UINT ArraySize,
122 [annotation("_In_reads_(ArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
123 D3D_SHADER_CACHE_TARGET_FLAGS flags);
124
125 HRESULT GetInstallerName(
126 [annotation("_Out_")] const wchar_t** pInstallerName);
127};
128
129typedef struct SC_HANDLE__ *SC_HANDLE;
130[uuid(bbe30de1-6318-4526-ae17-776693191bb4), object, local, pointer_default(unique)]
131interface ID3DShaderCacheInstaller : IUnknown
132{
133 HRESULT RegisterDriverUpdateListener();
134 HRESULT UnregisterDriverUpdateListener();
135
136 HRESULT RegisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
137 HRESULT UnregisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
138
139 HRESULT RegisterApplication(
140 [annotation("_In_")] const wchar_t* pExePath,
141 [annotation("_In_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
142 [in] REFIID riid,
143 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
144
145 HRESULT RemoveApplication(
146 [annotation("_In_")] ID3DShaderCacheApplication* pApplication); // Expected: ID3DShaderCacheApplication
147
148 UINT GetApplicationCount();
149
150 HRESULT GetApplication(
151 [annotation("_In_")] UINT index,
152 [in] REFIID riid,
153 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
154
155 HRESULT ClearAllState();
156
157 UINT GetMaxPrecompileTargetCount();
158
159 HRESULT GetPrecompileTargets(
160 [annotation("_In_opt_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
161 [annotation("_Inout_")] UINT* pArraySize,
162 [annotation("_Out_writes_(*pArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
163 D3D_SHADER_CACHE_TARGET_FLAGS flags);
164};
165
166[uuid(90432322-32f5-487f-9264-e9390fa58b2a), object, local, pointer_default(unique)]
167interface ID3DShaderCacheExplorer : IUnknown
168{
169 HRESULT GetApplicationFromExePath(
170 [annotation("_In_")] const wchar_t* pFullExePath,
171 [in] REFIID riid,
172 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
173};
174
175[uuid(09b2dfe4-840f-401a-804c-0dd8aadc9e9f), object, local, pointer_default(unique)]
176interface ID3DShaderCacheInstallerFactory : IUnknown
177{
178 HRESULT CreateInstaller(
179 [annotation("_In_")] ID3DShaderCacheInstallerClient* pClient,
180 [in] REFIID riid,
181 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvInstaller);
182
183 HRESULT CreateExplorer(
184 [in] IUnknown* pUnknown, // Expected: ID3D12Device, IDXCoreAdapter, IDXGIAdapter
185 [in] REFIID riid,
186 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvExplorer); // Expected: ID3DShaderCacheExplorer
187};
188
189
190cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);" )
191cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);" )
192cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);" )
193cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);" )
194cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);" )
195cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h
new file mode 100644
index 0000000..e8ec24e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h
@@ -0,0 +1,36 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15#include "d3dx12_barriers.h"
16#include "d3dx12_core.h"
17#include "d3dx12_default.h"
18#include "d3dx12_pipeline_state_stream.h"
19#include "d3dx12_render_pass.h"
20#include "d3dx12_resource_helpers.h"
21#include "d3dx12_root_signature.h"
22#include "d3dx12_property_format_table.h"
23
24#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
25#include "d3dx12_state_object.h"
26#endif // !D3DX12_NO_STATE_OBJECT_HELPERS
27
28#ifndef D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
29#include "d3dx12_check_feature_support.h"
30#endif // !D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
31
32#endif // defined( __cplusplus )
33
34#endif //__D3DX12_H__
35
36
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h
new file mode 100644
index 0000000..1bd7a74
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h
@@ -0,0 +1,193 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_BARRIERS_H__
9#define __D3DX12_BARRIERS_H__
10
11#if defined( __cplusplus )
12
13#include "d3d12.h"
14
15//------------------------------------------------------------------------------------------------
16struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
17{
18 CD3DX12_RESOURCE_BARRIER() = default;
19 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
20 D3D12_RESOURCE_BARRIER(o)
21 {}
22 static inline CD3DX12_RESOURCE_BARRIER Transition(
23 _In_ ID3D12Resource* pResource,
24 D3D12_RESOURCE_STATES stateBefore,
25 D3D12_RESOURCE_STATES stateAfter,
26 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
27 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
28 {
29 CD3DX12_RESOURCE_BARRIER result = {};
30 D3D12_RESOURCE_BARRIER &barrier = result;
31 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
32 result.Flags = flags;
33 barrier.Transition.pResource = pResource;
34 barrier.Transition.StateBefore = stateBefore;
35 barrier.Transition.StateAfter = stateAfter;
36 barrier.Transition.Subresource = subresource;
37 return result;
38 }
39 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
40 _In_opt_ ID3D12Resource* pResourceBefore,
41 _In_opt_ ID3D12Resource* pResourceAfter) noexcept
42 {
43 CD3DX12_RESOURCE_BARRIER result = {};
44 D3D12_RESOURCE_BARRIER &barrier = result;
45 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
46 barrier.Aliasing.pResourceBefore = pResourceBefore;
47 barrier.Aliasing.pResourceAfter = pResourceAfter;
48 return result;
49 }
50 static inline CD3DX12_RESOURCE_BARRIER UAV(
51 _In_opt_ ID3D12Resource* pResource) noexcept
52 {
53 CD3DX12_RESOURCE_BARRIER result = {};
54 D3D12_RESOURCE_BARRIER &barrier = result;
55 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
56 barrier.UAV.pResource = pResource;
57 return result;
58 }
59};
60
61#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
62
63//================================================================================================
64// D3DX12 Enhanced Barrier Helpers
65//================================================================================================
66
67class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
68{
69public:
70 CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
71 CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
72 D3D12_BARRIER_SUBRESOURCE_RANGE(o)
73 {}
74 explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
75 D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
76 {}
77 CD3DX12_BARRIER_SUBRESOURCE_RANGE(
78 UINT firstMipLevel,
79 UINT numMips,
80 UINT firstArraySlice,
81 UINT numArraySlices,
82 UINT firstPlane = 0,
83 UINT numPlanes = 1) noexcept :
84 D3D12_BARRIER_SUBRESOURCE_RANGE
85 {
86 firstMipLevel,
87 numMips,
88 firstArraySlice,
89 numArraySlices,
90 firstPlane,
91 numPlanes
92 }
93 {}
94};
95
96class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
97{
98public:
99 CD3DX12_GLOBAL_BARRIER() = default;
100 CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
101 CD3DX12_GLOBAL_BARRIER(
102 D3D12_BARRIER_SYNC syncBefore,
103 D3D12_BARRIER_SYNC syncAfter,
104 D3D12_BARRIER_ACCESS accessBefore,
105 D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
106 syncBefore,
107 syncAfter,
108 accessBefore,
109 accessAfter
110 }
111 {}
112};
113
114class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
115{
116public:
117 CD3DX12_BUFFER_BARRIER() = default;
118 CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
119 CD3DX12_BUFFER_BARRIER(
120 D3D12_BARRIER_SYNC syncBefore,
121 D3D12_BARRIER_SYNC syncAfter,
122 D3D12_BARRIER_ACCESS accessBefore,
123 D3D12_BARRIER_ACCESS accessAfter,
124 ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
125 syncBefore,
126 syncAfter,
127 accessBefore,
128 accessAfter,
129 pRes,
130 0, ULLONG_MAX
131 }
132 {}
133};
134
135class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
136{
137public:
138 CD3DX12_TEXTURE_BARRIER() = default;
139 CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
140 CD3DX12_TEXTURE_BARRIER(
141 D3D12_BARRIER_SYNC syncBefore,
142 D3D12_BARRIER_SYNC syncAfter,
143 D3D12_BARRIER_ACCESS accessBefore,
144 D3D12_BARRIER_ACCESS accessAfter,
145 D3D12_BARRIER_LAYOUT layoutBefore,
146 D3D12_BARRIER_LAYOUT layoutAfter,
147 ID3D12Resource *pRes,
148 const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
149 D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
150 syncBefore,
151 syncAfter,
152 accessBefore,
153 accessAfter,
154 layoutBefore,
155 layoutAfter,
156 pRes,
157 subresources,
158 flag
159 }
160 {}
161};
162
163class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
164{
165public:
166 CD3DX12_BARRIER_GROUP() = default;
167 CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
168 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
169 {
170 Type = D3D12_BARRIER_TYPE_BUFFER;
171 NumBarriers = numBarriers;
172 pBufferBarriers = pBarriers;
173 }
174 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
175 {
176 Type = D3D12_BARRIER_TYPE_TEXTURE;
177 NumBarriers = numBarriers;
178 pTextureBarriers = pBarriers;
179 }
180 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
181 {
182 Type = D3D12_BARRIER_TYPE_GLOBAL;
183 NumBarriers = numBarriers;
184 pGlobalBarriers = pBarriers;
185 }
186};
187#endif // D3D12_SDK_VERSION >= 608
188
189
190#endif // defined( __cplusplus )
191
192#endif // __D3DX12_BARRIERS_H__
193
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h
new file mode 100644
index 0000000..725fb7f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h
@@ -0,0 +1,1162 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15
16//================================================================================================
17// D3DX12 Check Feature Support
18//================================================================================================
19
20#include <vector>
21
22class CD3DX12FeatureSupport
23{
24public: // Function declaration
25 // Default constructor that creates an empty object
26 CD3DX12FeatureSupport() noexcept;
27
28 // Initialize data from the given device
29 HRESULT Init(ID3D12Device* pDevice);
30
31 // Retreives the status of the object. If an error occurred in the initialization process, the function returns the error code.
32 HRESULT GetStatus() const noexcept { return m_hStatus; }
33
34 // Getter functions for each feature class
35 // D3D12_OPTIONS
36 BOOL DoublePrecisionFloatShaderOps() const noexcept;
37 BOOL OutputMergerLogicOp() const noexcept;
38 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport() const noexcept;
39 D3D12_TILED_RESOURCES_TIER TiledResourcesTier() const noexcept;
40 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier() const noexcept;
41 BOOL PSSpecifiedStencilRefSupported() const noexcept;
42 BOOL TypedUAVLoadAdditionalFormats() const noexcept;
43 BOOL ROVsSupported() const noexcept;
44 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier() const noexcept;
45 BOOL StandardSwizzle64KBSupported() const noexcept;
46 BOOL CrossAdapterRowMajorTextureSupported() const noexcept;
47 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation() const noexcept;
48 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier() const noexcept;
49 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier() const noexcept;
50 UINT MaxGPUVirtualAddressBitsPerResource() const noexcept;
51
52 // FEATURE_LEVELS
53 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel() const noexcept;
54
55 // FORMAT_SUPPORT
56 HRESULT FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const;
57
58 // MUTLTISAMPLE_QUALITY_LEVELS
59 HRESULT MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const;
60
61 // FORMAT_INFO
62 HRESULT FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const;
63
64 // GPU_VIRTUAL_ADDRESS_SUPPORT
65 UINT MaxGPUVirtualAddressBitsPerProcess() const noexcept;
66
67 // SHADER_MODEL
68 D3D_SHADER_MODEL HighestShaderModel() const noexcept;
69
70 // D3D12_OPTIONS1
71 BOOL WaveOps() const noexcept;
72 UINT WaveLaneCountMin() const noexcept;
73 UINT WaveLaneCountMax() const noexcept;
74 UINT TotalLaneCount() const noexcept;
75 BOOL ExpandedComputeResourceStates() const noexcept;
76 BOOL Int64ShaderOps() const noexcept;
77
78 // PROTECTED_RESOURCE_SESSION_SUPPORT
79 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport(UINT NodeIndex = 0) const;
80
81 // ROOT_SIGNATURE
82 D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion() const noexcept;
83
84 // ARCHITECTURE1
85 BOOL TileBasedRenderer(UINT NodeIndex = 0) const;
86 BOOL UMA(UINT NodeIndex = 0) const;
87 BOOL CacheCoherentUMA(UINT NodeIndex = 0) const;
88 BOOL IsolatedMMU(UINT NodeIndex = 0) const;
89
90 // D3D12_OPTIONS2
91 BOOL DepthBoundsTestSupported() const noexcept;
92 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier() const noexcept;
93
94 // SHADER_CACHE
95 D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags() const noexcept;
96
97 // COMMAND_QUEUE_PRIORITY
98 BOOL CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority);
99
100 // D3D12_OPTIONS3
101 BOOL CopyQueueTimestampQueriesSupported() const noexcept;
102 BOOL CastingFullyTypedFormatSupported() const noexcept;
103 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags() const noexcept;
104 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier() const noexcept;
105 BOOL BarycentricsSupported() const noexcept;
106
107 // EXISTING_HEAPS
108 BOOL ExistingHeapsSupported() const noexcept;
109
110 // D3D12_OPTIONS4
111 BOOL MSAA64KBAlignedTextureSupported() const noexcept;
112 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier() const noexcept;
113 BOOL Native16BitShaderOpsSupported() const noexcept;
114
115 // SERIALIZATION
116 D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier(UINT NodeIndex = 0) const;
117
118 // CROSS_NODE
119 // CrossNodeSharingTier handled in D3D12Options
120 BOOL CrossNodeAtomicShaderInstructions() const noexcept;
121
122 // D3D12_OPTIONS5
123 BOOL SRVOnlyTiledResourceTier3() const noexcept;
124 D3D12_RENDER_PASS_TIER RenderPassesTier() const noexcept;
125 D3D12_RAYTRACING_TIER RaytracingTier() const noexcept;
126
127#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
128 // DISPLAYABLE
129 BOOL DisplayableTexture() const noexcept;
130 // SharedResourceCompatibilityTier handled in D3D12Options4
131#endif
132
133 // D3D12_OPTIONS6
134 BOOL AdditionalShadingRatesSupported() const noexcept;
135 BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing() const noexcept;
136 D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier() const noexcept;
137 UINT ShadingRateImageTileSize() const noexcept;
138 BOOL BackgroundProcessingSupported() const noexcept;
139
140 // QUERY_META_COMMAND
141 HRESULT QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const;
142
143 // D3D12_OPTIONS7
144 D3D12_MESH_SHADER_TIER MeshShaderTier() const noexcept;
145 D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier() const noexcept;
146
147 // PROTECTED_RESOURCE_SESSION_TYPE_COUNT
148 UINT ProtectedResourceSessionTypeCount(UINT NodeIndex = 0) const;
149
150 // PROTECTED_RESOURCE_SESSION_TYPES
151 std::vector<GUID> ProtectedResourceSessionTypes(UINT NodeIndex = 0) const;
152
153#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
154 // D3D12_OPTIONS8
155 BOOL UnalignedBlockTexturesSupported() const noexcept;
156
157 // D3D12_OPTIONS9
158 BOOL MeshShaderPipelineStatsSupported() const noexcept;
159 BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex() const noexcept;
160 BOOL AtomicInt64OnTypedResourceSupported() const noexcept;
161 BOOL AtomicInt64OnGroupSharedSupported() const noexcept;
162 BOOL DerivativesInMeshAndAmplificationShadersSupported() const noexcept;
163 D3D12_WAVE_MMA_TIER WaveMMATier() const noexcept;
164#endif
165
166#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
167 // D3D12_OPTIONS10
168 BOOL VariableRateShadingSumCombinerSupported() const noexcept;
169 BOOL MeshShaderPerPrimitiveShadingRateSupported() const noexcept;
170
171 // D3D12_OPTIONS11
172 BOOL AtomicInt64OnDescriptorHeapResourceSupported() const noexcept;
173#endif
174
175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
176 // D3D12_OPTIONS12
177 D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives() const noexcept;
178 BOOL EnhancedBarriersSupported() const noexcept;
179 BOOL RelaxedFormatCastingSupported() const noexcept;
180#endif
181
182#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
183 // D3D12_OPTIONS13
184 BOOL UnrestrictedBufferTextureCopyPitchSupported() const noexcept;
185 BOOL UnrestrictedVertexElementAlignmentSupported() const noexcept;
186 BOOL InvertedViewportHeightFlipsYSupported() const noexcept;
187 BOOL InvertedViewportDepthFlipsZSupported() const noexcept;
188 BOOL TextureCopyBetweenDimensionsSupported() const noexcept;
189 BOOL AlphaBlendFactorSupported() const noexcept;
190#endif
191
192#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
193 // D3D12_OPTIONS14
194 BOOL AdvancedTextureOpsSupported() const noexcept;
195 BOOL WriteableMSAATexturesSupported() const noexcept;
196 BOOL IndependentFrontAndBackStencilRefMaskSupported() const noexcept;
197
198 // D3D12_OPTIONS15
199 BOOL TriangleFanSupported() const noexcept;
200 BOOL DynamicIndexBufferStripCutSupported() const noexcept;
201#endif
202
203#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
204 // D3D12_OPTIONS16
205 BOOL DynamicDepthBiasSupported() const noexcept;
206#endif
207#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
208 BOOL GPUUploadHeapSupported() const noexcept;
209
210 // D3D12_OPTIONS17
211 BOOL NonNormalizedCoordinateSamplersSupported() const noexcept;
212 BOOL ManualWriteTrackingResourceSupported() const noexcept;
213
214 // D3D12_OPTIONS18
215 BOOL RenderPassesValid() const noexcept;
216#endif
217
218#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
219 BOOL MismatchingOutputDimensionsSupported() const noexcept;
220 UINT SupportedSampleCountsWithNoOutputs() const noexcept;
221 BOOL PointSamplingAddressesNeverRoundUp() const noexcept;
222 BOOL RasterizerDesc2Supported() const noexcept;
223 BOOL NarrowQuadrilateralLinesSupported() const noexcept;
224 BOOL AnisoFilterWithPointMipSupported() const noexcept;
225 UINT MaxSamplerDescriptorHeapSize() const noexcept;
226 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers() const noexcept;
227 UINT MaxViewDescriptorHeapSize() const noexcept;
228#endif
229
230#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
231 BOOL ComputeOnlyWriteWatchSupported() const noexcept;
232#endif
233
234#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
235 D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
236 D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
237#endif
238
239#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
240 D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
241#endif
242
243private: // Private structs and helpers declaration
244 struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
245 {
246 std::vector<GUID> TypeVec;
247 };
248
249 // Helper function to decide the highest shader model supported by the system
250 // Stores the result in m_dShaderModel
251 // Must be updated whenever a new shader model is added to the d3d12.h header
252 HRESULT QueryHighestShaderModel();
253
254 // Helper function to decide the highest root signature supported
255 // Must be updated whenever a new root signature version is added to the d3d12.h header
256 HRESULT QueryHighestRootSignatureVersion();
257
258 // Helper funcion to decide the highest feature level
259 HRESULT QueryHighestFeatureLevel();
260
261 // Helper function to initialize local protected resource session types structs
262 HRESULT QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count);
263
264private: // Member data
265 // Pointer to the underlying device
266 ID3D12Device* m_pDevice;
267
268 // Stores the error code from initialization
269 HRESULT m_hStatus;
270
271 // Feature support data structs
272 D3D12_FEATURE_DATA_D3D12_OPTIONS m_dOptions;
273 D3D_FEATURE_LEVEL m_eMaxFeatureLevel;
274 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT m_dGPUVASupport;
275 D3D12_FEATURE_DATA_SHADER_MODEL m_dShaderModel;
276 D3D12_FEATURE_DATA_D3D12_OPTIONS1 m_dOptions1;
277 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT> m_dProtectedResourceSessionSupport;
278 D3D12_FEATURE_DATA_ROOT_SIGNATURE m_dRootSignature;
279 std::vector<D3D12_FEATURE_DATA_ARCHITECTURE1> m_dArchitecture1;
280 D3D12_FEATURE_DATA_D3D12_OPTIONS2 m_dOptions2;
281 D3D12_FEATURE_DATA_SHADER_CACHE m_dShaderCache;
282 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY m_dCommandQueuePriority;
283 D3D12_FEATURE_DATA_D3D12_OPTIONS3 m_dOptions3;
284 D3D12_FEATURE_DATA_EXISTING_HEAPS m_dExistingHeaps;
285 D3D12_FEATURE_DATA_D3D12_OPTIONS4 m_dOptions4;
286 std::vector<D3D12_FEATURE_DATA_SERIALIZATION> m_dSerialization; // Cat2 NodeIndex
287 D3D12_FEATURE_DATA_CROSS_NODE m_dCrossNode;
288 D3D12_FEATURE_DATA_D3D12_OPTIONS5 m_dOptions5;
289#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
290 D3D12_FEATURE_DATA_DISPLAYABLE m_dDisplayable;
291#endif
292 D3D12_FEATURE_DATA_D3D12_OPTIONS6 m_dOptions6;
293 D3D12_FEATURE_DATA_D3D12_OPTIONS7 m_dOptions7;
294 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT> m_dProtectedResourceSessionTypeCount; // Cat2 NodeIndex
295 std::vector<ProtectedResourceSessionTypesLocal> m_dProtectedResourceSessionTypes; // Cat3
296#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
297 D3D12_FEATURE_DATA_D3D12_OPTIONS8 m_dOptions8;
298 D3D12_FEATURE_DATA_D3D12_OPTIONS9 m_dOptions9;
299#endif
300#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
301 D3D12_FEATURE_DATA_D3D12_OPTIONS10 m_dOptions10;
302 D3D12_FEATURE_DATA_D3D12_OPTIONS11 m_dOptions11;
303#endif
304#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
305 D3D12_FEATURE_DATA_D3D12_OPTIONS12 m_dOptions12;
306#endif
307#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
308 D3D12_FEATURE_DATA_D3D12_OPTIONS13 m_dOptions13;
309#endif
310#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
311 D3D12_FEATURE_DATA_D3D12_OPTIONS14 m_dOptions14;
312 D3D12_FEATURE_DATA_D3D12_OPTIONS15 m_dOptions15;
313#endif
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
315 D3D12_FEATURE_DATA_D3D12_OPTIONS16 m_dOptions16;
316#endif
317#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
318 D3D12_FEATURE_DATA_D3D12_OPTIONS17 m_dOptions17;
319#endif
320#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
321 D3D12_FEATURE_DATA_D3D12_OPTIONS18 m_dOptions18;
322#endif
323#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
324 D3D12_FEATURE_DATA_D3D12_OPTIONS19 m_dOptions19;
325#endif
326#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
327 D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
328#endif
329#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
330 D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
331#endif
332#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
333 D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
334#endif
335};
336
337// Implementations for CD3DX12FeatureSupport functions
338
339// Macro to set up a getter function for each entry in feature support data
340// The getter function will have the same name as the feature option name
341#define FEATURE_SUPPORT_GET(RETTYPE,FEATURE,OPTION) \
342inline RETTYPE CD3DX12FeatureSupport::OPTION() const noexcept \
343{ \
344 return FEATURE.OPTION; \
345}
346
347// Macro to set up a getter function for each entry in feature support data
348// Also specifies the name for the function which can be different from the feature name
349#define FEATURE_SUPPORT_GET_NAME(RETTYPE,FEATURE,OPTION,NAME) \
350inline RETTYPE CD3DX12FeatureSupport::NAME() const noexcept \
351{\
352 return FEATURE.OPTION; \
353}
354
355// Macro to set up a getter function for feature data indexed by the graphics node ID
356// The default parameter is 0, or the first availabe graphics device node
357#define FEATURE_SUPPORT_GET_NODE_INDEXED(RETTYPE,FEATURE,OPTION) \
358inline RETTYPE CD3DX12FeatureSupport::OPTION(UINT NodeIndex) const \
359{\
360 return FEATURE[NodeIndex].OPTION; \
361}
362
363// Macro to set up a getter function for feature data indexed by NodeIndex
364// Allows a custom name for the getter function
365#define FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(RETTYPE,FEATURE,OPTION,NAME) \
366inline RETTYPE CD3DX12FeatureSupport::NAME(UINT NodeIndex) const \
367{\
368 return FEATURE[NodeIndex].OPTION; \
369}
370
371inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
372: m_pDevice(nullptr)
373, m_hStatus(E_INVALIDARG)
374, m_dOptions{}
375, m_eMaxFeatureLevel{}
376, m_dGPUVASupport{}
377, m_dShaderModel{}
378, m_dOptions1{}
379, m_dRootSignature{}
380, m_dOptions2{}
381, m_dShaderCache{}
382, m_dCommandQueuePriority{}
383, m_dOptions3{}
384, m_dExistingHeaps{}
385, m_dOptions4{}
386, m_dCrossNode{}
387, m_dOptions5{}
388#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
389, m_dDisplayable{}
390#endif
391, m_dOptions6{}
392, m_dOptions7{}
393#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
394, m_dOptions8{}
395, m_dOptions9{}
396#endif
397#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
398, m_dOptions10{}
399, m_dOptions11{}
400#endif
401#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
402, m_dOptions12{}
403#endif
404#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
405, m_dOptions13{}
406#endif
407#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
408, m_dOptions14{}
409, m_dOptions15{}
410#endif
411#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
412, m_dOptions16{}
413#endif
414#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
415, m_dOptions17{}
416#endif
417#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
418, m_dOptions18{}
419#endif
420#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
421, m_dOptions19{}
422#endif
423#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
424, m_dOptions20{}
425#endif
426#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
427, m_dOptions21{}
428#endif
429#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
430, m_dTightAlignment{}
431#endif
432{}
433
434inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
435{
436 if (!pDevice)
437 {
438 m_hStatus = E_INVALIDARG;
439 return m_hStatus;
440 }
441
442 m_pDevice = pDevice;
443
444 // Initialize static feature support data structures
445 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &m_dOptions, sizeof(m_dOptions))))
446 {
447 m_dOptions = {};
448 }
449
450 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &m_dGPUVASupport, sizeof(m_dGPUVASupport))))
451 {
452 m_dGPUVASupport = {};
453 }
454
455 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &m_dOptions1, sizeof(m_dOptions1))))
456 {
457 m_dOptions1 = {};
458 }
459
460 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &m_dOptions2, sizeof(m_dOptions2))))
461 {
462 m_dOptions2 = {};
463 }
464
465 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_CACHE, &m_dShaderCache, sizeof(m_dShaderCache))))
466 {
467 m_dShaderCache = {};
468 }
469
470 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &m_dOptions3, sizeof(m_dOptions3))))
471 {
472 m_dOptions3 = {};
473 }
474
475 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_EXISTING_HEAPS, &m_dExistingHeaps, sizeof(m_dExistingHeaps))))
476 {
477 m_dExistingHeaps = {};
478 }
479
480 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &m_dOptions4, sizeof(m_dOptions4))))
481 {
482 m_dOptions4 = {};
483 }
484
485 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_CROSS_NODE, &m_dCrossNode, sizeof(m_dCrossNode))))
486 {
487 m_dCrossNode = {};
488 }
489
490 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &m_dOptions5, sizeof(m_dOptions5))))
491 {
492 m_dOptions5 = {};
493 }
494
495#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
496 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_DISPLAYABLE, &m_dDisplayable, sizeof(m_dDisplayable))))
497 {
498 m_dDisplayable = {};
499 }
500#endif
501
502 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &m_dOptions6, sizeof(m_dOptions6))))
503 {
504 m_dOptions6 = {};
505 }
506
507 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &m_dOptions7, sizeof(m_dOptions7))))
508 {
509 m_dOptions7 = {};
510 }
511
512#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
513 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &m_dOptions8, sizeof(m_dOptions8))))
514 {
515 m_dOptions8 = {};
516 }
517
518 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &m_dOptions9, sizeof(m_dOptions9))))
519 {
520 m_dOptions9 = {};
521 }
522#endif
523
524#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
525 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &m_dOptions10, sizeof(m_dOptions10))))
526 {
527 m_dOptions10 = {};
528 }
529
530 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &m_dOptions11, sizeof(m_dOptions11))))
531 {
532 m_dOptions11 = {};
533 }
534#endif
535
536#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
537 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &m_dOptions12, sizeof(m_dOptions12))))
538 {
539 m_dOptions12 = {};
540 m_dOptions12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE::D3D12_TRI_STATE_UNKNOWN;
541 }
542#endif
543
544#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
545 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS13, &m_dOptions13, sizeof(m_dOptions13))))
546 {
547 m_dOptions13 = {};
548 }
549#endif
550
551#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
552 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS14, &m_dOptions14, sizeof(m_dOptions14))))
553 {
554 m_dOptions14 = {};
555 }
556
557 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS15, &m_dOptions15, sizeof(m_dOptions15))))
558 {
559 m_dOptions15 = {};
560 }
561#endif
562
563#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
564 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS16, &m_dOptions16, sizeof(m_dOptions16))))
565 {
566 m_dOptions16 = {};
567 }
568#endif
569
570#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
571 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS17, &m_dOptions17, sizeof(m_dOptions17))))
572 {
573 m_dOptions17 = {};
574 }
575
576 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS18, &m_dOptions18, sizeof(m_dOptions18))))
577 {
578 m_dOptions18.RenderPassesValid = false;
579 }
580#endif
581
582#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
583 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &m_dOptions19, sizeof(m_dOptions19))))
584 {
585 m_dOptions19 = {};
586 m_dOptions19.SupportedSampleCountsWithNoOutputs = 1;
587 m_dOptions19.MaxSamplerDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
588 m_dOptions19.MaxSamplerDescriptorHeapSizeWithStaticSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
589 m_dOptions19.MaxViewDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1;
590 }
591#endif
592
593#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
594 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS20, &m_dOptions20, sizeof(m_dOptions20))))
595 {
596 m_dOptions20 = {};
597 }
598#endif
599
600#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
601 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
602 {
603 m_dOptions21 = {};
604 }
605#endif
606
607#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
608 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
609 {
610 m_dTightAlignment = {};
611 }
612#endif
613
614 // Initialize per-node feature support data structures
615 const UINT uNodeCount = m_pDevice->GetNodeCount();
616 m_dProtectedResourceSessionSupport.resize(uNodeCount);
617 m_dArchitecture1.resize(uNodeCount);
618 m_dSerialization.resize(uNodeCount);
619 m_dProtectedResourceSessionTypeCount.resize(uNodeCount);
620 m_dProtectedResourceSessionTypes.resize(uNodeCount);
621 for (UINT NodeIndex = 0; NodeIndex < uNodeCount; NodeIndex++)
622 {
623 m_dProtectedResourceSessionSupport[NodeIndex].NodeIndex = NodeIndex;
624 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT, &m_dProtectedResourceSessionSupport[NodeIndex], sizeof(m_dProtectedResourceSessionSupport[NodeIndex]))))
625 {
626 m_dProtectedResourceSessionSupport[NodeIndex].Support = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
627 }
628
629 m_dArchitecture1[NodeIndex].NodeIndex = NodeIndex;
630 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE1, &m_dArchitecture1[NodeIndex], sizeof(m_dArchitecture1[NodeIndex]))))
631 {
632 D3D12_FEATURE_DATA_ARCHITECTURE dArchLocal = {};
633 dArchLocal.NodeIndex = NodeIndex;
634 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &dArchLocal, sizeof(dArchLocal))))
635 {
636 dArchLocal.TileBasedRenderer = false;
637 dArchLocal.UMA = false;
638 dArchLocal.CacheCoherentUMA = false;
639 }
640
641 m_dArchitecture1[NodeIndex].TileBasedRenderer = dArchLocal.TileBasedRenderer;
642 m_dArchitecture1[NodeIndex].UMA = dArchLocal.UMA;
643 m_dArchitecture1[NodeIndex].CacheCoherentUMA = dArchLocal.CacheCoherentUMA;
644 m_dArchitecture1[NodeIndex].IsolatedMMU = false;
645 }
646
647 m_dSerialization[NodeIndex].NodeIndex = NodeIndex;
648 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SERIALIZATION, &m_dSerialization[NodeIndex], sizeof(m_dSerialization[NodeIndex]))))
649 {
650 m_dSerialization[NodeIndex].HeapSerializationTier = D3D12_HEAP_SERIALIZATION_TIER_0;
651 }
652
653 m_dProtectedResourceSessionTypeCount[NodeIndex].NodeIndex = NodeIndex;
654 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &m_dProtectedResourceSessionTypeCount[NodeIndex], sizeof(m_dProtectedResourceSessionTypeCount[NodeIndex]))))
655 {
656 m_dProtectedResourceSessionTypeCount[NodeIndex].Count = 0;
657 }
658
659 // Special procedure to initialize local protected resource session types structs
660 // Must wait until session type count initialized
661 QueryProtectedResourceSessionTypes(NodeIndex, m_dProtectedResourceSessionTypeCount[NodeIndex].Count);
662 }
663
664 // Initialize features that requires highest version check
665 if (FAILED(m_hStatus = QueryHighestShaderModel()))
666 {
667 return m_hStatus;
668 }
669
670 if (FAILED(m_hStatus = QueryHighestRootSignatureVersion()))
671 {
672 return m_hStatus;
673 }
674
675 // Initialize Feature Levels data
676 if (FAILED(m_hStatus = QueryHighestFeatureLevel()))
677 {
678 return m_hStatus;
679 }
680
681 return m_hStatus;
682}
683
684// 0: D3D12_OPTIONS
685FEATURE_SUPPORT_GET(BOOL, m_dOptions, DoublePrecisionFloatShaderOps);
686FEATURE_SUPPORT_GET(BOOL, m_dOptions, OutputMergerLogicOp);
687FEATURE_SUPPORT_GET(D3D12_SHADER_MIN_PRECISION_SUPPORT, m_dOptions, MinPrecisionSupport);
688FEATURE_SUPPORT_GET(D3D12_TILED_RESOURCES_TIER, m_dOptions, TiledResourcesTier);
689FEATURE_SUPPORT_GET(D3D12_RESOURCE_BINDING_TIER, m_dOptions, ResourceBindingTier);
690FEATURE_SUPPORT_GET(BOOL, m_dOptions, PSSpecifiedStencilRefSupported);
691FEATURE_SUPPORT_GET(BOOL, m_dOptions, TypedUAVLoadAdditionalFormats);
692FEATURE_SUPPORT_GET(BOOL, m_dOptions, ROVsSupported);
693FEATURE_SUPPORT_GET(D3D12_CONSERVATIVE_RASTERIZATION_TIER, m_dOptions, ConservativeRasterizationTier);
694FEATURE_SUPPORT_GET(BOOL, m_dOptions, StandardSwizzle64KBSupported);
695FEATURE_SUPPORT_GET(BOOL, m_dOptions, CrossAdapterRowMajorTextureSupported);
696FEATURE_SUPPORT_GET(BOOL, m_dOptions, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
697FEATURE_SUPPORT_GET(D3D12_RESOURCE_HEAP_TIER, m_dOptions, ResourceHeapTier);
698
699// Special procedure for handling caps that is also part of other features
700inline D3D12_CROSS_NODE_SHARING_TIER CD3DX12FeatureSupport::CrossNodeSharingTier() const noexcept
701{
702 if (m_dCrossNode.SharingTier > D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED)
703 {
704 return m_dCrossNode.SharingTier;
705 }
706 else
707 {
708 return m_dOptions.CrossNodeSharingTier;
709 }
710}
711
712inline UINT CD3DX12FeatureSupport::MaxGPUVirtualAddressBitsPerResource() const noexcept
713{
714 if (m_dOptions.MaxGPUVirtualAddressBitsPerResource > 0)
715 {
716 return m_dOptions.MaxGPUVirtualAddressBitsPerResource;
717 }
718 else
719 {
720 return m_dGPUVASupport.MaxGPUVirtualAddressBitsPerResource;
721 }
722}
723
724// 1: Architecture
725// Combined with Architecture1
726
727// 2: Feature Levels
728// Simply returns the highest supported feature level
729inline D3D_FEATURE_LEVEL CD3DX12FeatureSupport::MaxSupportedFeatureLevel() const noexcept
730{
731 return m_eMaxFeatureLevel;
732}
733
734// 3: Feature Format Support
735inline HRESULT CD3DX12FeatureSupport::FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const
736{
737 D3D12_FEATURE_DATA_FORMAT_SUPPORT dFormatSupport;
738 dFormatSupport.Format = Format;
739
740 // It is possible that the function call returns an error
741 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &dFormatSupport, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));
742
743 Support1 = dFormatSupport.Support1;
744 Support2 = dFormatSupport.Support2; // Two outputs. Probably better just to take in the struct as an argument?
745
746 return result;
747}
748
749// 4: Multisample Quality Levels
750inline HRESULT CD3DX12FeatureSupport::MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const
751{
752 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS dMultisampleQualityLevels;
753 dMultisampleQualityLevels.Format = Format;
754 dMultisampleQualityLevels.SampleCount = SampleCount;
755 dMultisampleQualityLevels.Flags = Flags;
756
757 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &dMultisampleQualityLevels, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
758
759 if (SUCCEEDED(result))
760 {
761 NumQualityLevels = dMultisampleQualityLevels.NumQualityLevels;
762 }
763 else
764 {
765 NumQualityLevels = 0;
766 }
767
768 return result;
769}
770
771// 5: Format Info
772inline HRESULT CD3DX12FeatureSupport::FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const
773{
774 D3D12_FEATURE_DATA_FORMAT_INFO dFormatInfo;
775 dFormatInfo.Format = Format;
776
777 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &dFormatInfo, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
778 if (FAILED(result))
779 {
780 PlaneCount = 0;
781 }
782 else
783 {
784 PlaneCount = dFormatInfo.PlaneCount;
785 }
786 return result;
787}
788
789// 6: GPU Virtual Address Support
790// MaxGPUVirtualAddressBitsPerResource handled in D3D12Options
791FEATURE_SUPPORT_GET(UINT, m_dGPUVASupport, MaxGPUVirtualAddressBitsPerProcess);
792
793// 7: Shader Model
794inline D3D_SHADER_MODEL CD3DX12FeatureSupport::HighestShaderModel() const noexcept
795{
796 return m_dShaderModel.HighestShaderModel;
797}
798
799// 8: D3D12 Options1
800FEATURE_SUPPORT_GET(BOOL, m_dOptions1, WaveOps);
801FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMin);
802FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMax);
803FEATURE_SUPPORT_GET(UINT, m_dOptions1, TotalLaneCount);
804FEATURE_SUPPORT_GET(BOOL, m_dOptions1, ExpandedComputeResourceStates);
805FEATURE_SUPPORT_GET(BOOL, m_dOptions1, Int64ShaderOps);
806
807// 10: Protected Resource Session Support
808inline D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS CD3DX12FeatureSupport::ProtectedResourceSessionSupport(UINT NodeIndex) const
809{
810 return m_dProtectedResourceSessionSupport[NodeIndex].Support;
811}
812
813// 12: Root Signature
814inline D3D_ROOT_SIGNATURE_VERSION CD3DX12FeatureSupport::HighestRootSignatureVersion() const noexcept
815{
816 return m_dRootSignature.HighestVersion;
817}
818
819// 16: Architecture1
820// Same data fields can be queried from m_dArchitecture
821FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, TileBasedRenderer);
822FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, UMA);
823FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, CacheCoherentUMA);
824FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, IsolatedMMU);
825
826// 18: D3D12 Options2
827FEATURE_SUPPORT_GET(BOOL, m_dOptions2, DepthBoundsTestSupported);
828FEATURE_SUPPORT_GET(D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, m_dOptions2, ProgrammableSamplePositionsTier);
829
830// 19: Shader Cache
831FEATURE_SUPPORT_GET_NAME(D3D12_SHADER_CACHE_SUPPORT_FLAGS, m_dShaderCache, SupportFlags, ShaderCacheSupportFlags);
832
833// 20: Command Queue Priority
834inline BOOL CD3DX12FeatureSupport::CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority)
835{
836 m_dCommandQueuePriority.CommandListType = CommandListType;
837 m_dCommandQueuePriority.Priority = Priority;
838
839 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_COMMAND_QUEUE_PRIORITY, &m_dCommandQueuePriority, sizeof(D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY))))
840 {
841 return false;
842 }
843
844 return m_dCommandQueuePriority.PriorityForTypeIsSupported;
845}
846
847// 21: D3D12 Options3
848FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CopyQueueTimestampQueriesSupported);
849FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CastingFullyTypedFormatSupported);
850FEATURE_SUPPORT_GET(D3D12_COMMAND_LIST_SUPPORT_FLAGS, m_dOptions3, WriteBufferImmediateSupportFlags);
851FEATURE_SUPPORT_GET(D3D12_VIEW_INSTANCING_TIER, m_dOptions3, ViewInstancingTier);
852FEATURE_SUPPORT_GET(BOOL, m_dOptions3, BarycentricsSupported);
853
854// 22: Existing Heaps
855FEATURE_SUPPORT_GET_NAME(BOOL, m_dExistingHeaps, Supported, ExistingHeapsSupported);
856
857// 23: D3D12 Options4
858FEATURE_SUPPORT_GET(BOOL, m_dOptions4, MSAA64KBAlignedTextureSupported);
859FEATURE_SUPPORT_GET(D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, m_dOptions4, SharedResourceCompatibilityTier);
860FEATURE_SUPPORT_GET(BOOL, m_dOptions4, Native16BitShaderOpsSupported);
861
862// 24: Serialization
863FEATURE_SUPPORT_GET_NODE_INDEXED(D3D12_HEAP_SERIALIZATION_TIER, m_dSerialization, HeapSerializationTier);
864
865// 25: Cross Node
866// CrossNodeSharingTier handled in D3D12Options
867FEATURE_SUPPORT_GET_NAME(BOOL, m_dCrossNode, AtomicShaderInstructions, CrossNodeAtomicShaderInstructions);
868
869// 27: D3D12 Options5
870FEATURE_SUPPORT_GET(BOOL, m_dOptions5, SRVOnlyTiledResourceTier3);
871FEATURE_SUPPORT_GET(D3D12_RENDER_PASS_TIER, m_dOptions5, RenderPassesTier);
872FEATURE_SUPPORT_GET(D3D12_RAYTRACING_TIER, m_dOptions5, RaytracingTier);
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
875// 28: Displayable
876FEATURE_SUPPORT_GET(BOOL, m_dDisplayable, DisplayableTexture);
877// SharedResourceCompatibilityTier handled in D3D12Options4
878#endif
879
880// 30: D3D12 Options6
881FEATURE_SUPPORT_GET(BOOL, m_dOptions6, AdditionalShadingRatesSupported);
882FEATURE_SUPPORT_GET(BOOL, m_dOptions6, PerPrimitiveShadingRateSupportedWithViewportIndexing);
883FEATURE_SUPPORT_GET(D3D12_VARIABLE_SHADING_RATE_TIER, m_dOptions6, VariableShadingRateTier);
884FEATURE_SUPPORT_GET(UINT, m_dOptions6, ShadingRateImageTileSize);
885FEATURE_SUPPORT_GET(BOOL, m_dOptions6, BackgroundProcessingSupported);
886
887// 31: Query Meta Command
888// Keep the original call routine
889inline HRESULT CD3DX12FeatureSupport::QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const
890{
891 return m_pDevice->CheckFeatureSupport(D3D12_FEATURE_QUERY_META_COMMAND, &dQueryMetaCommand, sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND));
892}
893
894// 32: D3D12 Options7
895FEATURE_SUPPORT_GET(D3D12_MESH_SHADER_TIER, m_dOptions7, MeshShaderTier);
896FEATURE_SUPPORT_GET(D3D12_SAMPLER_FEEDBACK_TIER, m_dOptions7, SamplerFeedbackTier);
897
898// 33: Protected Resource Session Type Count
899FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(UINT, m_dProtectedResourceSessionTypeCount, Count, ProtectedResourceSessionTypeCount);
900
901// 34: Protected Resource Session Types
902FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(std::vector<GUID>, m_dProtectedResourceSessionTypes, TypeVec, ProtectedResourceSessionTypes);
903
904#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
905// 36: Options8
906FEATURE_SUPPORT_GET(BOOL, m_dOptions8, UnalignedBlockTexturesSupported);
907
908// 37: Options9
909FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderPipelineStatsSupported);
910FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderSupportsFullRangeRenderTargetArrayIndex);
911FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnTypedResourceSupported);
912FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnGroupSharedSupported);
913FEATURE_SUPPORT_GET(BOOL, m_dOptions9, DerivativesInMeshAndAmplificationShadersSupported);
914FEATURE_SUPPORT_GET(D3D12_WAVE_MMA_TIER, m_dOptions9, WaveMMATier);
915#endif
916
917#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
918// 39: Options10
919FEATURE_SUPPORT_GET(BOOL, m_dOptions10, VariableRateShadingSumCombinerSupported);
920FEATURE_SUPPORT_GET(BOOL, m_dOptions10, MeshShaderPerPrimitiveShadingRateSupported);
921
922// 40: Options11
923FEATURE_SUPPORT_GET(BOOL, m_dOptions11, AtomicInt64OnDescriptorHeapResourceSupported);
924#endif
925
926#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
927// 41: Options12
928FEATURE_SUPPORT_GET(D3D12_TRI_STATE, m_dOptions12, MSPrimitivesPipelineStatisticIncludesCulledPrimitives);
929FEATURE_SUPPORT_GET(BOOL, m_dOptions12, EnhancedBarriersSupported);
930FEATURE_SUPPORT_GET(BOOL, m_dOptions12, RelaxedFormatCastingSupported);
931#endif
932
933#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
934// 42: Options13
935FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedBufferTextureCopyPitchSupported);
936FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedVertexElementAlignmentSupported);
937FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportHeightFlipsYSupported);
938FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportDepthFlipsZSupported);
939FEATURE_SUPPORT_GET(BOOL, m_dOptions13, TextureCopyBetweenDimensionsSupported);
940FEATURE_SUPPORT_GET(BOOL, m_dOptions13, AlphaBlendFactorSupported);
941#endif
942
943#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
944// 43: Options14
945FEATURE_SUPPORT_GET(BOOL, m_dOptions14, AdvancedTextureOpsSupported);
946FEATURE_SUPPORT_GET(BOOL, m_dOptions14, WriteableMSAATexturesSupported);
947FEATURE_SUPPORT_GET(BOOL, m_dOptions14, IndependentFrontAndBackStencilRefMaskSupported);
948
949// 44: Options15
950FEATURE_SUPPORT_GET(BOOL, m_dOptions15, TriangleFanSupported);
951FEATURE_SUPPORT_GET(BOOL, m_dOptions15, DynamicIndexBufferStripCutSupported);
952#endif
953
954#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
955// 45: Options16
956FEATURE_SUPPORT_GET(BOOL, m_dOptions16, DynamicDepthBiasSupported);
957#endif
958#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
959FEATURE_SUPPORT_GET(BOOL, m_dOptions16, GPUUploadHeapSupported);
960
961// 46: Options17
962FEATURE_SUPPORT_GET(BOOL, m_dOptions17, NonNormalizedCoordinateSamplersSupported);
963FEATURE_SUPPORT_GET(BOOL, m_dOptions17, ManualWriteTrackingResourceSupported);
964
965// 47: Option18
966FEATURE_SUPPORT_GET(BOOL, m_dOptions18, RenderPassesValid);
967#endif
968
969#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
970FEATURE_SUPPORT_GET(BOOL, m_dOptions19, MismatchingOutputDimensionsSupported);
971FEATURE_SUPPORT_GET(UINT, m_dOptions19, SupportedSampleCountsWithNoOutputs);
972FEATURE_SUPPORT_GET(BOOL, m_dOptions19, PointSamplingAddressesNeverRoundUp);
973FEATURE_SUPPORT_GET(BOOL, m_dOptions19, RasterizerDesc2Supported);
974FEATURE_SUPPORT_GET(BOOL, m_dOptions19, NarrowQuadrilateralLinesSupported);
975FEATURE_SUPPORT_GET(BOOL, m_dOptions19, AnisoFilterWithPointMipSupported);
976FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSize);
977FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSizeWithStaticSamplers);
978FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
979#endif
980
981#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
982// 49: Options20
983FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
984#endif
985
986#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
987// 50: Options21
988FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
989FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
990#endif
991
992#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
993// 51: TightAlignment
994FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
995#endif
996
997// Helper function to decide the highest shader model supported by the system
998// Stores the result in m_dShaderModel
999// Must be updated whenever a new shader model is added to the d3d12.h header
1000inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
1001{
1002 // Check support in descending order
1003 HRESULT result;
1004
1005 const D3D_SHADER_MODEL allModelVersions[] =
1006 {
1007#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1008 D3D_SHADER_MODEL_6_9,
1009#endif
1010#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1011 D3D_SHADER_MODEL_6_8,
1012#endif
1013#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1014 D3D_SHADER_MODEL_6_7,
1015#endif
1016 D3D_SHADER_MODEL_6_6,
1017 D3D_SHADER_MODEL_6_5,
1018 D3D_SHADER_MODEL_6_4,
1019 D3D_SHADER_MODEL_6_3,
1020 D3D_SHADER_MODEL_6_2,
1021 D3D_SHADER_MODEL_6_1,
1022 D3D_SHADER_MODEL_6_0,
1023 D3D_SHADER_MODEL_5_1
1024 };
1025 constexpr size_t numModelVersions = sizeof(allModelVersions) / sizeof(D3D_SHADER_MODEL);
1026
1027 for (size_t i = 0; i < numModelVersions; i++)
1028 {
1029 m_dShaderModel.HighestShaderModel = allModelVersions[i];
1030 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &m_dShaderModel, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL));
1031 if (result != E_INVALIDARG)
1032 {
1033 // Indicates that the version is recognizable by the runtime and stored in the struct
1034 // Also terminate on unexpected error code
1035 if (FAILED(result))
1036 {
1037 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1038 }
1039 return result;
1040 }
1041 }
1042
1043 // Shader model may not be supported. Continue the rest initializations
1044 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1045 return S_OK;
1046}
1047
1048// Helper function to decide the highest root signature supported
1049// Must be updated whenever a new root signature version is added to the d3d12.h header
1050inline HRESULT CD3DX12FeatureSupport::QueryHighestRootSignatureVersion()
1051{
1052 HRESULT result;
1053
1054 const D3D_ROOT_SIGNATURE_VERSION allRootSignatureVersions[] =
1055 {
1056#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1057 D3D_ROOT_SIGNATURE_VERSION_1_2,
1058#endif
1059 D3D_ROOT_SIGNATURE_VERSION_1_1,
1060 D3D_ROOT_SIGNATURE_VERSION_1_0,
1061 D3D_ROOT_SIGNATURE_VERSION_1,
1062 };
1063 constexpr size_t numRootSignatureVersions = sizeof(allRootSignatureVersions) / sizeof(D3D_ROOT_SIGNATURE_VERSION);
1064
1065 for (size_t i = 0; i < numRootSignatureVersions; i++)
1066 {
1067 m_dRootSignature.HighestVersion = allRootSignatureVersions[i];
1068 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ROOT_SIGNATURE, &m_dRootSignature, sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE));
1069 if (result != E_INVALIDARG)
1070 {
1071 if (FAILED(result))
1072 {
1073 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1074 }
1075 // If succeeded, the highest version is already written into the member struct
1076 return result;
1077 }
1078 }
1079
1080 // No version left. Set to invalid value and continue.
1081 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1082 return S_OK;
1083}
1084
1085// Helper funcion to decide the highest feature level
1086inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
1087{
1088 HRESULT result;
1089
1090 // Check against a list of all feature levels present in d3dcommon.h
1091 // Needs to be updated for future feature levels
1092 const D3D_FEATURE_LEVEL allLevels[] =
1093 {
1094#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1095 D3D_FEATURE_LEVEL_12_2,
1096#endif
1097 D3D_FEATURE_LEVEL_12_1,
1098 D3D_FEATURE_LEVEL_12_0,
1099 D3D_FEATURE_LEVEL_11_1,
1100 D3D_FEATURE_LEVEL_11_0,
1101 D3D_FEATURE_LEVEL_10_1,
1102 D3D_FEATURE_LEVEL_10_0,
1103 D3D_FEATURE_LEVEL_9_3,
1104 D3D_FEATURE_LEVEL_9_2,
1105 D3D_FEATURE_LEVEL_9_1,
1106#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
1107 D3D_FEATURE_LEVEL_1_0_CORE,
1108#endif
1109#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
1110 D3D_FEATURE_LEVEL_1_0_GENERIC
1111#endif
1112 };
1113
1114 D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
1115 dFeatureLevel.NumFeatureLevels = static_cast<UINT>(sizeof(allLevels) / sizeof(D3D_FEATURE_LEVEL));
1116 dFeatureLevel.pFeatureLevelsRequested = allLevels;
1117
1118 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &dFeatureLevel, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
1119 if (SUCCEEDED(result))
1120 {
1121 m_eMaxFeatureLevel = dFeatureLevel.MaxSupportedFeatureLevel;
1122 }
1123 else
1124 {
1125 m_eMaxFeatureLevel = static_cast<D3D_FEATURE_LEVEL>(0);
1126
1127 if (result == DXGI_ERROR_UNSUPPORTED)
1128 {
1129 // Indicates that none supported. Continue initialization
1130 result = S_OK;
1131 }
1132 }
1133 return result;
1134}
1135
1136// Helper function to initialize local protected resource session types structs
1137inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count)
1138{
1139 auto& CurrentPRSTypes = m_dProtectedResourceSessionTypes[NodeIndex];
1140 CurrentPRSTypes.NodeIndex = NodeIndex;
1141 CurrentPRSTypes.Count = Count;
1142 CurrentPRSTypes.TypeVec.resize(CurrentPRSTypes.Count);
1143 CurrentPRSTypes.pTypes = CurrentPRSTypes.TypeVec.data();
1144
1145 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES, &m_dProtectedResourceSessionTypes[NodeIndex], sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES));
1146 if (FAILED(result))
1147 {
1148 // Resize TypeVec to empty
1149 CurrentPRSTypes.TypeVec.clear();
1150 }
1151
1152 return result;
1153}
1154
1155#undef FEATURE_SUPPORT_GET
1156#undef FEATURE_SUPPORT_GET_NAME
1157#undef FEATURE_SUPPORT_GET_NODE_INDEXED
1158#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
1159
1160// end CD3DX12FeatureSupport
1161
1162
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h
new file mode 100644
index 0000000..092a039
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h
@@ -0,0 +1,2072 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include <string.h>
15#include "d3d12.h"
16#include "d3dx12_default.h"
17
18//------------------------------------------------------------------------------------------------
19#ifndef D3DX12_ASSERT
20 #ifdef assert
21 #define D3DX12_ASSERT(x) assert(x)
22 #else
23 #define D3DX12_ASSERT(x)
24 #endif
25#endif
26
27//------------------------------------------------------------------------------------------------
28template <typename t_CommandListType>
29inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
30{
31 // This cast is useful for passing strongly typed command list pointers into
32 // ExecuteCommandLists.
33 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
34 // respect the const-ness of their arguments.
35 return reinterpret_cast<ID3D12CommandList * const *>(pp);
36}
37
38#ifdef D3DX12_USE_ARRAY_COM_PTR
39#include <vector>
40//------------------------------------------------------------------------------------------------
41// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
42template<typename _T>
43class CArrayComPtr
44{
45 std::vector<_T *> m_array;
46
47public:
48 class CProxyPtr
49 {
50 _T *&pObj;
51
52 CProxyPtr(_T *&obj) :
53 pObj(obj) {}
54
55 public:
56 operator _T*() { return pObj; }
57 _T **operator&() { return &pObj; }
58 CProxyPtr &operator=(_T*&obj)
59 {
60 if(pObj)
61 pObj->Release();
62
63 pObj = obj;
64
65 if(pObj)
66 pObj->AddRef();
67 }
68
69 friend class CArrayComPtr<_T>;
70 };
71
72public:
73 CArrayComPtr() = default;
74
75 CArrayComPtr(size_t size) :
76 m_array(size) {
77 }
78
79 CArrayComPtr(const CArrayComPtr &o)
80 {
81 m_array = o.m_array;
82 for (size_t i = 0; i < m_array.size(); ++i)
83 {
84 m_array[i]->AddRef();
85 }
86 }
87
88 CArrayComPtr(CArrayComPtr &&o) = default;
89
90 ~CArrayComPtr()
91 {
92 for (auto ptr : m_array)
93 {
94 if (ptr)
95 {
96 ptr->Release();
97 }
98 }
99 }
100
101 _T *const *Get() { return m_array.data(); }
102
103 void Assign(size_t index, _T *ptr)
104 {
105 if (index >= m_array.size())
106 {
107 Resize(index + 1);
108 }
109
110 // Release the old pointer if it exists
111 if (m_array[index])
112 {
113 m_array[index]->Release();
114 }
115
116 // Assign the new pointer and AddRef it if not null
117 m_array[index] = ptr;
118 if (ptr)
119 {
120 ptr->AddRef();
121 }
122 }
123
124 void Resize(size_t size)
125 {
126 // If shrinking, release any pointers that will be discarded
127 if (size < m_array.size())
128 {
129 for (size_t i = size; i < m_array.size(); ++i)
130 {
131 if (m_array[i])
132 {
133 m_array[i]->Release();
134 }
135 }
136 }
137
138 // Resize the vector, initializing new elements to nullptr
139 m_array.resize(size, nullptr);
140 }
141
142 void PushBack(_T *ptr)
143 {
144 // AddRef if not null
145 if (ptr)
146 {
147 ptr->AddRef();
148 }
149 m_array.push_back(ptr);
150 }
151
152 CProxyPtr operator[](size_t index)
153 {
154 return CProxyPtr(m_array[index]);
155 }
156};
157#endif
158//------------------------------------------------------------------------------------------------
159inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
160{
161 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
162 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
163}
164
165//------------------------------------------------------------------------------------------------
166inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
167{ return !( l == r ); }
168
169//------------------------------------------------------------------------------------------------
170struct CD3DX12_RECT : public D3D12_RECT
171{
172 CD3DX12_RECT() = default;
173 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
174 D3D12_RECT( o )
175 {}
176 explicit CD3DX12_RECT(
177 LONG Left,
178 LONG Top,
179 LONG Right,
180 LONG Bottom ) noexcept
181 {
182 left = Left;
183 top = Top;
184 right = Right;
185 bottom = Bottom;
186 }
187};
188
189//------------------------------------------------------------------------------------------------
190struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
191{
192 CD3DX12_VIEWPORT() = default;
193 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
194 D3D12_VIEWPORT( o )
195 {}
196 explicit CD3DX12_VIEWPORT(
197 FLOAT topLeftX,
198 FLOAT topLeftY,
199 FLOAT width,
200 FLOAT height,
201 FLOAT minDepth = D3D12_MIN_DEPTH,
202 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
203 {
204 TopLeftX = topLeftX;
205 TopLeftY = topLeftY;
206 Width = width;
207 Height = height;
208 MinDepth = minDepth;
209 MaxDepth = maxDepth;
210 }
211 explicit CD3DX12_VIEWPORT(
212 _In_ ID3D12Resource* pResource,
213 UINT mipSlice = 0,
214 FLOAT topLeftX = 0.0f,
215 FLOAT topLeftY = 0.0f,
216 FLOAT minDepth = D3D12_MIN_DEPTH,
217 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
218 {
219#if defined(_MSC_VER) || !defined(_WIN32)
220 const auto Desc = pResource->GetDesc();
221#else
222 D3D12_RESOURCE_DESC tmpDesc;
223 const auto& Desc = *pResource->GetDesc(&tmpDesc);
224#endif
225 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
226 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
227 switch (Desc.Dimension)
228 {
229 case D3D12_RESOURCE_DIMENSION_BUFFER:
230 TopLeftX = topLeftX;
231 TopLeftY = 0.0f;
232 Width = float(Desc.Width) - topLeftX;
233 Height = 1.0f;
234 break;
235 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
236 TopLeftX = topLeftX;
237 TopLeftY = 0.0f;
238 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
239 Height = 1.0f;
240 break;
241 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
242 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
243 TopLeftX = topLeftX;
244 TopLeftY = topLeftY;
245 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
246 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
247 break;
248 default: break;
249 }
250
251 MinDepth = minDepth;
252 MaxDepth = maxDepth;
253 }
254};
255
256//------------------------------------------------------------------------------------------------
257struct CD3DX12_BOX : public D3D12_BOX
258{
259 CD3DX12_BOX() = default;
260 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
261 D3D12_BOX( o )
262 {}
263 explicit CD3DX12_BOX(
264 LONG Left,
265 LONG Right ) noexcept
266 {
267 left = static_cast<UINT>(Left);
268 top = 0;
269 front = 0;
270 right = static_cast<UINT>(Right);
271 bottom = 1;
272 back = 1;
273 }
274 explicit CD3DX12_BOX(
275 LONG Left,
276 LONG Top,
277 LONG Right,
278 LONG Bottom ) noexcept
279 {
280 left = static_cast<UINT>(Left);
281 top = static_cast<UINT>(Top);
282 front = 0;
283 right = static_cast<UINT>(Right);
284 bottom = static_cast<UINT>(Bottom);
285 back = 1;
286 }
287 explicit CD3DX12_BOX(
288 LONG Left,
289 LONG Top,
290 LONG Front,
291 LONG Right,
292 LONG Bottom,
293 LONG Back ) noexcept
294 {
295 left = static_cast<UINT>(Left);
296 top = static_cast<UINT>(Top);
297 front = static_cast<UINT>(Front);
298 right = static_cast<UINT>(Right);
299 bottom = static_cast<UINT>(Bottom);
300 back = static_cast<UINT>(Back);
301 }
302};
303inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
304{
305 return l.left == r.left && l.top == r.top && l.front == r.front &&
306 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
307}
308inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
309{ return !( l == r ); }
310
311//------------------------------------------------------------------------------------------------
312struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
313{
314 CD3DX12_DEPTH_STENCIL_DESC() = default;
315 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
316 D3D12_DEPTH_STENCIL_DESC( o )
317 {}
318 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
319 {
320 DepthEnable = TRUE;
321 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
322 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
323 StencilEnable = FALSE;
324 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
325 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
326 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
327 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
328 FrontFace = defaultStencilOp;
329 BackFace = defaultStencilOp;
330 }
331 explicit CD3DX12_DEPTH_STENCIL_DESC(
332 BOOL depthEnable,
333 D3D12_DEPTH_WRITE_MASK depthWriteMask,
334 D3D12_COMPARISON_FUNC depthFunc,
335 BOOL stencilEnable,
336 UINT8 stencilReadMask,
337 UINT8 stencilWriteMask,
338 D3D12_STENCIL_OP frontStencilFailOp,
339 D3D12_STENCIL_OP frontStencilDepthFailOp,
340 D3D12_STENCIL_OP frontStencilPassOp,
341 D3D12_COMPARISON_FUNC frontStencilFunc,
342 D3D12_STENCIL_OP backStencilFailOp,
343 D3D12_STENCIL_OP backStencilDepthFailOp,
344 D3D12_STENCIL_OP backStencilPassOp,
345 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
346 {
347 DepthEnable = depthEnable;
348 DepthWriteMask = depthWriteMask;
349 DepthFunc = depthFunc;
350 StencilEnable = stencilEnable;
351 StencilReadMask = stencilReadMask;
352 StencilWriteMask = stencilWriteMask;
353 FrontFace.StencilFailOp = frontStencilFailOp;
354 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
355 FrontFace.StencilPassOp = frontStencilPassOp;
356 FrontFace.StencilFunc = frontStencilFunc;
357 BackFace.StencilFailOp = backStencilFailOp;
358 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
359 BackFace.StencilPassOp = backStencilPassOp;
360 BackFace.StencilFunc = backStencilFunc;
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
366{
367 CD3DX12_DEPTH_STENCIL_DESC1() = default;
368 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
369 D3D12_DEPTH_STENCIL_DESC1( o )
370 {}
371 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
372 {
373 DepthEnable = o.DepthEnable;
374 DepthWriteMask = o.DepthWriteMask;
375 DepthFunc = o.DepthFunc;
376 StencilEnable = o.StencilEnable;
377 StencilReadMask = o.StencilReadMask;
378 StencilWriteMask = o.StencilWriteMask;
379 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
380 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
381 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
382 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
383 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
384 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
385 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
386 BackFace.StencilFunc = o.BackFace.StencilFunc;
387 DepthBoundsTestEnable = FALSE;
388 }
389 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
390 {
391 DepthEnable = TRUE;
392 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
393 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
394 StencilEnable = FALSE;
395 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
396 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
397 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
398 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
399 FrontFace = defaultStencilOp;
400 BackFace = defaultStencilOp;
401 DepthBoundsTestEnable = FALSE;
402 }
403 explicit CD3DX12_DEPTH_STENCIL_DESC1(
404 BOOL depthEnable,
405 D3D12_DEPTH_WRITE_MASK depthWriteMask,
406 D3D12_COMPARISON_FUNC depthFunc,
407 BOOL stencilEnable,
408 UINT8 stencilReadMask,
409 UINT8 stencilWriteMask,
410 D3D12_STENCIL_OP frontStencilFailOp,
411 D3D12_STENCIL_OP frontStencilDepthFailOp,
412 D3D12_STENCIL_OP frontStencilPassOp,
413 D3D12_COMPARISON_FUNC frontStencilFunc,
414 D3D12_STENCIL_OP backStencilFailOp,
415 D3D12_STENCIL_OP backStencilDepthFailOp,
416 D3D12_STENCIL_OP backStencilPassOp,
417 D3D12_COMPARISON_FUNC backStencilFunc,
418 BOOL depthBoundsTestEnable ) noexcept
419 {
420 DepthEnable = depthEnable;
421 DepthWriteMask = depthWriteMask;
422 DepthFunc = depthFunc;
423 StencilEnable = stencilEnable;
424 StencilReadMask = stencilReadMask;
425 StencilWriteMask = stencilWriteMask;
426 FrontFace.StencilFailOp = frontStencilFailOp;
427 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
428 FrontFace.StencilPassOp = frontStencilPassOp;
429 FrontFace.StencilFunc = frontStencilFunc;
430 BackFace.StencilFailOp = backStencilFailOp;
431 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
432 BackFace.StencilPassOp = backStencilPassOp;
433 BackFace.StencilFunc = backStencilFunc;
434 DepthBoundsTestEnable = depthBoundsTestEnable;
435 }
436 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
437 {
438 D3D12_DEPTH_STENCIL_DESC D;
439 D.DepthEnable = DepthEnable;
440 D.DepthWriteMask = DepthWriteMask;
441 D.DepthFunc = DepthFunc;
442 D.StencilEnable = StencilEnable;
443 D.StencilReadMask = StencilReadMask;
444 D.StencilWriteMask = StencilWriteMask;
445 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
446 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
447 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
448 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
449 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
450 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
451 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
452 D.BackFace.StencilFunc = BackFace.StencilFunc;
453 return D;
454 }
455};
456
457//------------------------------------------------------------------------------------------------
458#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
459struct CD3DX12_DEPTH_STENCIL_DESC2 : public D3D12_DEPTH_STENCIL_DESC2
460{
461 CD3DX12_DEPTH_STENCIL_DESC2() = default;
462 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC2& o ) noexcept :
463 D3D12_DEPTH_STENCIL_DESC2( o )
464 {}
465 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept
466 {
467 DepthEnable = o.DepthEnable;
468 DepthWriteMask = o.DepthWriteMask;
469 DepthFunc = o.DepthFunc;
470 StencilEnable = o.StencilEnable;
471 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
472 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
473 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
474 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
475 FrontFace.StencilReadMask = o.StencilReadMask;
476 FrontFace.StencilWriteMask = o.StencilWriteMask;
477
478 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
479 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
480 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
481 BackFace.StencilFunc = o.BackFace.StencilFunc;
482 BackFace.StencilReadMask = o.StencilReadMask;
483 BackFace.StencilWriteMask = o.StencilWriteMask;
484 DepthBoundsTestEnable = o.DepthBoundsTestEnable;
485 }
486 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
487 {
488 DepthEnable = o.DepthEnable;
489 DepthWriteMask = o.DepthWriteMask;
490 DepthFunc = o.DepthFunc;
491 StencilEnable = o.StencilEnable;
492
493 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
494 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
495 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
496 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
497 FrontFace.StencilReadMask = o.StencilReadMask;
498 FrontFace.StencilWriteMask = o.StencilWriteMask;
499
500 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
501 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
502 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
503 BackFace.StencilFunc = o.BackFace.StencilFunc;
504 BackFace.StencilReadMask = o.StencilReadMask;
505 BackFace.StencilWriteMask = o.StencilWriteMask;
506
507 DepthBoundsTestEnable = FALSE;
508 }
509 explicit CD3DX12_DEPTH_STENCIL_DESC2( CD3DX12_DEFAULT ) noexcept
510 {
511 DepthEnable = TRUE;
512 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
513 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
514 StencilEnable = FALSE;
515 const D3D12_DEPTH_STENCILOP_DESC1 defaultStencilOp =
516 { 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 };
517 FrontFace = defaultStencilOp;
518 BackFace = defaultStencilOp;
519 DepthBoundsTestEnable = FALSE;
520 }
521 explicit CD3DX12_DEPTH_STENCIL_DESC2(
522 BOOL depthEnable,
523 D3D12_DEPTH_WRITE_MASK depthWriteMask,
524 D3D12_COMPARISON_FUNC depthFunc,
525 BOOL stencilEnable,
526 D3D12_STENCIL_OP frontStencilFailOp,
527 D3D12_STENCIL_OP frontStencilDepthFailOp,
528 D3D12_STENCIL_OP frontStencilPassOp,
529 D3D12_COMPARISON_FUNC frontStencilFunc,
530 UINT8 frontStencilReadMask,
531 UINT8 frontStencilWriteMask,
532 D3D12_STENCIL_OP backStencilFailOp,
533 D3D12_STENCIL_OP backStencilDepthFailOp,
534 D3D12_STENCIL_OP backStencilPassOp,
535 D3D12_COMPARISON_FUNC backStencilFunc,
536 UINT8 backStencilReadMask,
537 UINT8 backStencilWriteMask,
538 BOOL depthBoundsTestEnable ) noexcept
539 {
540 DepthEnable = depthEnable;
541 DepthWriteMask = depthWriteMask;
542 DepthFunc = depthFunc;
543 StencilEnable = stencilEnable;
544
545 FrontFace.StencilFailOp = frontStencilFailOp;
546 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
547 FrontFace.StencilPassOp = frontStencilPassOp;
548 FrontFace.StencilFunc = frontStencilFunc;
549 FrontFace.StencilReadMask = frontStencilReadMask;
550 FrontFace.StencilWriteMask = frontStencilWriteMask;
551
552 BackFace.StencilFailOp = backStencilFailOp;
553 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
554 BackFace.StencilPassOp = backStencilPassOp;
555 BackFace.StencilFunc = backStencilFunc;
556 BackFace.StencilReadMask = backStencilReadMask;
557 BackFace.StencilWriteMask = backStencilWriteMask;
558
559 DepthBoundsTestEnable = depthBoundsTestEnable;
560 }
561
562 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
563 {
564 D3D12_DEPTH_STENCIL_DESC D;
565 D.DepthEnable = DepthEnable;
566 D.DepthWriteMask = DepthWriteMask;
567 D.DepthFunc = DepthFunc;
568 D.StencilEnable = StencilEnable;
569 D.StencilReadMask = FrontFace.StencilReadMask;
570 D.StencilWriteMask = FrontFace.StencilWriteMask;
571 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
572 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
573 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
574 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
575 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
576 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
577 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
578 D.BackFace.StencilFunc = BackFace.StencilFunc;
579 return D;
580 }
581};
582#endif // D3D12_SDK_VERSION >= 606
583
584//------------------------------------------------------------------------------------------------
585struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
586{
587 CD3DX12_BLEND_DESC() = default;
588 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
589 D3D12_BLEND_DESC( o )
590 {}
591 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
592 {
593 AlphaToCoverageEnable = FALSE;
594 IndependentBlendEnable = FALSE;
595 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
596 {
597 FALSE,FALSE,
598 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
599 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
600 D3D12_LOGIC_OP_NOOP,
601 D3D12_COLOR_WRITE_ENABLE_ALL,
602 };
603 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
604 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
605 }
606};
607
608//------------------------------------------------------------------------------------------------
609struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
610{
611 CD3DX12_RASTERIZER_DESC() = default;
612 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
613 D3D12_RASTERIZER_DESC( o )
614 {}
615 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
616 {
617 FillMode = D3D12_FILL_MODE_SOLID;
618 CullMode = D3D12_CULL_MODE_BACK;
619 FrontCounterClockwise = FALSE;
620 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
621 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
622 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
623 DepthClipEnable = TRUE;
624 MultisampleEnable = FALSE;
625 AntialiasedLineEnable = FALSE;
626 ForcedSampleCount = 0;
627 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
628 }
629 explicit CD3DX12_RASTERIZER_DESC(
630 D3D12_FILL_MODE fillMode,
631 D3D12_CULL_MODE cullMode,
632 BOOL frontCounterClockwise,
633 INT depthBias,
634 FLOAT depthBiasClamp,
635 FLOAT slopeScaledDepthBias,
636 BOOL depthClipEnable,
637 BOOL multisampleEnable,
638 BOOL antialiasedLineEnable,
639 UINT forcedSampleCount,
640 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
641 {
642 FillMode = fillMode;
643 CullMode = cullMode;
644 FrontCounterClockwise = frontCounterClockwise;
645 DepthBias = depthBias;
646 DepthBiasClamp = depthBiasClamp;
647 SlopeScaledDepthBias = slopeScaledDepthBias;
648 DepthClipEnable = depthClipEnable;
649 MultisampleEnable = multisampleEnable;
650 AntialiasedLineEnable = antialiasedLineEnable;
651 ForcedSampleCount = forcedSampleCount;
652 ConservativeRaster = conservativeRaster;
653 }
654};
655
656
657//------------------------------------------------------------------------------------------------
658#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
659struct CD3DX12_RASTERIZER_DESC1 : public D3D12_RASTERIZER_DESC1
660{
661 CD3DX12_RASTERIZER_DESC1() = default;
662 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC1& o) noexcept :
663 D3D12_RASTERIZER_DESC1(o)
664
665 {
666 }
667 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC& o) noexcept
668 {
669 FillMode = o.FillMode;
670 CullMode = o.CullMode;
671 FrontCounterClockwise = o.FrontCounterClockwise;
672 DepthBias = static_cast<FLOAT>(o.DepthBias);
673 DepthBiasClamp = o.DepthBiasClamp;
674 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
675 DepthClipEnable = o.DepthClipEnable;
676 MultisampleEnable = o.MultisampleEnable;
677 AntialiasedLineEnable = o.AntialiasedLineEnable;
678 ForcedSampleCount = o.ForcedSampleCount;
679 ConservativeRaster = o.ConservativeRaster;
680 }
681 explicit CD3DX12_RASTERIZER_DESC1(CD3DX12_DEFAULT) noexcept
682 {
683 FillMode = D3D12_FILL_MODE_SOLID;
684 CullMode = D3D12_CULL_MODE_BACK;
685 FrontCounterClockwise = FALSE;
686 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
687 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
688 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
689 DepthClipEnable = TRUE;
690 MultisampleEnable = FALSE;
691 AntialiasedLineEnable = FALSE;
692 ForcedSampleCount = 0;
693 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
694 }
695 explicit CD3DX12_RASTERIZER_DESC1(
696 D3D12_FILL_MODE fillMode,
697 D3D12_CULL_MODE cullMode,
698 BOOL frontCounterClockwise,
699 FLOAT depthBias,
700 FLOAT depthBiasClamp,
701 FLOAT slopeScaledDepthBias,
702 BOOL depthClipEnable,
703 BOOL multisampleEnable,
704 BOOL antialiasedLineEnable,
705 UINT forcedSampleCount,
706 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
707 {
708 FillMode = fillMode;
709 CullMode = cullMode;
710 FrontCounterClockwise = frontCounterClockwise;
711 DepthBias = depthBias;
712 DepthBiasClamp = depthBiasClamp;
713 SlopeScaledDepthBias = slopeScaledDepthBias;
714 DepthClipEnable = depthClipEnable;
715 MultisampleEnable = multisampleEnable;
716 AntialiasedLineEnable = antialiasedLineEnable;
717 ForcedSampleCount = forcedSampleCount;
718 ConservativeRaster = conservativeRaster;
719 }
720
721
722 operator D3D12_RASTERIZER_DESC() const noexcept
723 {
724 D3D12_RASTERIZER_DESC o;
725
726 o.FillMode = FillMode;
727 o.CullMode = CullMode;
728 o.FrontCounterClockwise = FrontCounterClockwise;
729 o.DepthBias = static_cast<INT>(DepthBias);
730 o.DepthBiasClamp = DepthBiasClamp;
731 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
732 o.DepthClipEnable = DepthClipEnable;
733 o.MultisampleEnable = MultisampleEnable;
734 o.AntialiasedLineEnable = AntialiasedLineEnable;
735 o.ForcedSampleCount = ForcedSampleCount;
736 o.ConservativeRaster = ConservativeRaster;
737
738 return o;
739 }
740};
741#endif // D3D12_SDK_VERSION >= 608
742
743//------------------------------------------------------------------------------------------------
744#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
745struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
746{
747 CD3DX12_RASTERIZER_DESC2() = default;
748 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC2& o) noexcept :
749 D3D12_RASTERIZER_DESC2(o)
750
751 {
752 }
753 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC1& o) noexcept
754 {
755 FillMode = o.FillMode;
756 CullMode = o.CullMode;
757 FrontCounterClockwise = o.FrontCounterClockwise;
758 DepthBias = o.DepthBias;
759 DepthBiasClamp = o.DepthBiasClamp;
760 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
761 DepthClipEnable = o.DepthClipEnable;
762 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
763 if (o.MultisampleEnable)
764 {
765 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE;
766 }
767 else if (o.AntialiasedLineEnable)
768 {
769 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED;
770 }
771 ForcedSampleCount = o.ForcedSampleCount;
772 ConservativeRaster = o.ConservativeRaster;
773 }
774 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC& o) noexcept
775 : CD3DX12_RASTERIZER_DESC2(CD3DX12_RASTERIZER_DESC1(o))
776 {
777 }
778 explicit CD3DX12_RASTERIZER_DESC2(CD3DX12_DEFAULT) noexcept
779 {
780 FillMode = D3D12_FILL_MODE_SOLID;
781 CullMode = D3D12_CULL_MODE_BACK;
782 FrontCounterClockwise = FALSE;
783 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
784 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
785 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
786 DepthClipEnable = TRUE;
787 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
788 ForcedSampleCount = 0;
789 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
790 }
791 explicit CD3DX12_RASTERIZER_DESC2(
792 D3D12_FILL_MODE fillMode,
793 D3D12_CULL_MODE cullMode,
794 BOOL frontCounterClockwise,
795 FLOAT depthBias,
796 FLOAT depthBiasClamp,
797 FLOAT slopeScaledDepthBias,
798 BOOL depthClipEnable,
799 D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode,
800 UINT forcedSampleCount,
801 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
802 {
803 FillMode = fillMode;
804 CullMode = cullMode;
805 FrontCounterClockwise = frontCounterClockwise;
806 DepthBias = depthBias;
807 DepthBiasClamp = depthBiasClamp;
808 SlopeScaledDepthBias = slopeScaledDepthBias;
809 DepthClipEnable = depthClipEnable;
810 LineRasterizationMode = lineRasterizationMode;
811 ForcedSampleCount = forcedSampleCount;
812 ConservativeRaster = conservativeRaster;
813 }
814
815
816 operator D3D12_RASTERIZER_DESC1() const noexcept
817 {
818 D3D12_RASTERIZER_DESC1 o;
819
820 o.FillMode = FillMode;
821 o.CullMode = CullMode;
822 o.FrontCounterClockwise = FrontCounterClockwise;
823 o.DepthBias = DepthBias;
824 o.DepthBiasClamp = DepthBiasClamp;
825 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
826 o.DepthClipEnable = DepthClipEnable;
827 o.MultisampleEnable = FALSE;
828 o.AntialiasedLineEnable = FALSE;
829 if (LineRasterizationMode == D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED)
830 {
831 o.AntialiasedLineEnable = TRUE;
832 }
833 else if (LineRasterizationMode != D3D12_LINE_RASTERIZATION_MODE_ALIASED)
834 {
835 o.MultisampleEnable = TRUE;
836 }
837 o.ForcedSampleCount = ForcedSampleCount;
838 o.ConservativeRaster = ConservativeRaster;
839
840 return o;
841 }
842 operator D3D12_RASTERIZER_DESC() const noexcept
843 {
844 return static_cast<D3D12_RASTERIZER_DESC>(CD3DX12_RASTERIZER_DESC1(static_cast<D3D12_RASTERIZER_DESC1>(*this)));
845 }
846};
847#endif // D3D12_SDK_VERSION >= 610
848
849//------------------------------------------------------------------------------------------------
850struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
851{
852 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
853 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
854 D3D12_RESOURCE_ALLOCATION_INFO( o )
855 {}
856 CD3DX12_RESOURCE_ALLOCATION_INFO(
857 UINT64 size,
858 UINT64 alignment ) noexcept
859 {
860 SizeInBytes = size;
861 Alignment = alignment;
862 }
863};
864
865//------------------------------------------------------------------------------------------------
866struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
867{
868 CD3DX12_HEAP_PROPERTIES() = default;
869 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
870 D3D12_HEAP_PROPERTIES(o)
871 {}
872 CD3DX12_HEAP_PROPERTIES(
873 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
874 D3D12_MEMORY_POOL memoryPoolPreference,
875 UINT creationNodeMask = 1,
876 UINT nodeMask = 1 ) noexcept
877 {
878 Type = D3D12_HEAP_TYPE_CUSTOM;
879 CPUPageProperty = cpuPageProperty;
880 MemoryPoolPreference = memoryPoolPreference;
881 CreationNodeMask = creationNodeMask;
882 VisibleNodeMask = nodeMask;
883 }
884 explicit CD3DX12_HEAP_PROPERTIES(
885 D3D12_HEAP_TYPE type,
886 UINT creationNodeMask = 1,
887 UINT nodeMask = 1 ) noexcept
888 {
889 Type = type;
890 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
891 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
892 CreationNodeMask = creationNodeMask;
893 VisibleNodeMask = nodeMask;
894 }
895 bool IsCPUAccessible() const noexcept
896 {
897 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK
898#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
899 || Type == D3D12_HEAP_TYPE_GPU_UPLOAD
900#endif
901 || (Type == D3D12_HEAP_TYPE_CUSTOM &&
902 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
903 }
904};
905inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
906{
907 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
908 l.MemoryPoolPreference == r.MemoryPoolPreference &&
909 l.CreationNodeMask == r.CreationNodeMask &&
910 l.VisibleNodeMask == r.VisibleNodeMask;
911}
912inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
913{ return !( l == r ); }
914
915//------------------------------------------------------------------------------------------------
916struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
917{
918 CD3DX12_HEAP_DESC() = default;
919 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
920 D3D12_HEAP_DESC(o)
921 {}
922 CD3DX12_HEAP_DESC(
923 UINT64 size,
924 D3D12_HEAP_PROPERTIES properties,
925 UINT64 alignment = 0,
926 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
927 {
928 SizeInBytes = size;
929 Properties = properties;
930 Alignment = alignment;
931 Flags = flags;
932 }
933 CD3DX12_HEAP_DESC(
934 UINT64 size,
935 D3D12_HEAP_TYPE type,
936 UINT64 alignment = 0,
937 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
938 {
939 SizeInBytes = size;
940 Properties = CD3DX12_HEAP_PROPERTIES( type );
941 Alignment = alignment;
942 Flags = flags;
943 }
944 CD3DX12_HEAP_DESC(
945 UINT64 size,
946 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
947 D3D12_MEMORY_POOL memoryPoolPreference,
948 UINT64 alignment = 0,
949 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
950 {
951 SizeInBytes = size;
952 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
953 Alignment = alignment;
954 Flags = flags;
955 }
956 CD3DX12_HEAP_DESC(
957 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
958 D3D12_HEAP_PROPERTIES properties,
959 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
960 {
961 SizeInBytes = resAllocInfo.SizeInBytes;
962 Properties = properties;
963 Alignment = resAllocInfo.Alignment;
964 Flags = flags;
965 }
966 CD3DX12_HEAP_DESC(
967 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
968 D3D12_HEAP_TYPE type,
969 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
970 {
971 SizeInBytes = resAllocInfo.SizeInBytes;
972 Properties = CD3DX12_HEAP_PROPERTIES( type );
973 Alignment = resAllocInfo.Alignment;
974 Flags = flags;
975 }
976 CD3DX12_HEAP_DESC(
977 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
978 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
979 D3D12_MEMORY_POOL memoryPoolPreference,
980 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
981 {
982 SizeInBytes = resAllocInfo.SizeInBytes;
983 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
984 Alignment = resAllocInfo.Alignment;
985 Flags = flags;
986 }
987 bool IsCPUAccessible() const noexcept
988 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
989};
990inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
991{
992 return l.SizeInBytes == r.SizeInBytes &&
993 l.Properties == r.Properties &&
994 l.Alignment == r.Alignment &&
995 l.Flags == r.Flags;
996}
997inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
998{ return !( l == r ); }
999
1000//------------------------------------------------------------------------------------------------
1001struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
1002{
1003 CD3DX12_CLEAR_VALUE() = default;
1004 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
1005 D3D12_CLEAR_VALUE(o)
1006 {}
1007 CD3DX12_CLEAR_VALUE(
1008 DXGI_FORMAT format,
1009 const FLOAT color[4] ) noexcept
1010 {
1011 Format = format;
1012 memcpy( Color, color, sizeof( Color ) );
1013 }
1014 CD3DX12_CLEAR_VALUE(
1015 DXGI_FORMAT format,
1016 FLOAT depth,
1017 UINT8 stencil ) noexcept
1018 {
1019 Format = format;
1020 memset( &Color, 0, sizeof( Color ) );
1021 /* Use memcpy to preserve NAN values */
1022 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
1023 DepthStencil.Stencil = stencil;
1024 }
1025};
1026
1027//------------------------------------------------------------------------------------------------
1028inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
1029{
1030 if (a.Format != b.Format) return false;
1031 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
1032 || a.Format == DXGI_FORMAT_D16_UNORM
1033 || a.Format == DXGI_FORMAT_D32_FLOAT
1034 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
1035 {
1036 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
1037 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
1038 } else {
1039 return (a.Color[0] == b.Color[0]) &&
1040 (a.Color[1] == b.Color[1]) &&
1041 (a.Color[2] == b.Color[2]) &&
1042 (a.Color[3] == b.Color[3]);
1043 }
1044}
1045
1046//------------------------------------------------------------------------------------------------
1047struct CD3DX12_RANGE : public D3D12_RANGE
1048{
1049 CD3DX12_RANGE() = default;
1050 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
1051 D3D12_RANGE(o)
1052 {}
1053 CD3DX12_RANGE(
1054 SIZE_T begin,
1055 SIZE_T end ) noexcept
1056 {
1057 Begin = begin;
1058 End = end;
1059 }
1060};
1061
1062//------------------------------------------------------------------------------------------------
1063struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
1064{
1065 CD3DX12_RANGE_UINT64() = default;
1066 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
1067 D3D12_RANGE_UINT64(o)
1068 {}
1069 CD3DX12_RANGE_UINT64(
1070 UINT64 begin,
1071 UINT64 end ) noexcept
1072 {
1073 Begin = begin;
1074 End = end;
1075 }
1076};
1077
1078//------------------------------------------------------------------------------------------------
1079struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
1080{
1081 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
1082 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
1083 D3D12_SUBRESOURCE_RANGE_UINT64(o)
1084 {}
1085 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1086 UINT subresource,
1087 const D3D12_RANGE_UINT64& range ) noexcept
1088 {
1089 Subresource = subresource;
1090 Range = range;
1091 }
1092 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1093 UINT subresource,
1094 UINT64 begin,
1095 UINT64 end ) noexcept
1096 {
1097 Subresource = subresource;
1098 Range.Begin = begin;
1099 Range.End = end;
1100 }
1101};
1102
1103//------------------------------------------------------------------------------------------------
1104struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
1105{
1106 CD3DX12_SHADER_BYTECODE() = default;
1107 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
1108 D3D12_SHADER_BYTECODE(o)
1109 {}
1110 CD3DX12_SHADER_BYTECODE(
1111 _In_ ID3DBlob* pShaderBlob ) noexcept
1112 {
1113 pShaderBytecode = pShaderBlob->GetBufferPointer();
1114 BytecodeLength = pShaderBlob->GetBufferSize();
1115 }
1116 CD3DX12_SHADER_BYTECODE(
1117 const void* _pShaderBytecode,
1118 SIZE_T bytecodeLength ) noexcept
1119 {
1120 pShaderBytecode = _pShaderBytecode;
1121 BytecodeLength = bytecodeLength;
1122 }
1123};
1124
1125//------------------------------------------------------------------------------------------------
1126struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
1127{
1128 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
1129 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
1130 D3D12_TILED_RESOURCE_COORDINATE(o)
1131 {}
1132 CD3DX12_TILED_RESOURCE_COORDINATE(
1133 UINT x,
1134 UINT y,
1135 UINT z,
1136 UINT subresource ) noexcept
1137 {
1138 X = x;
1139 Y = y;
1140 Z = z;
1141 Subresource = subresource;
1142 }
1143};
1144
1145//------------------------------------------------------------------------------------------------
1146struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
1147{
1148 CD3DX12_TILE_REGION_SIZE() = default;
1149 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
1150 D3D12_TILE_REGION_SIZE(o)
1151 {}
1152 CD3DX12_TILE_REGION_SIZE(
1153 UINT numTiles,
1154 BOOL useBox,
1155 UINT width,
1156 UINT16 height,
1157 UINT16 depth ) noexcept
1158 {
1159 NumTiles = numTiles;
1160 UseBox = useBox;
1161 Width = width;
1162 Height = height;
1163 Depth = depth;
1164 }
1165};
1166
1167//------------------------------------------------------------------------------------------------
1168struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
1169{
1170 CD3DX12_SUBRESOURCE_TILING() = default;
1171 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
1172 D3D12_SUBRESOURCE_TILING(o)
1173 {}
1174 CD3DX12_SUBRESOURCE_TILING(
1175 UINT widthInTiles,
1176 UINT16 heightInTiles,
1177 UINT16 depthInTiles,
1178 UINT startTileIndexInOverallResource ) noexcept
1179 {
1180 WidthInTiles = widthInTiles;
1181 HeightInTiles = heightInTiles;
1182 DepthInTiles = depthInTiles;
1183 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1184 }
1185};
1186
1187//------------------------------------------------------------------------------------------------
1188struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
1189{
1190 CD3DX12_TILE_SHAPE() = default;
1191 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
1192 D3D12_TILE_SHAPE(o)
1193 {}
1194 CD3DX12_TILE_SHAPE(
1195 UINT widthInTexels,
1196 UINT heightInTexels,
1197 UINT depthInTexels ) noexcept
1198 {
1199 WidthInTexels = widthInTexels;
1200 HeightInTexels = heightInTexels;
1201 DepthInTexels = depthInTexels;
1202 }
1203};
1204
1205//------------------------------------------------------------------------------------------------
1206struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
1207{
1208 CD3DX12_PACKED_MIP_INFO() = default;
1209 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
1210 D3D12_PACKED_MIP_INFO(o)
1211 {}
1212 CD3DX12_PACKED_MIP_INFO(
1213 UINT8 numStandardMips,
1214 UINT8 numPackedMips,
1215 UINT numTilesForPackedMips,
1216 UINT startTileIndexInOverallResource ) noexcept
1217 {
1218 NumStandardMips = numStandardMips;
1219 NumPackedMips = numPackedMips;
1220 NumTilesForPackedMips = numTilesForPackedMips;
1221 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1222 }
1223};
1224
1225//------------------------------------------------------------------------------------------------
1226struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
1227{
1228 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
1229 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
1230 D3D12_SUBRESOURCE_FOOTPRINT(o)
1231 {}
1232 CD3DX12_SUBRESOURCE_FOOTPRINT(
1233 DXGI_FORMAT format,
1234 UINT width,
1235 UINT height,
1236 UINT depth,
1237 UINT rowPitch ) noexcept
1238 {
1239 Format = format;
1240 Width = width;
1241 Height = height;
1242 Depth = depth;
1243 RowPitch = rowPitch;
1244 }
1245 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
1246 const D3D12_RESOURCE_DESC& resDesc,
1247 UINT rowPitch ) noexcept
1248 {
1249 Format = resDesc.Format;
1250 Width = UINT( resDesc.Width );
1251 Height = resDesc.Height;
1252 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1u);
1253 RowPitch = rowPitch;
1254 }
1255};
1256
1257//------------------------------------------------------------------------------------------------
1258struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
1259{
1260 CD3DX12_TEXTURE_COPY_LOCATION() = default;
1261 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
1262 D3D12_TEXTURE_COPY_LOCATION(o)
1263 {}
1264 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
1265 {
1266 pResource = pRes;
1267 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1268 PlacedFootprint = {};
1269 }
1270 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
1271 {
1272 pResource = pRes;
1273 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
1274 PlacedFootprint = Footprint;
1275 }
1276 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
1277 {
1278 pResource = pRes;
1279 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1280 PlacedFootprint = {};
1281 SubresourceIndex = Sub;
1282 }
1283};
1284
1285//------------------------------------------------------------------------------------------------
1286constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1287{
1288 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1289}
1290
1291//------------------------------------------------------------------------------------------------
1292inline UINT8 D3D12GetFormatPlaneCount(
1293 _In_ ID3D12Device* pDevice,
1294 DXGI_FORMAT Format
1295 ) noexcept
1296{
1297 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1298 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1299 {
1300 return 0;
1301 }
1302 return formatInfo.PlaneCount;
1303}
1304
1305//------------------------------------------------------------------------------------------------
1306struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1307{
1308 CD3DX12_RESOURCE_DESC() = default;
1309 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1310 D3D12_RESOURCE_DESC( o )
1311 {}
1312 CD3DX12_RESOURCE_DESC(
1313 D3D12_RESOURCE_DIMENSION dimension,
1314 UINT64 alignment,
1315 UINT64 width,
1316 UINT height,
1317 UINT16 depthOrArraySize,
1318 UINT16 mipLevels,
1319 DXGI_FORMAT format,
1320 UINT sampleCount,
1321 UINT sampleQuality,
1322 D3D12_TEXTURE_LAYOUT layout,
1323 D3D12_RESOURCE_FLAGS flags ) noexcept
1324 {
1325 Dimension = dimension;
1326 Alignment = alignment;
1327 Width = width;
1328 Height = height;
1329 DepthOrArraySize = depthOrArraySize;
1330 MipLevels = mipLevels;
1331 Format = format;
1332 SampleDesc.Count = sampleCount;
1333 SampleDesc.Quality = sampleQuality;
1334 Layout = layout;
1335 Flags = flags;
1336 }
1337 static inline CD3DX12_RESOURCE_DESC Buffer(
1338 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1339 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1340 {
1341 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1342 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1343 }
1344 static inline CD3DX12_RESOURCE_DESC Buffer(
1345 UINT64 width,
1346 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1347 UINT64 alignment = 0 ) noexcept
1348 {
1349 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1350 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1351 }
1352 static inline CD3DX12_RESOURCE_DESC Tex1D(
1353 DXGI_FORMAT format,
1354 UINT64 width,
1355 UINT16 arraySize = 1,
1356 UINT16 mipLevels = 0,
1357 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1358 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1359 UINT64 alignment = 0 ) noexcept
1360 {
1361 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1362 mipLevels, format, 1, 0, layout, flags );
1363 }
1364 static inline CD3DX12_RESOURCE_DESC Tex2D(
1365 DXGI_FORMAT format,
1366 UINT64 width,
1367 UINT height,
1368 UINT16 arraySize = 1,
1369 UINT16 mipLevels = 0,
1370 UINT sampleCount = 1,
1371 UINT sampleQuality = 0,
1372 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1373 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1374 UINT64 alignment = 0 ) noexcept
1375 {
1376 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1377 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1378 }
1379 static inline CD3DX12_RESOURCE_DESC Tex3D(
1380 DXGI_FORMAT format,
1381 UINT64 width,
1382 UINT height,
1383 UINT16 depth,
1384 UINT16 mipLevels = 0,
1385 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1386 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1387 UINT64 alignment = 0 ) noexcept
1388 {
1389 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1390 mipLevels, format, 1, 0, layout, flags );
1391 }
1392 inline UINT16 Depth() const noexcept
1393 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1394 inline UINT16 ArraySize() const noexcept
1395 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1396 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1397 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1398 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1399 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1400 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1401 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1402};
1403inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1404{
1405 return l.Dimension == r.Dimension &&
1406 l.Alignment == r.Alignment &&
1407 l.Width == r.Width &&
1408 l.Height == r.Height &&
1409 l.DepthOrArraySize == r.DepthOrArraySize &&
1410 l.MipLevels == r.MipLevels &&
1411 l.Format == r.Format &&
1412 l.SampleDesc.Count == r.SampleDesc.Count &&
1413 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1414 l.Layout == r.Layout &&
1415 l.Flags == r.Flags;
1416}
1417inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1418{ return !( l == r ); }
1419
1420//------------------------------------------------------------------------------------------------
1421struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1422{
1423 CD3DX12_RESOURCE_DESC1() = default;
1424 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1425 D3D12_RESOURCE_DESC1( o )
1426 {}
1427 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC& o ) noexcept
1428 {
1429 Dimension = o.Dimension;
1430 Alignment = o.Alignment;
1431 Width = o.Width;
1432 Height = o.Height;
1433 DepthOrArraySize = o.DepthOrArraySize;
1434 MipLevels = o.MipLevels;
1435 Format = o.Format;
1436 SampleDesc = o.SampleDesc;
1437 Layout = o.Layout;
1438 Flags = o.Flags;
1439 SamplerFeedbackMipRegion = {};
1440 }
1441 CD3DX12_RESOURCE_DESC1(
1442 D3D12_RESOURCE_DIMENSION dimension,
1443 UINT64 alignment,
1444 UINT64 width,
1445 UINT height,
1446 UINT16 depthOrArraySize,
1447 UINT16 mipLevels,
1448 DXGI_FORMAT format,
1449 UINT sampleCount,
1450 UINT sampleQuality,
1451 D3D12_TEXTURE_LAYOUT layout,
1452 D3D12_RESOURCE_FLAGS flags,
1453 UINT samplerFeedbackMipRegionWidth = 0,
1454 UINT samplerFeedbackMipRegionHeight = 0,
1455 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1456 {
1457 Dimension = dimension;
1458 Alignment = alignment;
1459 Width = width;
1460 Height = height;
1461 DepthOrArraySize = depthOrArraySize;
1462 MipLevels = mipLevels;
1463 Format = format;
1464 SampleDesc.Count = sampleCount;
1465 SampleDesc.Quality = sampleQuality;
1466 Layout = layout;
1467 Flags = flags;
1468 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1469 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1470 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1471 }
1472
1473 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1474 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1475 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1476 {
1477 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1478 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1479 }
1480 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1481 UINT64 width,
1482 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1483 UINT64 alignment = 0 ) noexcept
1484 {
1485 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1486 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1487 }
1488 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1489 DXGI_FORMAT format,
1490 UINT64 width,
1491 UINT16 arraySize = 1,
1492 UINT16 mipLevels = 0,
1493 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1494 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1495 UINT64 alignment = 0 ) noexcept
1496 {
1497 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1498 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1499 }
1500 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1501 DXGI_FORMAT format,
1502 UINT64 width,
1503 UINT height,
1504 UINT16 arraySize = 1,
1505 UINT16 mipLevels = 0,
1506 UINT sampleCount = 1,
1507 UINT sampleQuality = 0,
1508 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1509 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1510 UINT64 alignment = 0,
1511 UINT samplerFeedbackMipRegionWidth = 0,
1512 UINT samplerFeedbackMipRegionHeight = 0,
1513 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1514 {
1515 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1516 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1517 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1518 }
1519 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1520 DXGI_FORMAT format,
1521 UINT64 width,
1522 UINT height,
1523 UINT16 depth,
1524 UINT16 mipLevels = 0,
1525 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1526 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1527 UINT64 alignment = 0 ) noexcept
1528 {
1529 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1530 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1531 }
1532 inline UINT16 Depth() const noexcept
1533 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1534 inline UINT16 ArraySize() const noexcept
1535 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1536 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1537 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1538 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1539 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1540 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1541 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1542};
1543inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1544{
1545 return l.Dimension == r.Dimension &&
1546 l.Alignment == r.Alignment &&
1547 l.Width == r.Width &&
1548 l.Height == r.Height &&
1549 l.DepthOrArraySize == r.DepthOrArraySize &&
1550 l.MipLevels == r.MipLevels &&
1551 l.Format == r.Format &&
1552 l.SampleDesc.Count == r.SampleDesc.Count &&
1553 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1554 l.Layout == r.Layout &&
1555 l.Flags == r.Flags &&
1556 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1557 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1558 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1559}
1560inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1561{ return !( l == r ); }
1562
1563//------------------------------------------------------------------------------------------------
1564// Fills in the mipmap and alignment values of pDesc when either members are zero
1565// Used to replace an implicit field to an explicit (0 mip map = max mip map level)
1566// If expansion has occured, returns LclDesc, else returns the original pDesc
1567inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
1568 CD3DX12_RESOURCE_DESC1& LclDesc,
1569 const CD3DX12_RESOURCE_DESC1* pDesc,
1570 const bool tightAlignmentSupported = false,
1571 const bool alignAsCommitted = false)
1572{
1573 // Expand mip levels:
1574 if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
1575 {
1576 LclDesc = *pDesc;
1577 if (pDesc->MipLevels == 0)
1578 {
1579 auto MaxMipLevels = [](UINT64 uiMaxDimension) -> UINT16
1580 {
1581 UINT16 uiRet = 0;
1582 while (uiMaxDimension > 0)
1583 {
1584 uiRet++;
1585 uiMaxDimension >>= 1;
1586 }
1587 return uiRet;
1588 };
1589 auto Max = [](UINT64 const& a, UINT64 const& b)
1590 {
1591 return (a < b) ? b : a;
1592 };
1593
1594 LclDesc.MipLevels = MaxMipLevels(
1595 Max(LclDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? LclDesc.DepthOrArraySize : 1,
1596 Max(LclDesc.Width, LclDesc.Height)));
1597 }
1598 if (pDesc->Alignment == 0)
1599 {
1600 if (pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE
1601 || pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE
1602 )
1603 {
1604 LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
1605 }
1606 else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
1607 || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
1608 {
1609 LclDesc.Alignment =
1610 (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
1611 }
1612 else
1613 {
1614 // 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
1615 if(alignAsCommitted)
1616 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
1617 else
1618 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
1619 }
1620 }
1621 return &LclDesc;
1622 }
1623 else
1624 {
1625 return pDesc;
1626 }
1627}
1628
1629
1630//------------------------------------------------------------------------------------------------
1631struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
1632{
1633 CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
1634 explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
1635 D3D12_SHADER_RESOURCE_VIEW_DESC(o)
1636 {}
1637
1638 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
1639 UINT NumElements,
1640 UINT StructureByteStride,
1641 UINT64 FirstElement = 0) noexcept
1642 {
1643 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1644 desc.Format = DXGI_FORMAT_UNKNOWN;
1645 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1646 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1647 desc.Buffer.FirstElement = FirstElement;
1648 desc.Buffer.NumElements = NumElements;
1649 desc.Buffer.StructureByteStride = StructureByteStride;
1650 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1651 return desc;
1652 }
1653
1654 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
1655 UINT NumElements,
1656 UINT64 FirstElement = 0) noexcept
1657 {
1658 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1659 desc.Format = DXGI_FORMAT_R32_UINT;
1660 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1661 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1662 desc.Buffer.FirstElement = FirstElement;
1663 desc.Buffer.NumElements = NumElements;
1664 desc.Buffer.StructureByteStride = 0;
1665 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
1666 return desc;
1667 }
1668
1669 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
1670 DXGI_FORMAT Format,
1671 UINT NumElements,
1672 UINT64 FirstElement = 0,
1673 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1674 {
1675 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1676 desc.Format = Format;
1677 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1678 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1679 desc.Buffer.FirstElement = FirstElement;
1680 desc.Buffer.NumElements = NumElements;
1681 desc.Buffer.StructureByteStride = 0;
1682 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1683 return desc;
1684 }
1685
1686 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
1687 DXGI_FORMAT Format,
1688 UINT MipLevels = -1,
1689 UINT MostDetailedMip = 0,
1690 FLOAT ResourceMinLODClamp = 0.0f,
1691 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1692 {
1693 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1694 desc.Format = Format;
1695 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
1696 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1697 desc.Texture1D.MostDetailedMip = MostDetailedMip;
1698 desc.Texture1D.MipLevels = MipLevels;
1699 desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
1700 return desc;
1701 }
1702
1703 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
1704 DXGI_FORMAT Format,
1705 UINT ArraySize = -1,
1706 UINT MipLevels = -1,
1707 UINT FirstArraySlice = 0,
1708 UINT MostDetailedMip = 0,
1709 FLOAT ResourceMinLODClamp = 0.0f,
1710 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1711 {
1712 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1713 desc.Format = Format;
1714 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
1715 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1716 desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
1717 desc.Texture1DArray.MipLevels = MipLevels;
1718 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1719 desc.Texture1DArray.ArraySize = ArraySize;
1720 desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1721 return desc;
1722 }
1723
1724 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
1725 DXGI_FORMAT Format,
1726 UINT MipLevels = -1,
1727 UINT MostDetailedMip = 0,
1728 UINT PlaneSlice = 0,
1729 FLOAT ResourceMinLODClamp = 0.0f,
1730 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1731 {
1732 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1733 desc.Format = Format;
1734 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
1735 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1736 desc.Texture2D.MostDetailedMip = MostDetailedMip;
1737 desc.Texture2D.MipLevels = MipLevels;
1738 desc.Texture2D.PlaneSlice = PlaneSlice;
1739 desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
1740 return desc;
1741 }
1742
1743 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
1744 DXGI_FORMAT Format,
1745 UINT ArraySize = -1,
1746 UINT MipLevels = -1,
1747 UINT FirstArraySlice = 0,
1748 UINT MostDetailedMip = 0,
1749 UINT PlaneSlice = 0,
1750 FLOAT ResourceMinLODClamp = 0.0f,
1751 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1752 {
1753 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1754 desc.Format = Format;
1755 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
1756 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1757 desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
1758 desc.Texture2DArray.MipLevels = MipLevels;
1759 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1760 desc.Texture2DArray.ArraySize = ArraySize;
1761 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1762 desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1763 return desc;
1764 }
1765
1766 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
1767 DXGI_FORMAT Format,
1768 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1769 {
1770 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1771 desc.Format = Format;
1772 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
1773 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1774 // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1775 return desc;
1776 }
1777
1778 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
1779 DXGI_FORMAT Format,
1780 UINT ArraySize,
1781 UINT FirstArraySlice = 0,
1782 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1783 {
1784 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1785 desc.Format = Format;
1786 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
1787 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1788 desc.Texture2DMSArray.ArraySize = ArraySize;
1789 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1790 return desc;
1791 }
1792
1793 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
1794 DXGI_FORMAT Format,
1795 UINT MipLevels = -1,
1796 UINT MostDetailedMip = 0,
1797 FLOAT ResourceMinLODClamp = 0.0f,
1798 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1799 {
1800 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1801 desc.Format = Format;
1802 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
1803 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1804 desc.Texture3D.MostDetailedMip = MostDetailedMip;
1805 desc.Texture3D.MipLevels = MipLevels;
1806 desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
1807 return desc;
1808 }
1809
1810 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
1811 DXGI_FORMAT Format,
1812 UINT MipLevels = -1,
1813 UINT MostDetailedMip = 0,
1814 FLOAT ResourceMinLODClamp = 0.0f,
1815 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1816 {
1817 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1818 desc.Format = Format;
1819 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
1820 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1821 desc.TextureCube.MostDetailedMip = MostDetailedMip;
1822 desc.TextureCube.MipLevels = MipLevels;
1823 desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
1824 return desc;
1825 }
1826
1827 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
1828 DXGI_FORMAT Format,
1829 UINT NumCubes,
1830 UINT MipLevels = -1,
1831 UINT First2DArrayFace = 0,
1832 UINT MostDetailedMip = 0,
1833 FLOAT ResourceMinLODClamp = 0.0f,
1834 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1835 {
1836 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1837 desc.Format = Format;
1838 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
1839 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1840 desc.TextureCubeArray.NumCubes = NumCubes;
1841 desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
1842 desc.TextureCubeArray.MipLevels = MipLevels;
1843 desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
1844 desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
1845 return desc;
1846 }
1847
1848 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
1849 D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
1850 {
1851 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1852 desc.Format = DXGI_FORMAT_UNKNOWN;
1853 desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
1854 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1855 desc.RaytracingAccelerationStructure.Location = Location;
1856 return desc;
1857 }
1858};
1859
1860//------------------------------------------------------------------------------------------------
1861struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
1862{
1863 CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
1864 explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
1865 D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
1866 {}
1867
1868 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
1869 UINT NumElements,
1870 UINT StructureByteStride,
1871 UINT64 FirstElement = 0,
1872 UINT64 CounterOffsetInBytes = 0) noexcept
1873 {
1874 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1875 desc.Format = DXGI_FORMAT_UNKNOWN;
1876 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1877 desc.Buffer.FirstElement = FirstElement;
1878 desc.Buffer.NumElements = NumElements;
1879 desc.Buffer.StructureByteStride = StructureByteStride;
1880 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1881 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1882 return desc;
1883 }
1884
1885 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
1886 UINT NumElements,
1887 UINT64 FirstElement = 0,
1888 UINT64 CounterOffsetInBytes = 0) noexcept
1889 {
1890 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1891 desc.Format = DXGI_FORMAT_R32_UINT;
1892 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1893 desc.Buffer.FirstElement = FirstElement;
1894 desc.Buffer.NumElements = NumElements;
1895 desc.Buffer.StructureByteStride = 0;
1896 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
1897 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1898 return desc;
1899 }
1900
1901 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
1902 DXGI_FORMAT Format,
1903 UINT NumElements,
1904 UINT64 FirstElement = 0,
1905 UINT64 CounterOffsetInBytes = 0) noexcept
1906 {
1907 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1908 desc.Format = Format;
1909 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1910 desc.Buffer.FirstElement = FirstElement;
1911 desc.Buffer.NumElements = NumElements;
1912 desc.Buffer.StructureByteStride = 0;
1913 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1914 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1915 return desc;
1916 }
1917
1918 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
1919 DXGI_FORMAT Format,
1920 UINT MipSlice = 0) noexcept
1921 {
1922 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1923 desc.Format = Format;
1924 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
1925 desc.Texture1D.MipSlice = MipSlice;
1926 return desc;
1927 }
1928
1929 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
1930 DXGI_FORMAT Format,
1931 UINT ArraySize = -1,
1932 UINT FirstArraySlice = 0,
1933 UINT MipSlice = 0) noexcept
1934 {
1935 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1936 desc.Format = Format;
1937 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
1938 desc.Texture1DArray.MipSlice = MipSlice;
1939 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1940 desc.Texture1DArray.ArraySize = ArraySize;
1941 return desc;
1942 }
1943
1944 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
1945 DXGI_FORMAT Format,
1946 UINT MipSlice = 0,
1947 UINT PlaneSlice = 0) noexcept
1948 {
1949 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1950 desc.Format = Format;
1951 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
1952 desc.Texture2D.MipSlice = MipSlice;
1953 desc.Texture2D.PlaneSlice = PlaneSlice;
1954 return desc;
1955 }
1956
1957 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
1958 DXGI_FORMAT Format,
1959 UINT ArraySize = -1,
1960 UINT FirstArraySlice = 0,
1961 UINT MipSlice = 0,
1962 UINT PlaneSlice = 0) noexcept
1963 {
1964 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1965 desc.Format = Format;
1966 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
1967 desc.Texture2DArray.MipSlice = MipSlice;
1968 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1969 desc.Texture2DArray.ArraySize = ArraySize;
1970 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1971 return desc;
1972 }
1973
1974 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
1975 DXGI_FORMAT Format) noexcept
1976 {
1977 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1978 desc.Format = Format;
1979 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
1980 //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1981 return desc;
1982 }
1983
1984 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
1985 DXGI_FORMAT Format,
1986 UINT ArraySize = -1,
1987 UINT FirstArraySlice = 0) noexcept
1988 {
1989 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1990 desc.Format = Format;
1991 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
1992 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1993 desc.Texture2DMSArray.ArraySize = ArraySize;
1994 return desc;
1995 }
1996
1997 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
1998 DXGI_FORMAT Format,
1999 UINT WSize = -1,
2000 UINT FirstWSlice = 0,
2001 UINT MipSlice = 0) noexcept
2002 {
2003 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
2004 desc.Format = Format;
2005 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
2006 desc.Texture3D.MipSlice = MipSlice;
2007 desc.Texture3D.FirstWSlice = FirstWSlice;
2008 desc.Texture3D.WSize = WSize;
2009 return desc;
2010 }
2011};
2012
2013//------------------------------------------------------------------------------------------------
2014struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
2015{
2016 CD3DX12_VIEW_INSTANCING_DESC() = default;
2017 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
2018 D3D12_VIEW_INSTANCING_DESC( o )
2019 {}
2020 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
2021 {
2022 ViewInstanceCount = 0;
2023 pViewInstanceLocations = nullptr;
2024 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
2025 }
2026 explicit CD3DX12_VIEW_INSTANCING_DESC(
2027 UINT InViewInstanceCount,
2028 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
2029 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
2030 {
2031 ViewInstanceCount = InViewInstanceCount;
2032 pViewInstanceLocations = InViewInstanceLocations;
2033 Flags = InFlags;
2034 }
2035};
2036
2037//------------------------------------------------------------------------------------------------
2038struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2039{
2040 CD3DX12_RT_FORMAT_ARRAY() = default;
2041 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2042 : D3D12_RT_FORMAT_ARRAY(o)
2043 {}
2044 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2045 {
2046 NumRenderTargets = NumFormats;
2047 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2048 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2049 }
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2054{
2055 CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
2056 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
2057 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
2058 {
2059 }
2060 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
2061 {
2062 pSerializedBlob = nullptr;
2063 SerializedBlobSizeInBytes = 0;
2064 }
2065 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
2066 {
2067 pSerializedBlob = pData;
2068 SerializedBlobSizeInBytes = size;
2069 }
2070};
2071
2072
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h
new file mode 100644
index 0000000..2b74d70
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h
@@ -0,0 +1,12 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10struct CD3DX12_DEFAULT {};
11extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
12
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h
new file mode 100644
index 0000000..456583b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h
@@ -0,0 +1,1718 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//------------------------------------------------------------------------------------------------
19// Pipeline State Stream Helpers
20//------------------------------------------------------------------------------------------------
21
22//------------------------------------------------------------------------------------------------
23// Stream Subobjects, i.e. elements of a stream
24
25struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
26struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
27
28#ifdef _MSC_VER
29#pragma warning(push)
30#pragma warning(disable : 4324)
31#endif
32template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
33class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
34{
35private:
36 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
37 InnerStructType pssInner;
38public:
39 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type), pssInner(DefaultArg()) {}
40 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
41 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
42 operator InnerStructType const&() const noexcept { return pssInner; }
43 operator InnerStructType&() noexcept { return pssInner; }
44 InnerStructType* operator&() noexcept { return &pssInner; }
45 InnerStructType const* operator&() const noexcept { return &pssInner; }
46};
47#ifdef _MSC_VER
48#pragma warning(pop)
49#endif
50typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
51typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
52typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
53typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
54typedef 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;
55typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
56typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
57typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
58typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
59typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
60typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
61typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
62typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
63typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
64typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
65typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
66typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
67typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
69typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
70#endif
71typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
72typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
73#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
74typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
75#endif
76#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
77typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
78#endif
79typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
80typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
81typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
82typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
83typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
84#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
85typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT<CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
86#endif
87
88//------------------------------------------------------------------------------------------------
89// Stream Parser Helpers
90
91struct ID3DX12PipelineParserCallbacks
92{
93 // Subobject Callbacks
94 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
95 virtual void NodeMaskCb(UINT) {}
96 virtual void RootSignatureCb(ID3D12RootSignature*) {}
97 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
98 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
99 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
100 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
101 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
102 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
103 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
104 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
105 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
106 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
107 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
108 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
109 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
110 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
111 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
112#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
113 virtual void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2&) {}
114#endif
115 virtual void DSVFormatCb(DXGI_FORMAT) {}
116 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
117#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
118 virtual void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1&) {}
119#endif
120#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
121 virtual void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2&) {}
122#endif
123 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
124 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
125 virtual void SampleMaskCb(UINT) {}
126 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
127 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
128#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
129 virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
130#endif
131
132 // Error Callbacks
133 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
134 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
135 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
136#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
137 virtual void FinalizeCb() {}
138#endif
139
140 virtual ~ID3DX12PipelineParserCallbacks() = default;
141};
142
143struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
144{
145 ID3D12RootSignature* pRootSignature;
146 D3D12_SHADER_BYTECODE AS;
147 D3D12_SHADER_BYTECODE MS;
148 D3D12_SHADER_BYTECODE PS;
149 D3D12_BLEND_DESC BlendState;
150 UINT SampleMask;
151 D3D12_RASTERIZER_DESC RasterizerState;
152 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
153 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
154 UINT NumRenderTargets;
155 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
156 DXGI_FORMAT DSVFormat;
157 DXGI_SAMPLE_DESC SampleDesc;
158 UINT NodeMask;
159 D3D12_CACHED_PIPELINE_STATE CachedPSO;
160 D3D12_PIPELINE_STATE_FLAGS Flags;
161};
162
163#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
164struct CD3DX12_PIPELINE_STATE_STREAM6
165{
166 CD3DX12_PIPELINE_STATE_STREAM6() = default;
167 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
168 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
169 : Flags(Desc.Flags)
170 , NodeMask(Desc.NodeMask)
171 , pRootSignature(Desc.pRootSignature)
172 , InputLayout(Desc.InputLayout)
173 , IBStripCutValue(Desc.IBStripCutValue)
174 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
175 , VS(Desc.VS)
176 , GS(Desc.GS)
177 , StreamOutput(Desc.StreamOutput)
178 , HS(Desc.HS)
179 , DS(Desc.DS)
180 , PS(Desc.PS)
181 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
182 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
183 , DSVFormat(Desc.DSVFormat)
184 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
185 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
186 , SampleDesc(Desc.SampleDesc)
187 , SampleMask(Desc.SampleMask)
188 , CachedPSO(Desc.CachedPSO)
189 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
190 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
191 {
192 }
193 CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
194 : Flags(Desc.Flags)
195 , NodeMask(Desc.NodeMask)
196 , pRootSignature(Desc.pRootSignature)
197 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
198 , PS(Desc.PS)
199 , AS(Desc.AS)
200 , MS(Desc.MS)
201 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
202 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
203 , DSVFormat(Desc.DSVFormat)
204 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
205 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
206 , SampleDesc(Desc.SampleDesc)
207 , SampleMask(Desc.SampleMask)
208 , CachedPSO(Desc.CachedPSO)
209 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
210 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
211 {
212 }
213 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
214 : Flags(Desc.Flags)
215 , NodeMask(Desc.NodeMask)
216 , pRootSignature(Desc.pRootSignature)
217 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
218 , CachedPSO(Desc.CachedPSO)
219 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
220 {
221 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
222 }
223 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
224 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
225 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
226 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
227 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
228 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
229 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
230 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
231 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
232 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
233 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
234 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
235 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
236 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
237 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
238 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
239 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
240 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
241 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
242 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
243 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
244 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
245 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
246 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
247 CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
248
249 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
250 {
251 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
252 D.Flags = this->Flags;
253 D.NodeMask = this->NodeMask;
254 D.pRootSignature = this->pRootSignature;
255 D.InputLayout = this->InputLayout;
256 D.IBStripCutValue = this->IBStripCutValue;
257 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
258 D.VS = this->VS;
259 D.GS = this->GS;
260 D.StreamOutput = this->StreamOutput;
261 D.HS = this->HS;
262 D.DS = this->DS;
263 D.PS = this->PS;
264 D.BlendState = this->BlendState;
265 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
266 D.DSVFormat = this->DSVFormat;
267 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
268 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
269 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
270 D.SampleDesc = this->SampleDesc;
271 D.SampleMask = this->SampleMask;
272 D.CachedPSO = this->CachedPSO;
273 return D;
274 }
275 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
276 {
277 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
278 D.Flags = this->Flags;
279 D.NodeMask = this->NodeMask;
280 D.pRootSignature = this->pRootSignature;
281 D.CS = this->CS;
282 D.CachedPSO = this->CachedPSO;
283 return D;
284 }
285};
286#endif
287
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
289// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
290// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
291// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
292// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
293// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
294// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
295struct CD3DX12_PIPELINE_STATE_STREAM5
296{
297 CD3DX12_PIPELINE_STATE_STREAM5() = default;
298 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
299 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
300 : Flags(Desc.Flags)
301 , NodeMask(Desc.NodeMask)
302 , pRootSignature(Desc.pRootSignature)
303 , InputLayout(Desc.InputLayout)
304 , IBStripCutValue(Desc.IBStripCutValue)
305 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
306 , VS(Desc.VS)
307 , GS(Desc.GS)
308 , StreamOutput(Desc.StreamOutput)
309 , HS(Desc.HS)
310 , DS(Desc.DS)
311 , PS(Desc.PS)
312 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
313 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
314 , DSVFormat(Desc.DSVFormat)
315 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
316 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
317 , SampleDesc(Desc.SampleDesc)
318 , SampleMask(Desc.SampleMask)
319 , CachedPSO(Desc.CachedPSO)
320 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
321 {}
322 CD3DX12_PIPELINE_STATE_STREAM5(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
323 : Flags(Desc.Flags)
324 , NodeMask(Desc.NodeMask)
325 , pRootSignature(Desc.pRootSignature)
326 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
327 , PS(Desc.PS)
328 , AS(Desc.AS)
329 , MS(Desc.MS)
330 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
331 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
332 , DSVFormat(Desc.DSVFormat)
333 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
334 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
335 , SampleDesc(Desc.SampleDesc)
336 , SampleMask(Desc.SampleMask)
337 , CachedPSO(Desc.CachedPSO)
338 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
339 {}
340 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
341 : Flags(Desc.Flags)
342 , NodeMask(Desc.NodeMask)
343 , pRootSignature(Desc.pRootSignature)
344 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
345 , CachedPSO(Desc.CachedPSO)
346 {
347 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
348 }
349 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
350 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
351 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
352 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
353 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
354 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
355 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
356 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
357 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
358 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
359 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
360 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
361 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
362 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
363 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
364 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
365 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
366 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
367 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
368 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
369 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
370 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
371 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
372 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
373
374 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
375 {
376 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
377 D.Flags = this->Flags;
378 D.NodeMask = this->NodeMask;
379 D.pRootSignature = this->pRootSignature;
380 D.InputLayout = this->InputLayout;
381 D.IBStripCutValue = this->IBStripCutValue;
382 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
383 D.VS = this->VS;
384 D.GS = this->GS;
385 D.StreamOutput = this->StreamOutput;
386 D.HS = this->HS;
387 D.DS = this->DS;
388 D.PS = this->PS;
389 D.BlendState = this->BlendState;
390 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
391 D.DSVFormat = this->DSVFormat;
392 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
393 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
394 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
395 D.SampleDesc = this->SampleDesc;
396 D.SampleMask = this->SampleMask;
397 D.CachedPSO = this->CachedPSO;
398 return D;
399 }
400 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
401 {
402 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
403 D.Flags = this->Flags;
404 D.NodeMask = this->NodeMask;
405 D.pRootSignature = this->pRootSignature;
406 D.CS = this->CS;
407 D.CachedPSO = this->CachedPSO;
408 return D;
409 }
410};
411#endif // D3D12_SDK_VERSION >= 610
412
413#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
414// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
415// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
416// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
417// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
418// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
419struct CD3DX12_PIPELINE_STATE_STREAM4
420{
421 CD3DX12_PIPELINE_STATE_STREAM4() = default;
422 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
423 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
424 : Flags(Desc.Flags)
425 , NodeMask(Desc.NodeMask)
426 , pRootSignature(Desc.pRootSignature)
427 , InputLayout(Desc.InputLayout)
428 , IBStripCutValue(Desc.IBStripCutValue)
429 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
430 , VS(Desc.VS)
431 , GS(Desc.GS)
432 , StreamOutput(Desc.StreamOutput)
433 , HS(Desc.HS)
434 , DS(Desc.DS)
435 , PS(Desc.PS)
436 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
437 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
438 , DSVFormat(Desc.DSVFormat)
439 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
440 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
441 , SampleDesc(Desc.SampleDesc)
442 , SampleMask(Desc.SampleMask)
443 , CachedPSO(Desc.CachedPSO)
444 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
445 {}
446 CD3DX12_PIPELINE_STATE_STREAM4(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
447 : Flags(Desc.Flags)
448 , NodeMask(Desc.NodeMask)
449 , pRootSignature(Desc.pRootSignature)
450 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
451 , PS(Desc.PS)
452 , AS(Desc.AS)
453 , MS(Desc.MS)
454 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
455 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
456 , DSVFormat(Desc.DSVFormat)
457 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
458 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
459 , SampleDesc(Desc.SampleDesc)
460 , SampleMask(Desc.SampleMask)
461 , CachedPSO(Desc.CachedPSO)
462 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
463 {}
464 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
465 : Flags(Desc.Flags)
466 , NodeMask(Desc.NodeMask)
467 , pRootSignature(Desc.pRootSignature)
468 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
469 , CachedPSO(Desc.CachedPSO)
470 {
471 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
472 }
473 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
474 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
475 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
476 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
477 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
478 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
479 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
480 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
481 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
482 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
483 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
484 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
485 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
486 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
487 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
488 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
489 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
490 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
491 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1 RasterizerState;
492 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
493 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
494 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
495 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
496 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
497
498 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
499 {
500 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
501 D.Flags = this->Flags;
502 D.NodeMask = this->NodeMask;
503 D.pRootSignature = this->pRootSignature;
504 D.InputLayout = this->InputLayout;
505 D.IBStripCutValue = this->IBStripCutValue;
506 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
507 D.VS = this->VS;
508 D.GS = this->GS;
509 D.StreamOutput = this->StreamOutput;
510 D.HS = this->HS;
511 D.DS = this->DS;
512 D.PS = this->PS;
513 D.BlendState = this->BlendState;
514 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
515 D.DSVFormat = this->DSVFormat;
516 D.RasterizerState = CD3DX12_RASTERIZER_DESC1(D3D12_RASTERIZER_DESC1(this->RasterizerState));
517 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
518 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
519 D.SampleDesc = this->SampleDesc;
520 D.SampleMask = this->SampleMask;
521 D.CachedPSO = this->CachedPSO;
522 return D;
523 }
524 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
525 {
526 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
527 D.Flags = this->Flags;
528 D.NodeMask = this->NodeMask;
529 D.pRootSignature = this->pRootSignature;
530 D.CS = this->CS;
531 D.CachedPSO = this->CachedPSO;
532 return D;
533 }
534};
535#endif // D3D12_SDK_VERSION >= 608
536
537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
538// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
539// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
540// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
541// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
542struct CD3DX12_PIPELINE_STATE_STREAM3
543{
544 CD3DX12_PIPELINE_STATE_STREAM3() = default;
545 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
546 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
547 : Flags(Desc.Flags)
548 , NodeMask(Desc.NodeMask)
549 , pRootSignature(Desc.pRootSignature)
550 , InputLayout(Desc.InputLayout)
551 , IBStripCutValue(Desc.IBStripCutValue)
552 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
553 , VS(Desc.VS)
554 , GS(Desc.GS)
555 , StreamOutput(Desc.StreamOutput)
556 , HS(Desc.HS)
557 , DS(Desc.DS)
558 , PS(Desc.PS)
559 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
560 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
561 , DSVFormat(Desc.DSVFormat)
562 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
563 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
564 , SampleDesc(Desc.SampleDesc)
565 , SampleMask(Desc.SampleMask)
566 , CachedPSO(Desc.CachedPSO)
567 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
568 {}
569 CD3DX12_PIPELINE_STATE_STREAM3(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
570 : Flags(Desc.Flags)
571 , NodeMask(Desc.NodeMask)
572 , pRootSignature(Desc.pRootSignature)
573 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
574 , PS(Desc.PS)
575 , AS(Desc.AS)
576 , MS(Desc.MS)
577 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
578 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
579 , DSVFormat(Desc.DSVFormat)
580 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
581 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
582 , SampleDesc(Desc.SampleDesc)
583 , SampleMask(Desc.SampleMask)
584 , CachedPSO(Desc.CachedPSO)
585 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
586 {}
587 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
588 : Flags(Desc.Flags)
589 , NodeMask(Desc.NodeMask)
590 , pRootSignature(Desc.pRootSignature)
591 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
592 , CachedPSO(Desc.CachedPSO)
593 {
594 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
595 }
596 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
597 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
598 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
599 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
600 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
601 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
602 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
603 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
604 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
605 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
606 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
607 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
608 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
609 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
610 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
611 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
612 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
613 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
614 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
615 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
616 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
617 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
618 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
619 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
620
621 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
622 {
623 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
624 D.Flags = this->Flags;
625 D.NodeMask = this->NodeMask;
626 D.pRootSignature = this->pRootSignature;
627 D.InputLayout = this->InputLayout;
628 D.IBStripCutValue = this->IBStripCutValue;
629 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
630 D.VS = this->VS;
631 D.GS = this->GS;
632 D.StreamOutput = this->StreamOutput;
633 D.HS = this->HS;
634 D.DS = this->DS;
635 D.PS = this->PS;
636 D.BlendState = this->BlendState;
637 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
638 D.DSVFormat = this->DSVFormat;
639 D.RasterizerState = this->RasterizerState;
640 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
641 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
642 D.SampleDesc = this->SampleDesc;
643 D.SampleMask = this->SampleMask;
644 D.CachedPSO = this->CachedPSO;
645 return D;
646 }
647 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
648 {
649 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
650 D.Flags = this->Flags;
651 D.NodeMask = this->NodeMask;
652 D.pRootSignature = this->pRootSignature;
653 D.CS = this->CS;
654 D.CachedPSO = this->CachedPSO;
655 return D;
656 }
657};
658#endif // D3D12_SDK_VERSION >= 606
659
660// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
661// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
662// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
663struct CD3DX12_PIPELINE_STATE_STREAM2
664{
665 CD3DX12_PIPELINE_STATE_STREAM2() = default;
666 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
667 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
668 : Flags(Desc.Flags)
669 , NodeMask(Desc.NodeMask)
670 , pRootSignature(Desc.pRootSignature)
671 , InputLayout(Desc.InputLayout)
672 , IBStripCutValue(Desc.IBStripCutValue)
673 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
674 , VS(Desc.VS)
675 , GS(Desc.GS)
676 , StreamOutput(Desc.StreamOutput)
677 , HS(Desc.HS)
678 , DS(Desc.DS)
679 , PS(Desc.PS)
680 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
681 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
682 , DSVFormat(Desc.DSVFormat)
683 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
684 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
685 , SampleDesc(Desc.SampleDesc)
686 , SampleMask(Desc.SampleMask)
687 , CachedPSO(Desc.CachedPSO)
688 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
689 {}
690 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
691 : Flags(Desc.Flags)
692 , NodeMask(Desc.NodeMask)
693 , pRootSignature(Desc.pRootSignature)
694 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
695 , PS(Desc.PS)
696 , AS(Desc.AS)
697 , MS(Desc.MS)
698 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
699 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
700 , DSVFormat(Desc.DSVFormat)
701 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
702 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
703 , SampleDesc(Desc.SampleDesc)
704 , SampleMask(Desc.SampleMask)
705 , CachedPSO(Desc.CachedPSO)
706 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
707 {}
708 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
709 : Flags(Desc.Flags)
710 , NodeMask(Desc.NodeMask)
711 , pRootSignature(Desc.pRootSignature)
712 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
713 , CachedPSO(Desc.CachedPSO)
714 {
715 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
716 }
717 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
718 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
719 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
720 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
721 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
722 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
723 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
724 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
725 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
726 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
727 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
728 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
729 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
730 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
731 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
732 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
733 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
734 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
735 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
736 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
737 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
738 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
739 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
740 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
741 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
742 {
743 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
744 D.Flags = this->Flags;
745 D.NodeMask = this->NodeMask;
746 D.pRootSignature = this->pRootSignature;
747 D.InputLayout = this->InputLayout;
748 D.IBStripCutValue = this->IBStripCutValue;
749 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
750 D.VS = this->VS;
751 D.GS = this->GS;
752 D.StreamOutput = this->StreamOutput;
753 D.HS = this->HS;
754 D.DS = this->DS;
755 D.PS = this->PS;
756 D.BlendState = this->BlendState;
757 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
758 D.DSVFormat = this->DSVFormat;
759 D.RasterizerState = this->RasterizerState;
760 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
761 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
762 D.SampleDesc = this->SampleDesc;
763 D.SampleMask = this->SampleMask;
764 D.CachedPSO = this->CachedPSO;
765 return D;
766 }
767 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
768 {
769 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
770 D.Flags = this->Flags;
771 D.NodeMask = this->NodeMask;
772 D.pRootSignature = this->pRootSignature;
773 D.CS = this->CS;
774 D.CachedPSO = this->CachedPSO;
775 return D;
776 }
777};
778
779// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
780// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
781struct CD3DX12_PIPELINE_STATE_STREAM1
782{
783 CD3DX12_PIPELINE_STATE_STREAM1() = default;
784 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
785 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
786 : Flags(Desc.Flags)
787 , NodeMask(Desc.NodeMask)
788 , pRootSignature(Desc.pRootSignature)
789 , InputLayout(Desc.InputLayout)
790 , IBStripCutValue(Desc.IBStripCutValue)
791 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
792 , VS(Desc.VS)
793 , GS(Desc.GS)
794 , StreamOutput(Desc.StreamOutput)
795 , HS(Desc.HS)
796 , DS(Desc.DS)
797 , PS(Desc.PS)
798 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
799 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
800 , DSVFormat(Desc.DSVFormat)
801 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
802 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
803 , SampleDesc(Desc.SampleDesc)
804 , SampleMask(Desc.SampleMask)
805 , CachedPSO(Desc.CachedPSO)
806 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
807 {}
808 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
809 : Flags(Desc.Flags)
810 , NodeMask(Desc.NodeMask)
811 , pRootSignature(Desc.pRootSignature)
812 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
813 , PS(Desc.PS)
814 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
815 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
816 , DSVFormat(Desc.DSVFormat)
817 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
818 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
819 , SampleDesc(Desc.SampleDesc)
820 , SampleMask(Desc.SampleMask)
821 , CachedPSO(Desc.CachedPSO)
822 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
823 {}
824 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
825 : Flags(Desc.Flags)
826 , NodeMask(Desc.NodeMask)
827 , pRootSignature(Desc.pRootSignature)
828 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
829 , CachedPSO(Desc.CachedPSO)
830 {
831 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
832 }
833 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
834 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
835 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
836 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
837 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
838 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
839 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
840 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
841 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
842 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
843 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
844 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
845 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
846 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
847 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
848 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
849 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
850 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
851 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
852 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
853 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
854 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
855 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
856 {
857 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
858 D.Flags = this->Flags;
859 D.NodeMask = this->NodeMask;
860 D.pRootSignature = this->pRootSignature;
861 D.InputLayout = this->InputLayout;
862 D.IBStripCutValue = this->IBStripCutValue;
863 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
864 D.VS = this->VS;
865 D.GS = this->GS;
866 D.StreamOutput = this->StreamOutput;
867 D.HS = this->HS;
868 D.DS = this->DS;
869 D.PS = this->PS;
870 D.BlendState = this->BlendState;
871 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
872 D.DSVFormat = this->DSVFormat;
873 D.RasterizerState = this->RasterizerState;
874 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
875 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
876 D.SampleDesc = this->SampleDesc;
877 D.SampleMask = this->SampleMask;
878 D.CachedPSO = this->CachedPSO;
879 return D;
880 }
881 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
882 {
883 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
884 D.Flags = this->Flags;
885 D.NodeMask = this->NodeMask;
886 D.pRootSignature = this->pRootSignature;
887 D.CS = this->CS;
888 D.CachedPSO = this->CachedPSO;
889 return D;
890 }
891};
892
893
894struct CD3DX12_PIPELINE_MESH_STATE_STREAM
895{
896 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
897 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
898 : Flags(Desc.Flags)
899 , NodeMask(Desc.NodeMask)
900 , pRootSignature(Desc.pRootSignature)
901 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
902 , PS(Desc.PS)
903 , AS(Desc.AS)
904 , MS(Desc.MS)
905 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
906 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
907 , DSVFormat(Desc.DSVFormat)
908 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
909 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
910 , SampleDesc(Desc.SampleDesc)
911 , SampleMask(Desc.SampleMask)
912 , CachedPSO(Desc.CachedPSO)
913 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
914 {}
915 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
916 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
917 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
918 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
919 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
920 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
921 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
922 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
923 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
924 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
925 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
926 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
927 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
928 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
929 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
930 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
931 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
932 {
933 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
934 D.Flags = this->Flags;
935 D.NodeMask = this->NodeMask;
936 D.pRootSignature = this->pRootSignature;
937 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
938 D.PS = this->PS;
939 D.AS = this->AS;
940 D.MS = this->MS;
941 D.BlendState = this->BlendState;
942 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
943 D.DSVFormat = this->DSVFormat;
944 D.RasterizerState = this->RasterizerState;
945 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
946 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
947 D.SampleDesc = this->SampleDesc;
948 D.SampleMask = this->SampleMask;
949 D.CachedPSO = this->CachedPSO;
950 return D;
951 }
952};
953
954// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
955// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
956struct CD3DX12_PIPELINE_STATE_STREAM
957{
958 CD3DX12_PIPELINE_STATE_STREAM() = default;
959 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
960 : Flags(Desc.Flags)
961 , NodeMask(Desc.NodeMask)
962 , pRootSignature(Desc.pRootSignature)
963 , InputLayout(Desc.InputLayout)
964 , IBStripCutValue(Desc.IBStripCutValue)
965 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
966 , VS(Desc.VS)
967 , GS(Desc.GS)
968 , StreamOutput(Desc.StreamOutput)
969 , HS(Desc.HS)
970 , DS(Desc.DS)
971 , PS(Desc.PS)
972 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
973 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
974 , DSVFormat(Desc.DSVFormat)
975 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
976 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
977 , SampleDesc(Desc.SampleDesc)
978 , SampleMask(Desc.SampleMask)
979 , CachedPSO(Desc.CachedPSO)
980 {}
981 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
982 : Flags(Desc.Flags)
983 , NodeMask(Desc.NodeMask)
984 , pRootSignature(Desc.pRootSignature)
985 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
986 , CachedPSO(Desc.CachedPSO)
987 {}
988 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
989 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
990 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
991 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
992 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
993 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
994 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
995 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
996 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
997 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
998 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
999 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
1000 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
1001 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
1002 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
1003 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
1004 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
1005 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
1006 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
1007 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
1008 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
1009 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
1010 {
1011 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
1012 D.Flags = this->Flags;
1013 D.NodeMask = this->NodeMask;
1014 D.pRootSignature = this->pRootSignature;
1015 D.InputLayout = this->InputLayout;
1016 D.IBStripCutValue = this->IBStripCutValue;
1017 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
1018 D.VS = this->VS;
1019 D.GS = this->GS;
1020 D.StreamOutput = this->StreamOutput;
1021 D.HS = this->HS;
1022 D.DS = this->DS;
1023 D.PS = this->PS;
1024 D.BlendState = this->BlendState;
1025 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
1026 D.DSVFormat = this->DSVFormat;
1027 D.RasterizerState = this->RasterizerState;
1028 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
1029 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
1030 D.SampleDesc = this->SampleDesc;
1031 D.SampleMask = this->SampleMask;
1032 D.CachedPSO = this->CachedPSO;
1033 return D;
1034 }
1035 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
1036 {
1037 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
1038 D.Flags = this->Flags;
1039 D.NodeMask = this->NodeMask;
1040 D.pRootSignature = this->pRootSignature;
1041 D.CS = this->CS;
1042 D.CachedPSO = this->CachedPSO;
1043 return D;
1044 }
1045};
1046
1047
1048struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1049{
1050 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
1051 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
1052 : SeenDSS(false)
1053 {
1054 // Adjust defaults to account for absent members.
1055 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1056
1057 // Depth disabled if no DSV format specified.
1058 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1059 }
1060
1061 // ID3DX12PipelineParserCallbacks
1062 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1063 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1064 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1065 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1066 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1067 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1068 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1069 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1070 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1071 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1072 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1073 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1074 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1075 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
1076 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
1077 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1078 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1079 {
1080 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1081 SeenDSS = true;
1082 }
1083 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1084 {
1085 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1086 SeenDSS = true;
1087 }
1088 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1089 {
1090 PipelineStream.DSVFormat = DSVFormat;
1091 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1092 {
1093 // Re-enable depth for the default state.
1094 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1095 }
1096 }
1097 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1098 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1099 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1100 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1101 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1102 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1103
1104private:
1105 bool SeenDSS;
1106};
1107
1108#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1109struct CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1110{
1111 CD3DX12_PIPELINE_STATE_STREAM3 PipelineStream;
1112 CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER() noexcept
1113 : SeenDSS(false)
1114 {
1115 // Adjust defaults to account for absent members.
1116 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1117
1118 // Depth disabled if no DSV format specified.
1119 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1120 }
1121
1122 // ID3DX12PipelineParserCallbacks
1123 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1124 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1125 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1126 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1127 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1128 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1129 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1130 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1131 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1132 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1133 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1134 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1135 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1136 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1137 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1138 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1139 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1140 {
1141 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1142 SeenDSS = true;
1143 }
1144 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1145 {
1146 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1147 SeenDSS = true;
1148 }
1149 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1150 {
1151 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1152 SeenDSS = true;
1153 }
1154 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1155 {
1156 PipelineStream.DSVFormat = DSVFormat;
1157 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1158 {
1159 // Re-enable depth for the default state.
1160 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1161 }
1162 }
1163 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState); }
1164 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1165 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1166 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1167 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1168 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1169
1170private:
1171 bool SeenDSS;
1172};
1173#endif // D3D12_SDK_VERSION >= 606
1174
1175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1176struct CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1177{
1178 CD3DX12_PIPELINE_STATE_STREAM4 PipelineStream;
1179 CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER() noexcept
1180 : SeenDSS(false)
1181 {
1182 // Adjust defaults to account for absent members.
1183 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1184
1185 // Depth disabled if no DSV format specified.
1186 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1187 }
1188
1189 // ID3DX12PipelineParserCallbacks
1190 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1191 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1192 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1193 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1194 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1195 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1196 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1197 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1198 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1199 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1200 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1201 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1202 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1203 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1204 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1205 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1206 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1207 {
1208 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1209 SeenDSS = true;
1210 }
1211 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1212 {
1213 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1214 SeenDSS = true;
1215 }
1216 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1217 {
1218 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1219 SeenDSS = true;
1220 }
1221 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1222 {
1223 PipelineStream.DSVFormat = DSVFormat;
1224 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1225 {
1226 // Re-enable depth for the default state.
1227 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1228 }
1229 }
1230 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1231 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1232 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1233 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1234 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1235 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1236 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1237
1238private:
1239 bool SeenDSS;
1240};
1241#endif // D3D12_SDK_VERSION >= 608
1242
1243#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1244// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
1245struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1246{
1247 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1248 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1249 : SeenDSS(false),
1250 SeenMS(false),
1251 SeenTopology(false)
1252 {
1253 // Adjust defaults to account for absent members.
1254 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1255
1256 // Depth disabled if no DSV format specified.
1257 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1258 }
1259
1260 // ID3DX12PipelineParserCallbacks
1261 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1262 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1263 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1264 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1265 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1266 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1267 {
1268 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1269 SeenTopology = true;
1270 }
1271 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1272 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1273 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1274 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1275 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1276 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1277 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1278 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1279 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1280 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1281 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1282 {
1283 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1284 SeenDSS = true;
1285 }
1286 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1287 {
1288 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1289 SeenDSS = true;
1290 }
1291 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1292 {
1293 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1294 SeenDSS = true;
1295 }
1296 void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
1297 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1298 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1299 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1300 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1301 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1302 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1303 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1304 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1305 void FinalizeCb() override
1306 {
1307 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1308 {
1309 // Re-enable depth for the default state.
1310 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1311 }
1312 if (!SeenTopology && SeenMS)
1313 {
1314 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1315 }
1316 }
1317
1318private:
1319 bool SeenDSS;
1320 bool SeenMS;
1321 bool SeenTopology;
1322};
1323#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1324struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1325{
1326 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1327 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1328 : SeenDSS(false)
1329 {
1330 // Adjust defaults to account for absent members.
1331 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1332
1333 // Depth disabled if no DSV format specified.
1334 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1335 }
1336
1337 // ID3DX12PipelineParserCallbacks
1338 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1339 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1340 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1341 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1342 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1343 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1344 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1345 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1346 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1347 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1348 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1349 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1350 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1351 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1352 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1353 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1354 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1355 {
1356 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1357 SeenDSS = true;
1358 }
1359 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1360 {
1361 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1362 SeenDSS = true;
1363 }
1364 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1365 {
1366 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1367 SeenDSS = true;
1368 }
1369 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1370 {
1371 PipelineStream.DSVFormat = DSVFormat;
1372 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1373 {
1374 // Re-enable depth for the default state.
1375 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1376 }
1377 }
1378 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1379 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1380 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1381 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1382 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1383 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1384 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1385 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1386
1387private:
1388 bool SeenDSS;
1389};
1390#endif // D3D12_SDK_VERSION >= 610
1391
1392#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1393struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1394{
1395 CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
1396 CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
1397 : SeenDSS(false),
1398 SeenMS(false),
1399 SeenTopology(false)
1400 {
1401 // Adjust defaults to account for absent members.
1402 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1403
1404 // Depth disabled if no DSV format specified.
1405 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1406 }
1407
1408 // ID3DX12PipelineParserCallbacks
1409 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1410 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1411 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1412 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1413 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1414 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1415 {
1416 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1417 SeenTopology = true;
1418 }
1419 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1420 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1421 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1422 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1423 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1424 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1425 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1426 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1427 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1428 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1429 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1430 {
1431 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1432 SeenDSS = true;
1433 }
1434 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1435 {
1436 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1437 SeenDSS = true;
1438 }
1439 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1440 {
1441 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1442 SeenDSS = true;
1443 }
1444 void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
1445 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1446 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1447 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1448 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1449 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1450 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1451 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1452 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1453 void FinalizeCb() override
1454 {
1455 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1456 {
1457 // Re-enable depth for the default state.
1458 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1459 }
1460 if (!SeenTopology && SeenMS)
1461 {
1462 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1463 }
1464 }
1465 void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
1466
1467private:
1468 bool SeenDSS;
1469 bool SeenMS;
1470 bool SeenTopology;
1471};
1472#endif // D3D12_SDK_VERSION >= 618
1473
1474struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1475{
1476 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
1477 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
1478 : SeenDSS(false)
1479 {
1480 // Adjust defaults to account for absent members.
1481 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1482
1483 // Depth disabled if no DSV format specified.
1484 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1485 }
1486
1487 // ID3DX12PipelineParserCallbacks
1488 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1489 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1490 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1491 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1492 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1493 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1494 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1495 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1496 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1497 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1498 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1499 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1500 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1501 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1502 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1503 {
1504 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1505 SeenDSS = true;
1506 }
1507 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1508 {
1509 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1510 SeenDSS = true;
1511 }
1512 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1513 {
1514 PipelineStream.DSVFormat = DSVFormat;
1515 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1516 {
1517 // Re-enable depth for the default state.
1518 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1519 }
1520 }
1521 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1522 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1523 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1524 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1525 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1526 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1527
1528private:
1529 bool SeenDSS;
1530};
1531
1532
1533inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
1534{
1535 switch (SubobjectType)
1536 {
1537 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1538 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1539#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1540 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1541 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1542#endif
1543#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1544 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1545 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
1546#endif
1547 default:
1548 return SubobjectType;
1549 }
1550}
1551
1552inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
1553{
1554 if (pCallbacks == nullptr)
1555 {
1556 return E_INVALIDARG;
1557 }
1558
1559 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
1560 {
1561 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
1562 return E_INVALIDARG;
1563 }
1564
1565 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
1566 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
1567 {
1568 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
1569 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
1570 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
1571 {
1572 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1573 return E_INVALIDARG;
1574 }
1575 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
1576 {
1577 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
1578 return E_INVALIDARG; // disallow subobject duplicates in a stream
1579 }
1580 SubobjectSeen[SubobjectType] = true;
1581 switch (SubobjectType)
1582 {
1583 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
1584 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
1585 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
1586 break;
1587 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
1588 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
1589 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
1590 break;
1591 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
1592 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
1593 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
1594 break;
1595 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
1596 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
1597 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
1598 break;
1599 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
1600 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
1601 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
1602 break;
1603 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
1604 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
1605 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
1606 break;
1607 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
1608 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
1609 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
1610 break;
1611 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
1612 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
1613 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
1614 break;
1615 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
1616 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
1617 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
1618 break;
1619 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
1620 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
1621 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
1622 break;
1623 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
1624 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
1625 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
1626 break;
1627 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
1628 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
1629 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
1630 break;
1631 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
1632 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
1633 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
1634 break;
1635#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1636 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1637 pCallbacks->RasterizerState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState)*>(pStream));
1638 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState);
1639 break;
1640#endif
1641#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1642 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2:
1643 pCallbacks->RasterizerState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState)*>(pStream));
1644 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState);
1645 break;
1646#endif
1647 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
1648 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
1649 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
1650 break;
1651 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1652 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
1653 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
1654 break;
1655#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1656 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1657 pCallbacks->DepthStencilState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState)*>(pStream));
1658 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState);
1659 break;
1660#endif
1661 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
1662 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
1663 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
1664 break;
1665 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
1666 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
1667 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
1668 break;
1669 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
1670 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
1671 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
1672 break;
1673 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
1674 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
1675 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
1676 break;
1677 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
1678 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
1679 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
1680 break;
1681 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
1682 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
1683 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
1684 break;
1685 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
1686 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
1687 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
1688 break;
1689 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
1690 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
1691 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
1692 break;
1693 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
1694 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
1695 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
1696 break;
1697 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
1698 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
1699 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
1700 break;
1701#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1702 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
1703 pCallbacks->SerializedRootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature)*>(pStream));
1704 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
1705 break;
1706#endif
1707 default:
1708 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1709 return E_INVALIDARG;
1710 }
1711 }
1712#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1713 pCallbacks->FinalizeCb();
1714#endif
1715
1716 return S_OK;
1717}
1718
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h
new file mode 100644
index 0000000..66c7600
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h
@@ -0,0 +1,128 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
8#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
9#include "d3d12.h"
10#define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses
11
12struct D3D12_PROPERTY_LAYOUT_FORMAT_TABLE
13{
14public:
15 // ----------------------------------------------------------------------------
16 // Information describing everything about a D3D Resource Format
17 // ----------------------------------------------------------------------------
18 typedef struct FORMAT_DETAIL
19 {
20 DXGI_FORMAT DXGIFormat;
21 DXGI_FORMAT ParentFormat;
22 const DXGI_FORMAT* pDefaultFormatCastSet; // This is dependent on FL/driver version, but is here to save a lot of space
23 UINT8 BitsPerComponent[4]; // only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
24 UINT8 BitsPerUnit;
25 BYTE SRGBFormat : 1;
26 UINT WidthAlignment : 4; // number of texels to align to in a mip level.
27 UINT HeightAlignment : 4; // Top level dimensions must be a multiple of these
28 UINT DepthAlignment : 1; // values.
29 D3D_FORMAT_LAYOUT Layout : 1;
30 D3D_FORMAT_TYPE_LEVEL TypeLevel : 2;
31 D3D_FORMAT_COMPONENT_NAME ComponentName0 : 3; // RED ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
32 D3D_FORMAT_COMPONENT_NAME ComponentName1 : 3; // GREEN ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
33 D3D_FORMAT_COMPONENT_NAME ComponentName2 : 3; // BLUE ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
34 D3D_FORMAT_COMPONENT_NAME ComponentName3 : 3; // ALPHA ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
35 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation0 : 3; // only used for D3DFTL_FULL_TYPE
36 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation1 : 3; // only used for D3DFTL_FULL_TYPE
37 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation2 : 3; // only used for D3DFTL_FULL_TYPE
38 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation3 : 3; // only used for D3DFTL_FULL_TYPE
39 bool bDX9VertexOrIndexFormat : 1;
40 bool bDX9TextureFormat : 1;
41 bool bFloatNormFormat : 1;
42 bool bPlanar : 1;
43 bool bYUV : 1;
44 bool bDependantFormatCastSet : 1; // This indicates that the format cast set is dependent on FL/driver version
45 bool bInternal : 1;
46 } FORMAT_DETAIL;
47
48private:
49 static const FORMAT_DETAIL s_FormatDetail[];
50 static const UINT s_NumFormats;
51 static const LPCSTR s_FormatNames[]; // separate from above structure so it can be compiled out of runtime.
52public:
53 static UINT GetNumFormats();
54 static const FORMAT_DETAIL* GetFormatTable();
55 static D3D_FEATURE_LEVEL GetHighestDefinedFeatureLevel();
56
57 static DXGI_FORMAT GetFormat (SIZE_T Index);
58 static bool FormatExists (DXGI_FORMAT Format);
59 static bool FormatExistsInHeader (DXGI_FORMAT Format, bool bExternalHeader = true);
60 static UINT GetByteAlignment (DXGI_FORMAT Format);
61 static bool IsBlockCompressFormat (DXGI_FORMAT Format);
62 static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
63 static bool IsSRGBFormat (DXGI_FORMAT Format);
64 static UINT GetBitsPerStencil (DXGI_FORMAT Format);
65 static UINT GetBitsPerDepth (DXGI_FORMAT Format);
66 static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
67 static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
68 static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
69
70 // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
71 // the absolute component index (range 0 to 3).
72 static UINT Sequential2AbsoluteComponentIndex (DXGI_FORMAT Format, UINT SequentialComponentIndex);
73 static bool CanBeCastEvenFullyTyped (DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl);
74 static UINT8 GetAddressingBitsPerAlignedSize (DXGI_FORMAT Format);
75 static DXGI_FORMAT GetParentFormat (DXGI_FORMAT Format);
76 static const DXGI_FORMAT* GetFormatCastSet (DXGI_FORMAT Format);
77 static D3D_FORMAT_LAYOUT GetLayout (DXGI_FORMAT Format);
78 static D3D_FORMAT_TYPE_LEVEL GetTypeLevel (DXGI_FORMAT Format);
79 static UINT GetBitsPerUnit (DXGI_FORMAT Format);
80 static UINT GetBitsPerUnitThrow (DXGI_FORMAT Format);
81 static UINT GetBitsPerElement (DXGI_FORMAT Format); // Legacy function used to support D3D10on9 only. Do not use.
82 static UINT GetWidthAlignment (DXGI_FORMAT Format);
83 static UINT GetHeightAlignment (DXGI_FORMAT Format);
84 static UINT GetDepthAlignment (DXGI_FORMAT Format);
85 static BOOL Planar (DXGI_FORMAT Format);
86 static BOOL NonOpaquePlanar (DXGI_FORMAT Format);
87 static BOOL YUV (DXGI_FORMAT Format);
88 static BOOL Opaque (DXGI_FORMAT Format);
89 static bool FamilySupportsStencil (DXGI_FORMAT Format);
90 static UINT NonOpaquePlaneCount (DXGI_FORMAT Format);
91 static BOOL DX9VertexOrIndexFormat (DXGI_FORMAT Format);
92 static BOOL DX9TextureFormat (DXGI_FORMAT Format);
93 static BOOL FloatNormTextureFormat (DXGI_FORMAT Format);
94 static bool DepthOnlyFormat (DXGI_FORMAT format);
95 static UINT8 GetPlaneCount (DXGI_FORMAT Format);
96 static bool MotionEstimatorAllowedInputFormat (DXGI_FORMAT Format);
97 static bool SupportsSamplerFeedback (DXGI_FORMAT Format);
98 static bool DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format);
99 static UINT8 GetPlaneSliceFromViewFormat (DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat);
100 static bool FloatAndNotFloatFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
101 static bool SNORMAndUNORMFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
102 static bool ValidCastToR32UAV (DXGI_FORMAT from, DXGI_FORMAT to);
103 static bool IsSupportedTextureDisplayableFormat (DXGI_FORMAT, bool bMediaFormatOnly);
104 static D3D_FORMAT_COMPONENT_INTERPRETATION GetFormatComponentInterpretation (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
105 static UINT GetBitsPerComponent (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
106 static D3D_FORMAT_COMPONENT_NAME GetComponentName (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
107 static HRESULT CalculateExtraPlanarRows (DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight);
108 static HRESULT CalculateMinimumRowMajorRowPitch (DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch);
109 static HRESULT CalculateMinimumRowMajorSlicePitch (DXGI_FORMAT Format, UINT ContextBasedRowPitch, UINT Height, _Out_ UINT& SlicePitch);
110 static void GetYCbCrChromaSubsampling (DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, _Out_ UINT& VerticalSubsampling);
111
112 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);
113 static void GetTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
114 static void Get4KTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
115 static void GetMipDimensions (UINT8 mipSlice, _Inout_ UINT64* pWidth, _Inout_opt_ UINT64* pHeight = nullptr, _Inout_opt_ UINT64* pDepth = nullptr);
116 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);
117
118 static UINT GetDetailTableIndex (DXGI_FORMAT Format);
119 static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
120 static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
121 static bool SupportsDepth (DXGI_FORMAT Format);
122 static bool SupportsStencil (DXGI_FORMAT Format);
123private:
124 static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
125
126};
127
128#endif \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h
new file mode 100644
index 0000000..c88fbdf
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h
@@ -0,0 +1,105 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
16inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
17{
18 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
19}
20
21inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
22{
23 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
24}
25
26inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
27{
28 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
29}
30#endif
31
32inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
33{
34 return a.ClearValue == b.ClearValue;
35}
36
37inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
38{
39 if (a.pSrcResource != b.pSrcResource) return false;
40 if (a.pDstResource != b.pDstResource) return false;
41 if (a.SubresourceCount != b.SubresourceCount) return false;
42 if (a.Format != b.Format) return false;
43 if (a.ResolveMode != b.ResolveMode) return false;
44 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
45 return true;
46}
47
48inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
49{
50 if (a.Type != b.Type) return false;
51 switch (a.Type)
52 {
53 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR:
54 if (!(a.Clear == b.Clear)) return false;
55 break;
56#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
57 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
58 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
59 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
60 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
61 break;
62#endif
63 default:
64 break;
65 }
66 return true;
67}
68
69inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_RENDER_PASS_ENDING_ACCESS& b) noexcept
70{
71 if (a.Type != b.Type) return false;
72 switch (a.Type)
73 {
74 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE:
75 if (!(a.Resolve == b.Resolve)) return false;
76 break;
77#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
78 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
79 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
80 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
81 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
82 break;
83#endif
84 default:
85 break;
86 }
87 return true;
88}
89
90inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
91{
92 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
93 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
94 if (!(a.EndingAccess == b.EndingAccess)) return false;
95 return true;
96}
97inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
98{
99 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
100 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
101 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
102 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
103 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
104 return true;
105}
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h
new file mode 100644
index 0000000..5c1c980
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h
@@ -0,0 +1,612 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_property_format_table.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17//------------------------------------------------------------------------------------------------
18template <typename T, typename U, typename V>
19inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
20{
21 MipSlice = static_cast<T>(Subresource % MipLevels);
22 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
23 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
24}
25
26//------------------------------------------------------------------------------------------------
27// Row-by-row memcpy
28inline void MemcpySubresource(
29 _In_ const D3D12_MEMCPY_DEST* pDest,
30 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
31 SIZE_T RowSizeInBytes,
32 UINT NumRows,
33 UINT NumSlices) noexcept
34{
35 for (UINT z = 0; z < NumSlices; ++z)
36 {
37 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
38 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
39 for (UINT y = 0; y < NumRows; ++y)
40 {
41 memcpy(pDestSlice + pDest->RowPitch * y,
42 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
43 RowSizeInBytes);
44 }
45 }
46}
47
48//------------------------------------------------------------------------------------------------
49// Row-by-row memcpy
50inline void MemcpySubresource(
51 _In_ const D3D12_MEMCPY_DEST* pDest,
52 _In_ const void* pResourceData,
53 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
54 SIZE_T RowSizeInBytes,
55 UINT NumRows,
56 UINT NumSlices) noexcept
57{
58 for (UINT z = 0; z < NumSlices; ++z)
59 {
60 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
61 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
62 for (UINT y = 0; y < NumRows; ++y)
63 {
64 memcpy(pDestSlice + pDest->RowPitch * y,
65 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
66 RowSizeInBytes);
67 }
68 }
69}
70
71//------------------------------------------------------------------------------------------------
72// Returns required size of a buffer to be used for data upload
73inline UINT64 GetRequiredIntermediateSize(
74 _In_ ID3D12Resource* pDestinationResource,
75 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
76 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
77{
78#if defined(_MSC_VER) || !defined(_WIN32)
79 const auto Desc = pDestinationResource->GetDesc();
80#else
81 D3D12_RESOURCE_DESC tmpDesc;
82 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
83#endif
84 UINT64 RequiredSize = 0;
85
86 ID3D12Device* pDevice = nullptr;
87 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
88 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
89 pDevice->Release();
90
91 return RequiredSize;
92}
93
94//------------------------------------------------------------------------------------------------
95// All arrays must be populated (e.g. by calling GetCopyableFootprints)
96inline UINT64 UpdateSubresources(
97 _In_ ID3D12GraphicsCommandList* pCmdList,
98 _In_ ID3D12Resource* pDestinationResource,
99 _In_ ID3D12Resource* pIntermediate,
100 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
101 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
102 UINT64 RequiredSize,
103 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
104 _In_reads_(NumSubresources) const UINT* pNumRows,
105 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
106 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
107{
108 // Minor validation
109#if defined(_MSC_VER) || !defined(_WIN32)
110 const auto IntermediateDesc = pIntermediate->GetDesc();
111 const auto DestinationDesc = pDestinationResource->GetDesc();
112#else
113 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
114 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
115 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
116#endif
117 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
118 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
119 RequiredSize > SIZE_T(-1) ||
120 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
121 (FirstSubresource != 0 || NumSubresources != 1)))
122 {
123 return 0;
124 }
125
126 BYTE* pData;
127 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
128 if (FAILED(hr))
129 {
130 return 0;
131 }
132
133 for (UINT i = 0; i < NumSubresources; ++i)
134 {
135 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
136 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
137 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
138 }
139 pIntermediate->Unmap(0, nullptr);
140
141 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
142 {
143 pCmdList->CopyBufferRegion(
144 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
145 }
146 else
147 {
148 for (UINT i = 0; i < NumSubresources; ++i)
149 {
150 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
151 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
152 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
153 }
154 }
155 return RequiredSize;
156}
157
158//------------------------------------------------------------------------------------------------
159// All arrays must be populated (e.g. by calling GetCopyableFootprints)
160inline UINT64 UpdateSubresources(
161 _In_ ID3D12GraphicsCommandList* pCmdList,
162 _In_ ID3D12Resource* pDestinationResource,
163 _In_ ID3D12Resource* pIntermediate,
164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
166 UINT64 RequiredSize,
167 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
168 _In_reads_(NumSubresources) const UINT* pNumRows,
169 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
170 _In_ const void* pResourceData,
171 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
172{
173 // Minor validation
174#if defined(_MSC_VER) || !defined(_WIN32)
175 const auto IntermediateDesc = pIntermediate->GetDesc();
176 const auto DestinationDesc = pDestinationResource->GetDesc();
177#else
178 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
179 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
180 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
181#endif
182 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
183 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
184 RequiredSize > SIZE_T(-1) ||
185 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
186 (FirstSubresource != 0 || NumSubresources != 1)))
187 {
188 return 0;
189 }
190
191 BYTE* pData;
192 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
193 if (FAILED(hr))
194 {
195 return 0;
196 }
197
198 for (UINT i = 0; i < NumSubresources; ++i)
199 {
200 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
201 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
202 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
203 }
204 pIntermediate->Unmap(0, nullptr);
205
206 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
207 {
208 pCmdList->CopyBufferRegion(
209 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
210 }
211 else
212 {
213 for (UINT i = 0; i < NumSubresources; ++i)
214 {
215 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
216 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
217 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
218 }
219 }
220 return RequiredSize;
221}
222
223//------------------------------------------------------------------------------------------------
224// Heap-allocating UpdateSubresources implementation
225inline UINT64 UpdateSubresources(
226 _In_ ID3D12GraphicsCommandList* pCmdList,
227 _In_ ID3D12Resource* pDestinationResource,
228 _In_ ID3D12Resource* pIntermediate,
229 UINT64 IntermediateOffset,
230 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
231 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
232 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
233{
234 UINT64 RequiredSize = 0;
235 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
236 if (MemToAlloc > SIZE_MAX)
237 {
238 return 0;
239 }
240 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
241 if (pMem == nullptr)
242 {
243 return 0;
244 }
245 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
246 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
247 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
248
249#if defined(_MSC_VER) || !defined(_WIN32)
250 const auto Desc = pDestinationResource->GetDesc();
251#else
252 D3D12_RESOURCE_DESC tmpDesc;
253 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
254#endif
255 ID3D12Device* pDevice = nullptr;
256 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
257 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
258 pDevice->Release();
259
260 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
261 HeapFree(GetProcessHeap(), 0, pMem);
262 return Result;
263}
264
265//------------------------------------------------------------------------------------------------
266// Heap-allocating UpdateSubresources implementation
267inline UINT64 UpdateSubresources(
268 _In_ ID3D12GraphicsCommandList* pCmdList,
269 _In_ ID3D12Resource* pDestinationResource,
270 _In_ ID3D12Resource* pIntermediate,
271 UINT64 IntermediateOffset,
272 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
273 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
274 _In_ const void* pResourceData,
275 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
276{
277 UINT64 RequiredSize = 0;
278 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
279 if (MemToAlloc > SIZE_MAX)
280 {
281 return 0;
282 }
283 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
284 if (pMem == nullptr)
285 {
286 return 0;
287 }
288 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
289 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
290 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
291
292#if defined(_MSC_VER) || !defined(_WIN32)
293 const auto Desc = pDestinationResource->GetDesc();
294#else
295 D3D12_RESOURCE_DESC tmpDesc;
296 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
297#endif
298 ID3D12Device* pDevice = nullptr;
299 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
300 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
301 pDevice->Release();
302
303 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
304 HeapFree(GetProcessHeap(), 0, pMem);
305 return Result;
306}
307
308//------------------------------------------------------------------------------------------------
309// Stack-allocating UpdateSubresources implementation
310template <UINT MaxSubresources>
311inline UINT64 UpdateSubresources(
312 _In_ ID3D12GraphicsCommandList* pCmdList,
313 _In_ ID3D12Resource* pDestinationResource,
314 _In_ ID3D12Resource* pIntermediate,
315 UINT64 IntermediateOffset,
316 _In_range_(0,MaxSubresources) UINT FirstSubresource,
317 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
318 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
319{
320 UINT64 RequiredSize = 0;
321 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
322 UINT NumRows[MaxSubresources];
323 UINT64 RowSizesInBytes[MaxSubresources];
324
325#if defined(_MSC_VER) || !defined(_WIN32)
326 const auto Desc = pDestinationResource->GetDesc();
327#else
328 D3D12_RESOURCE_DESC tmpDesc;
329 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
330#endif
331 ID3D12Device* pDevice = nullptr;
332 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
333 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
334 pDevice->Release();
335
336 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
337}
338
339//------------------------------------------------------------------------------------------------
340// Stack-allocating UpdateSubresources implementation
341template <UINT MaxSubresources>
342inline UINT64 UpdateSubresources(
343 _In_ ID3D12GraphicsCommandList* pCmdList,
344 _In_ ID3D12Resource* pDestinationResource,
345 _In_ ID3D12Resource* pIntermediate,
346 UINT64 IntermediateOffset,
347 _In_range_(0,MaxSubresources) UINT FirstSubresource,
348 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
349 _In_ const void* pResourceData,
350 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
351{
352 UINT64 RequiredSize = 0;
353 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
354 UINT NumRows[MaxSubresources];
355 UINT64 RowSizesInBytes[MaxSubresources];
356
357#if defined(_MSC_VER) || !defined(_WIN32)
358 const auto Desc = pDestinationResource->GetDesc();
359#else
360 D3D12_RESOURCE_DESC tmpDesc;
361 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
362#endif
363 ID3D12Device* pDevice = nullptr;
364 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
365 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
366 pDevice->Release();
367
368 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
369}
370
371//------------------------------------------------------------------------------------------------
372constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
373{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
374
375//------------------------------------------------------------------------------------------------
376template< typename T >
377inline T D3DX12Align(T uValue, T uAlign)
378{
379 // Assert power of 2 alignment
380 D3DX12_ASSERT(0 == (uAlign & (uAlign - 1)));
381 T uMask = uAlign - 1;
382 T uResult = (uValue + uMask) & ~uMask;
383 D3DX12_ASSERT(uResult >= uValue);
384 D3DX12_ASSERT(0 == (uResult % uAlign));
385 return uResult;
386}
387
388//------------------------------------------------------------------------------------------------
389template< typename T >
390inline T D3DX12AlignAtLeast(T uValue, T uAlign)
391{
392 T aligned = D3DX12Align(uValue, uAlign);
393 return aligned > uAlign ? aligned : uAlign;
394}
395
396inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
397 D3D12_RESOURCE_DESC1& LclDesc,
398 const D3D12_RESOURCE_DESC1* pDesc,
399 const bool tightAlignmentSupported = false,
400 const bool alignAsCommitted = false)
401{
402 return D3DX12ConditionallyExpandAPIDesc(static_cast<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc), tightAlignmentSupported, alignAsCommitted);
403}
404
405#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
406//------------------------------------------------------------------------------------------------
407// The difference between D3DX12GetCopyableFootprints and ID3D12Device::GetCopyableFootprints
408// is that this one loses a lot of error checking by assuming the arguments are correct
409inline bool D3DX12GetCopyableFootprints(
410 _In_ const D3D12_RESOURCE_DESC1& ResourceDesc,
411 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
412 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
413 UINT64 BaseOffset,
414 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
415 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
416 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
417 _Out_opt_ UINT64* pTotalBytes)
418{
419 constexpr UINT64 uint64_max = ~0ull;
420 UINT64 TotalBytes = uint64_max;
421 UINT uSubRes = 0;
422
423 bool bResourceOverflow = false;
424 TotalBytes = 0;
425
426 const DXGI_FORMAT Format = ResourceDesc.Format;
427
428 CD3DX12_RESOURCE_DESC1 LresourceDesc;
429 const CD3DX12_RESOURCE_DESC1& resourceDesc = *D3DX12ConditionallyExpandAPIDesc(LresourceDesc, &ResourceDesc);
430
431 // Check if its a valid format
432 D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
433
434 // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
435 if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
436 {
437 return false;
438 }
439
440 const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
441 const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
442 const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
443
444 for (; uSubRes < NumSubresources; ++uSubRes)
445 {
446 bool bOverflow = false;
447 UINT Subresource = FirstSubresource + uSubRes;
448
449 D3DX12_ASSERT(resourceDesc.MipLevels != 0);
450 UINT subresourceCount = resourceDesc.MipLevels * resourceDesc.ArraySize() * D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(resourceDesc.Format);
451
452 if (Subresource > subresourceCount)
453 {
454 break;
455 }
456
457 TotalBytes = D3DX12Align< UINT64 >( TotalBytes, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT );
458
459 UINT MipLevel, ArraySlice, PlaneSlice;
460 D3D12DecomposeSubresource(Subresource, resourceDesc.MipLevels, resourceDesc.ArraySize(), /*_Out_*/MipLevel, /*_Out_*/ArraySlice, /*_Out_*/PlaneSlice);
461
462 const UINT64 Width = D3DX12AlignAtLeast<UINT64>(resourceDesc.Width >> MipLevel, WidthAlignment);
463 const UINT Height = D3DX12AlignAtLeast(resourceDesc.Height >> MipLevel, HeightAlignment);
464 const UINT16 Depth = D3DX12AlignAtLeast<UINT16>(resourceDesc.Depth() >> MipLevel, DepthAlignment);
465
466 // Adjust for the current PlaneSlice. Most formats have only one plane.
467 DXGI_FORMAT PlaneFormat;
468 UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
469 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
470
471 D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
472 auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
473 Placement.Format = PlaneFormat;
474 Placement.Width = PlaneWidth;
475 Placement.Height = PlaneHeight;
476 Placement.Depth = Depth;
477
478 // Calculate row pitch
479 UINT MinPlaneRowPitch = 0;
480 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, MinPlanePitchWidth, MinPlaneRowPitch);
481
482 // Formats with more than one plane choose a larger pitch alignment to ensure that each plane begins on the row
483 // immediately following the previous plane while still adhering to subresource alignment restrictions.
484 static_assert( D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT >= D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
485 && ((D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT % D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) == 0),
486 "D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT must be >= and evenly divisible by D3D12_TEXTURE_DATA_PITCH_ALIGNMENT." );
487
488 Placement.RowPitch = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format)
489 ? D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT )
490 : D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT );
491
492 if (pRowSizeInBytes)
493 {
494 UINT PlaneRowSize = 0;
495 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, PlaneWidth, PlaneRowSize);
496
497 pRowSizeInBytes[uSubRes] = PlaneRowSize;
498 }
499
500 // Number of rows (accounting for block compression and additional planes)
501 UINT NumRows = 0;
502 if (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format))
503 {
504 NumRows = PlaneHeight;
505 }
506 else
507 {
508 D3DX12_ASSERT(Height % HeightAlignment == 0);
509 NumRows = Height / HeightAlignment;
510 }
511
512 if (pNumRows)
513 {
514 pNumRows[uSubRes] = NumRows;
515 }
516
517 // Offsetting
518 if (pLayouts)
519 {
520 pLayouts[uSubRes].Offset = (bOverflow ? uint64_max : TotalBytes + BaseOffset);
521 }
522
523 const UINT16 NumSlices = Depth;
524 const UINT64 SubresourceSize = (NumRows * NumSlices - 1) * Placement.RowPitch + MinPlaneRowPitch;
525
526 // uint64 addition with overflow checking
527 TotalBytes = TotalBytes + SubresourceSize;
528 if(TotalBytes < SubresourceSize)
529 {
530 TotalBytes = uint64_max;
531 }
532 bResourceOverflow = bResourceOverflow || bOverflow;
533 }
534
535 // Overflow error
536 if (bResourceOverflow)
537 {
538 TotalBytes = uint64_max;
539 }
540
541
542 if (pLayouts)
543 {
544 memset( pLayouts + uSubRes, -1, sizeof( *pLayouts ) * (NumSubresources - uSubRes) );
545 }
546 if (pNumRows)
547 {
548 memset(pNumRows + uSubRes, -1, sizeof(*pNumRows) * (NumSubresources - uSubRes));
549 }
550 if (pRowSizeInBytes)
551 {
552 memset(pRowSizeInBytes + uSubRes, -1, sizeof(*pRowSizeInBytes) * (NumSubresources - uSubRes));
553 }
554 if (pTotalBytes)
555 {
556 *pTotalBytes = TotalBytes;
557 }
558 if(TotalBytes == uint64_max)
559 {
560 return false;
561 }
562 return true;
563}
564
565//------------------------------------------------------------------------------------------------
566inline D3D12_RESOURCE_DESC1 D3DX12ResourceDesc0ToDesc1(D3D12_RESOURCE_DESC const& desc0)
567{
568 D3D12_RESOURCE_DESC1 desc1;
569 desc1.Dimension = desc0.Dimension;
570 desc1.Alignment = desc0.Alignment;
571 desc1.Width = desc0.Width;
572 desc1.Height = desc0.Height;
573 desc1.DepthOrArraySize = desc0.DepthOrArraySize;
574 desc1.MipLevels = desc0.MipLevels;
575 desc1.Format = desc0.Format;
576 desc1.SampleDesc.Count = desc0.SampleDesc.Count;
577 desc1.SampleDesc.Quality = desc0.SampleDesc.Quality;
578 desc1.Layout = desc0.Layout;
579 desc1.Flags = desc0.Flags;
580 desc1.SamplerFeedbackMipRegion.Width = 0;
581 desc1.SamplerFeedbackMipRegion.Height = 0;
582 desc1.SamplerFeedbackMipRegion.Depth = 0;
583 return desc1;
584}
585
586//------------------------------------------------------------------------------------------------
587inline bool D3DX12GetCopyableFootprints(
588 _In_ const D3D12_RESOURCE_DESC& pResourceDesc,
589 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
590 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
591 UINT64 BaseOffset,
592 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
593 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
594 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
595 _Out_opt_ UINT64* pTotalBytes)
596{
597 // From D3D12_RESOURCE_DESC to D3D12_RESOURCE_DESC1
598 D3D12_RESOURCE_DESC1 desc = D3DX12ResourceDesc0ToDesc1(pResourceDesc);
599 return D3DX12GetCopyableFootprints(
600 *static_cast<CD3DX12_RESOURCE_DESC1*>(&desc),// From D3D12_RESOURCE_DESC1 to CD3DX12_RESOURCE_DESC1
601 FirstSubresource,
602 NumSubresources,
603 BaseOffset,
604 pLayouts,
605 pNumRows,
606 pRowSizeInBytes,
607 pTotalBytes);
608}
609
610#endif // D3D12_SDK_VERSION >= 606
611
612
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h
new file mode 100644
index 0000000..e194d30
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h
@@ -0,0 +1,1227 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#include "d3dx12_default.h"
16
17//------------------------------------------------------------------------------------------------
18struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
19{
20 CD3DX12_DESCRIPTOR_RANGE() = default;
21 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
22 D3D12_DESCRIPTOR_RANGE(o)
23 {}
24 CD3DX12_DESCRIPTOR_RANGE(
25 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
26 UINT numDescriptors,
27 UINT baseShaderRegister,
28 UINT registerSpace = 0,
29 UINT offsetInDescriptorsFromTableStart =
30 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
31 {
32 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
33 }
34
35 inline void Init(
36 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
37 UINT numDescriptors,
38 UINT baseShaderRegister,
39 UINT registerSpace = 0,
40 UINT offsetInDescriptorsFromTableStart =
41 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
42 {
43 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
44 }
45
46 static inline void Init(
47 _Out_ D3D12_DESCRIPTOR_RANGE &range,
48 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
49 UINT numDescriptors,
50 UINT baseShaderRegister,
51 UINT registerSpace = 0,
52 UINT offsetInDescriptorsFromTableStart =
53 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
54 {
55 range.RangeType = rangeType;
56 range.NumDescriptors = numDescriptors;
57 range.BaseShaderRegister = baseShaderRegister;
58 range.RegisterSpace = registerSpace;
59 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
60 }
61};
62
63//------------------------------------------------------------------------------------------------
64struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
65{
66 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
67 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
68 D3D12_ROOT_DESCRIPTOR_TABLE(o)
69 {}
70 CD3DX12_ROOT_DESCRIPTOR_TABLE(
71 UINT numDescriptorRanges,
72 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
73 {
74 Init(numDescriptorRanges, _pDescriptorRanges);
75 }
76
77 inline void Init(
78 UINT numDescriptorRanges,
79 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
80 {
81 Init(*this, numDescriptorRanges, _pDescriptorRanges);
82 }
83
84 static inline void Init(
85 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
86 UINT numDescriptorRanges,
87 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
88 {
89 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
90 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
91 }
92};
93
94//------------------------------------------------------------------------------------------------
95struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
96{
97 CD3DX12_ROOT_CONSTANTS() = default;
98 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
99 D3D12_ROOT_CONSTANTS(o)
100 {}
101 CD3DX12_ROOT_CONSTANTS(
102 UINT num32BitValues,
103 UINT shaderRegister,
104 UINT registerSpace = 0) noexcept
105 {
106 Init(num32BitValues, shaderRegister, registerSpace);
107 }
108
109 inline void Init(
110 UINT num32BitValues,
111 UINT shaderRegister,
112 UINT registerSpace = 0) noexcept
113 {
114 Init(*this, num32BitValues, shaderRegister, registerSpace);
115 }
116
117 static inline void Init(
118 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
119 UINT num32BitValues,
120 UINT shaderRegister,
121 UINT registerSpace = 0) noexcept
122 {
123 rootConstants.Num32BitValues = num32BitValues;
124 rootConstants.ShaderRegister = shaderRegister;
125 rootConstants.RegisterSpace = registerSpace;
126 }
127};
128
129//------------------------------------------------------------------------------------------------
130struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
131{
132 CD3DX12_ROOT_DESCRIPTOR() = default;
133 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
134 D3D12_ROOT_DESCRIPTOR(o)
135 {}
136 CD3DX12_ROOT_DESCRIPTOR(
137 UINT shaderRegister,
138 UINT registerSpace = 0) noexcept
139 {
140 Init(shaderRegister, registerSpace);
141 }
142
143 inline void Init(
144 UINT shaderRegister,
145 UINT registerSpace = 0) noexcept
146 {
147 Init(*this, shaderRegister, registerSpace);
148 }
149
150 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
151 {
152 table.ShaderRegister = shaderRegister;
153 table.RegisterSpace = registerSpace;
154 }
155};
156
157//------------------------------------------------------------------------------------------------
158struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
159{
160 CD3DX12_ROOT_PARAMETER() = default;
161 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
162 D3D12_ROOT_PARAMETER(o)
163 {}
164
165 static inline void InitAsDescriptorTable(
166 _Out_ D3D12_ROOT_PARAMETER &rootParam,
167 UINT numDescriptorRanges,
168 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
169 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
170 {
171 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
172 rootParam.ShaderVisibility = visibility;
173 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
174 }
175
176 static inline void InitAsConstants(
177 _Out_ D3D12_ROOT_PARAMETER &rootParam,
178 UINT num32BitValues,
179 UINT shaderRegister,
180 UINT registerSpace = 0,
181 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
182 {
183 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
184 rootParam.ShaderVisibility = visibility;
185 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
186 }
187
188 static inline void InitAsConstantBufferView(
189 _Out_ D3D12_ROOT_PARAMETER &rootParam,
190 UINT shaderRegister,
191 UINT registerSpace = 0,
192 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
193 {
194 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
195 rootParam.ShaderVisibility = visibility;
196 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
197 }
198
199 static inline void InitAsShaderResourceView(
200 _Out_ D3D12_ROOT_PARAMETER &rootParam,
201 UINT shaderRegister,
202 UINT registerSpace = 0,
203 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
204 {
205 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
206 rootParam.ShaderVisibility = visibility;
207 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
208 }
209
210 static inline void InitAsUnorderedAccessView(
211 _Out_ D3D12_ROOT_PARAMETER &rootParam,
212 UINT shaderRegister,
213 UINT registerSpace = 0,
214 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
215 {
216 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
217 rootParam.ShaderVisibility = visibility;
218 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
219 }
220
221 inline void InitAsDescriptorTable(
222 UINT numDescriptorRanges,
223 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
224 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
225 {
226 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
227 }
228
229 inline void InitAsConstants(
230 UINT num32BitValues,
231 UINT shaderRegister,
232 UINT registerSpace = 0,
233 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
234 {
235 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
236 }
237
238 inline void InitAsConstantBufferView(
239 UINT shaderRegister,
240 UINT registerSpace = 0,
241 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
242 {
243 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
244 }
245
246 inline void InitAsShaderResourceView(
247 UINT shaderRegister,
248 UINT registerSpace = 0,
249 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
250 {
251 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
252 }
253
254 inline void InitAsUnorderedAccessView(
255 UINT shaderRegister,
256 UINT registerSpace = 0,
257 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
258 {
259 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
260 }
261};
262
263//------------------------------------------------------------------------------------------------
264struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
265{
266 CD3DX12_STATIC_SAMPLER_DESC() = default;
267 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
268 D3D12_STATIC_SAMPLER_DESC(o)
269 {}
270 CD3DX12_STATIC_SAMPLER_DESC(
271 UINT shaderRegister,
272 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
273 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
274 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
275 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
276 FLOAT mipLODBias = 0,
277 UINT maxAnisotropy = 16,
278 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
279 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
280 FLOAT minLOD = 0.f,
281 FLOAT maxLOD = D3D12_FLOAT32_MAX,
282 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
283 UINT registerSpace = 0) noexcept
284 {
285 Init(
286 shaderRegister,
287 filter,
288 addressU,
289 addressV,
290 addressW,
291 mipLODBias,
292 maxAnisotropy,
293 comparisonFunc,
294 borderColor,
295 minLOD,
296 maxLOD,
297 shaderVisibility,
298 registerSpace);
299 }
300
301 static inline void Init(
302 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
303 UINT shaderRegister,
304 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
305 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
306 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
307 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
308 FLOAT mipLODBias = 0,
309 UINT maxAnisotropy = 16,
310 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
311 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
312 FLOAT minLOD = 0.f,
313 FLOAT maxLOD = D3D12_FLOAT32_MAX,
314 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
315 UINT registerSpace = 0) noexcept
316 {
317 samplerDesc.ShaderRegister = shaderRegister;
318 samplerDesc.Filter = filter;
319 samplerDesc.AddressU = addressU;
320 samplerDesc.AddressV = addressV;
321 samplerDesc.AddressW = addressW;
322 samplerDesc.MipLODBias = mipLODBias;
323 samplerDesc.MaxAnisotropy = maxAnisotropy;
324 samplerDesc.ComparisonFunc = comparisonFunc;
325 samplerDesc.BorderColor = borderColor;
326 samplerDesc.MinLOD = minLOD;
327 samplerDesc.MaxLOD = maxLOD;
328 samplerDesc.ShaderVisibility = shaderVisibility;
329 samplerDesc.RegisterSpace = registerSpace;
330 }
331 inline void Init(
332 UINT shaderRegister,
333 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
334 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
335 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
336 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
337 FLOAT mipLODBias = 0,
338 UINT maxAnisotropy = 16,
339 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
340 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
341 FLOAT minLOD = 0.f,
342 FLOAT maxLOD = D3D12_FLOAT32_MAX,
343 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
344 UINT registerSpace = 0) noexcept
345 {
346 Init(
347 *this,
348 shaderRegister,
349 filter,
350 addressU,
351 addressV,
352 addressW,
353 mipLODBias,
354 maxAnisotropy,
355 comparisonFunc,
356 borderColor,
357 minLOD,
358 maxLOD,
359 shaderVisibility,
360 registerSpace);
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
366struct CD3DX12_STATIC_SAMPLER_DESC1 : public D3D12_STATIC_SAMPLER_DESC1
367{
368 CD3DX12_STATIC_SAMPLER_DESC1() = default;
369 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC &o) noexcept
370 {
371 memcpy(this, &o, sizeof(D3D12_STATIC_SAMPLER_DESC));
372 Flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE;
373 }
374 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC1 & o) noexcept :
375 D3D12_STATIC_SAMPLER_DESC1(o)
376 {}
377 CD3DX12_STATIC_SAMPLER_DESC1(
378 UINT shaderRegister,
379 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
380 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
381 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
382 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
383 FLOAT mipLODBias = 0,
384 UINT maxAnisotropy = 16,
385 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
386 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
387 FLOAT minLOD = 0.f,
388 FLOAT maxLOD = D3D12_FLOAT32_MAX,
389 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
390 UINT registerSpace = 0,
391 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
392 {
393 Init(
394 shaderRegister,
395 filter,
396 addressU,
397 addressV,
398 addressW,
399 mipLODBias,
400 maxAnisotropy,
401 comparisonFunc,
402 borderColor,
403 minLOD,
404 maxLOD,
405 shaderVisibility,
406 registerSpace,
407 flags);
408 }
409
410 static inline void Init(
411 _Out_ D3D12_STATIC_SAMPLER_DESC1 &samplerDesc,
412 UINT shaderRegister,
413 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
414 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
415 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
416 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
417 FLOAT mipLODBias = 0,
418 UINT maxAnisotropy = 16,
419 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
420 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
421 FLOAT minLOD = 0.f,
422 FLOAT maxLOD = D3D12_FLOAT32_MAX,
423 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
424 UINT registerSpace = 0,
425 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
426 {
427 samplerDesc.ShaderRegister = shaderRegister;
428 samplerDesc.Filter = filter;
429 samplerDesc.AddressU = addressU;
430 samplerDesc.AddressV = addressV;
431 samplerDesc.AddressW = addressW;
432 samplerDesc.MipLODBias = mipLODBias;
433 samplerDesc.MaxAnisotropy = maxAnisotropy;
434 samplerDesc.ComparisonFunc = comparisonFunc;
435 samplerDesc.BorderColor = borderColor;
436 samplerDesc.MinLOD = minLOD;
437 samplerDesc.MaxLOD = maxLOD;
438 samplerDesc.ShaderVisibility = shaderVisibility;
439 samplerDesc.RegisterSpace = registerSpace;
440 samplerDesc.Flags = flags;
441 }
442 inline void Init(
443 UINT shaderRegister,
444 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
445 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
446 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
447 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
448 FLOAT mipLODBias = 0,
449 UINT maxAnisotropy = 16,
450 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
451 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
452 FLOAT minLOD = 0.f,
453 FLOAT maxLOD = D3D12_FLOAT32_MAX,
454 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
455 UINT registerSpace = 0,
456 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
457 {
458 Init(
459 *this,
460 shaderRegister,
461 filter,
462 addressU,
463 addressV,
464 addressW,
465 mipLODBias,
466 maxAnisotropy,
467 comparisonFunc,
468 borderColor,
469 minLOD,
470 maxLOD,
471 shaderVisibility,
472 registerSpace,
473 flags);
474 }
475};
476#endif // D3D12_SDK_VERSION >= 609
477
478//------------------------------------------------------------------------------------------------
479struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
480{
481 CD3DX12_ROOT_SIGNATURE_DESC() = default;
482 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
483 D3D12_ROOT_SIGNATURE_DESC(o)
484 {}
485 CD3DX12_ROOT_SIGNATURE_DESC(
486 UINT numParameters,
487 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
488 UINT numStaticSamplers = 0,
489 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
490 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
491 {
492 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
493 }
494 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
495 {
496 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
497 }
498
499 inline void Init(
500 UINT numParameters,
501 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
502 UINT numStaticSamplers = 0,
503 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
504 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
505 {
506 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
507 }
508
509 static inline void Init(
510 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
511 UINT numParameters,
512 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
513 UINT numStaticSamplers = 0,
514 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
515 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
516 {
517 desc.NumParameters = numParameters;
518 desc.pParameters = _pParameters;
519 desc.NumStaticSamplers = numStaticSamplers;
520 desc.pStaticSamplers = _pStaticSamplers;
521 desc.Flags = flags;
522 }
523};
524
525//------------------------------------------------------------------------------------------------
526struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
527{
528 CD3DX12_DESCRIPTOR_RANGE1() = default;
529 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
530 D3D12_DESCRIPTOR_RANGE1(o)
531 {}
532 CD3DX12_DESCRIPTOR_RANGE1(
533 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
534 UINT numDescriptors,
535 UINT baseShaderRegister,
536 UINT registerSpace = 0,
537 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
538 UINT offsetInDescriptorsFromTableStart =
539 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
540 {
541 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
542 }
543
544 inline void Init(
545 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
546 UINT numDescriptors,
547 UINT baseShaderRegister,
548 UINT registerSpace = 0,
549 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
550 UINT offsetInDescriptorsFromTableStart =
551 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
552 {
553 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
554 }
555
556 static inline void Init(
557 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
558 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
559 UINT numDescriptors,
560 UINT baseShaderRegister,
561 UINT registerSpace = 0,
562 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
563 UINT offsetInDescriptorsFromTableStart =
564 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
565 {
566 range.RangeType = rangeType;
567 range.NumDescriptors = numDescriptors;
568 range.BaseShaderRegister = baseShaderRegister;
569 range.RegisterSpace = registerSpace;
570 range.Flags = flags;
571 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
572 }
573};
574
575//------------------------------------------------------------------------------------------------
576struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
577{
578 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
579 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
580 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
581 {}
582 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
583 UINT numDescriptorRanges,
584 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
585 {
586 Init(numDescriptorRanges, _pDescriptorRanges);
587 }
588
589 inline void Init(
590 UINT numDescriptorRanges,
591 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
592 {
593 Init(*this, numDescriptorRanges, _pDescriptorRanges);
594 }
595
596 static inline void Init(
597 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
598 UINT numDescriptorRanges,
599 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
600 {
601 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
602 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
603 }
604};
605
606//------------------------------------------------------------------------------------------------
607struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
608{
609 CD3DX12_ROOT_DESCRIPTOR1() = default;
610 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
611 D3D12_ROOT_DESCRIPTOR1(o)
612 {}
613 CD3DX12_ROOT_DESCRIPTOR1(
614 UINT shaderRegister,
615 UINT registerSpace = 0,
616 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
617 {
618 Init(shaderRegister, registerSpace, flags);
619 }
620
621 inline void Init(
622 UINT shaderRegister,
623 UINT registerSpace = 0,
624 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
625 {
626 Init(*this, shaderRegister, registerSpace, flags);
627 }
628
629 static inline void Init(
630 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
631 UINT shaderRegister,
632 UINT registerSpace = 0,
633 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
634 {
635 table.ShaderRegister = shaderRegister;
636 table.RegisterSpace = registerSpace;
637 table.Flags = flags;
638 }
639};
640
641//------------------------------------------------------------------------------------------------
642struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
643{
644 CD3DX12_ROOT_PARAMETER1() = default;
645 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
646 D3D12_ROOT_PARAMETER1(o)
647 {}
648
649 static inline void InitAsDescriptorTable(
650 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
651 UINT numDescriptorRanges,
652 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
653 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
654 {
655 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
656 rootParam.ShaderVisibility = visibility;
657 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
658 }
659
660 static inline void InitAsConstants(
661 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
662 UINT num32BitValues,
663 UINT shaderRegister,
664 UINT registerSpace = 0,
665 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
666 {
667 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
668 rootParam.ShaderVisibility = visibility;
669 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
670 }
671
672 static inline void InitAsConstantBufferView(
673 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
674 UINT shaderRegister,
675 UINT registerSpace = 0,
676 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
677 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
678 {
679 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
680 rootParam.ShaderVisibility = visibility;
681 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
682 }
683
684 static inline void InitAsShaderResourceView(
685 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
686 UINT shaderRegister,
687 UINT registerSpace = 0,
688 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
689 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
690 {
691 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
692 rootParam.ShaderVisibility = visibility;
693 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
694 }
695
696 static inline void InitAsUnorderedAccessView(
697 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
698 UINT shaderRegister,
699 UINT registerSpace = 0,
700 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
701 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
702 {
703 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
704 rootParam.ShaderVisibility = visibility;
705 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
706 }
707
708 inline void InitAsDescriptorTable(
709 UINT numDescriptorRanges,
710 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
711 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
712 {
713 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
714 }
715
716 inline void InitAsConstants(
717 UINT num32BitValues,
718 UINT shaderRegister,
719 UINT registerSpace = 0,
720 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
721 {
722 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
723 }
724
725 inline void InitAsConstantBufferView(
726 UINT shaderRegister,
727 UINT registerSpace = 0,
728 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
729 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
730 {
731 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
732 }
733
734 inline void InitAsShaderResourceView(
735 UINT shaderRegister,
736 UINT registerSpace = 0,
737 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
738 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
739 {
740 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
741 }
742
743 inline void InitAsUnorderedAccessView(
744 UINT shaderRegister,
745 UINT registerSpace = 0,
746 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
747 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
748 {
749 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
750 }
751};
752
753//------------------------------------------------------------------------------------------------
754struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
755{
756 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
757 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
758 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
759 {}
760 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
761 {
762 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
763 Desc_1_0 = o;
764 }
765 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
766 {
767 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
768 Desc_1_1 = o;
769 }
770#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
771 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC2& o) noexcept
772 {
773 Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
774 Desc_1_2 = o;
775 }
776#endif
777 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
778 UINT numParameters,
779 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
780 UINT numStaticSamplers = 0,
781 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
782 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
783 {
784 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
785 }
786 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
787 UINT numParameters,
788 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
789 UINT numStaticSamplers = 0,
790 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
791 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
792 {
793 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
794 }
795 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
796 {
797 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
798 }
799
800 inline void Init_1_0(
801 UINT numParameters,
802 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
803 UINT numStaticSamplers = 0,
804 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
805 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
806 {
807 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
808 }
809
810 static inline void Init_1_0(
811 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
812 UINT numParameters,
813 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
814 UINT numStaticSamplers = 0,
815 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
816 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
817 {
818 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
819 desc.Desc_1_0.NumParameters = numParameters;
820 desc.Desc_1_0.pParameters = _pParameters;
821 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
822 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
823 desc.Desc_1_0.Flags = flags;
824 }
825
826 inline void Init_1_1(
827 UINT numParameters,
828 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
829 UINT numStaticSamplers = 0,
830 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
831 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
832 {
833 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
834 }
835
836 static inline void Init_1_1(
837 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
838 UINT numParameters,
839 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
840 UINT numStaticSamplers = 0,
841 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
842 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
843 {
844 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
845 desc.Desc_1_1.NumParameters = numParameters;
846 desc.Desc_1_1.pParameters = _pParameters;
847 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
848 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
849 desc.Desc_1_1.Flags = flags;
850 }
851
852#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
853 static inline void Init_1_2(
854 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC& desc,
855 UINT numParameters,
856 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
857 UINT numStaticSamplers = 0,
858 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1* _pStaticSamplers = nullptr,
859 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
860 {
861 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
862 desc.Desc_1_2.NumParameters = numParameters;
863 desc.Desc_1_2.pParameters = _pParameters;
864 desc.Desc_1_2.NumStaticSamplers = numStaticSamplers;
865 desc.Desc_1_2.pStaticSamplers = _pStaticSamplers;
866 desc.Desc_1_2.Flags = flags;
867 }
868#endif
869};
870
871//------------------------------------------------------------------------------------------------
872struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
873{
874 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
875 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
876 D3D12_CPU_DESCRIPTOR_HANDLE(o)
877 {}
878 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
879 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
880 {
881 InitOffsetted(other, offsetScaledByIncrementSize);
882 }
883 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
884 {
885 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
886 }
887 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
888 {
889 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
890 return *this;
891 }
892 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
893 {
894 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
895 return *this;
896 }
897 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
898 {
899 return (ptr == other.ptr);
900 }
901 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
902 {
903 return (ptr != other.ptr);
904 }
905 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
906 {
907 ptr = other.ptr;
908 return *this;
909 }
910
911 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
912 {
913 InitOffsetted(*this, base, offsetScaledByIncrementSize);
914 }
915
916 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
917 {
918 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
919 }
920
921 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
922 {
923 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
924 }
925
926 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
927 {
928 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
929 }
930};
931
932//------------------------------------------------------------------------------------------------
933struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
934{
935 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
936 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
937 D3D12_GPU_DESCRIPTOR_HANDLE(o)
938 {}
939 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
940 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
941 {
942 InitOffsetted(other, offsetScaledByIncrementSize);
943 }
944 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
945 {
946 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
947 }
948 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
949 {
950 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
951 return *this;
952 }
953 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
954 {
955 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
956 return *this;
957 }
958 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
959 {
960 return (ptr == other.ptr);
961 }
962 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
963 {
964 return (ptr != other.ptr);
965 }
966 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
967 {
968 ptr = other.ptr;
969 return *this;
970 }
971
972 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
973 {
974 InitOffsetted(*this, base, offsetScaledByIncrementSize);
975 }
976
977 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
978 {
979 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
980 }
981
982 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
983 {
984 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
985 }
986
987 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
988 {
989 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
990 }
991};
992
993//------------------------------------------------------------------------------------------------
994// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
995// To help enable root signature 1.1 features when they are available and not require maintaining
996// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
997// 1.1 is not supported.
998#ifdef __clang__
999#pragma clang diagnostic push
1000#pragma clang diagnostic ignored "-Wcovered-switch-default"
1001#endif
1002
1003inline HRESULT D3DX12SerializeVersionedRootSignature(
1004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
1005 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
1006 _Outptr_ ID3DBlob** ppBlob,
1007 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
1008{
1009 if (ppErrorBlob != nullptr)
1010 {
1011 *ppErrorBlob = nullptr;
1012 }
1013
1014 switch (MaxVersion)
1015 {
1016 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1017 switch (pRootSignatureDesc->Version)
1018 {
1019 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1020 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1021
1022 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1023#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1024 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1025#endif
1026 {
1027 HRESULT hr = S_OK;
1028 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1029
1030 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
1031 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
1032 if (ParametersSize > 0 && pParameters == nullptr)
1033 {
1034 hr = E_OUTOFMEMORY;
1035 }
1036 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
1037
1038 if (SUCCEEDED(hr))
1039 {
1040 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1041 {
1042 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
1043 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
1044 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
1045
1046 switch (desc_1_1.pParameters[n].ParameterType)
1047 {
1048 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
1049 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
1050 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
1051 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
1052 break;
1053
1054 case D3D12_ROOT_PARAMETER_TYPE_CBV:
1055 case D3D12_ROOT_PARAMETER_TYPE_SRV:
1056 case D3D12_ROOT_PARAMETER_TYPE_UAV:
1057 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
1058 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
1059 break;
1060
1061 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
1062 {
1063 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
1064
1065 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
1066 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
1067 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
1068 {
1069 hr = E_OUTOFMEMORY;
1070 }
1071 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
1072
1073 if (SUCCEEDED(hr))
1074 {
1075 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
1076 {
1077 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
1078 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
1079 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
1080 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
1081 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
1082 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
1083 }
1084 }
1085
1086 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
1087 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
1088 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
1089 }
1090 break;
1091
1092 default:
1093 break;
1094 }
1095 }
1096 }
1097
1098 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1099#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1100 if (desc_1_1.NumStaticSamplers > 0 && pRootSignatureDesc->Version == D3D_ROOT_SIGNATURE_VERSION_1_2)
1101 {
1102 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1103 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1104
1105 if (pStaticSamplers == nullptr)
1106 {
1107 hr = E_OUTOFMEMORY;
1108 }
1109 else
1110 {
1111 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1112 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1113 {
1114 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1115 {
1116 hr = E_INVALIDARG;
1117 break;
1118 }
1119 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1120 }
1121 }
1122 }
1123#endif
1124
1125 if (SUCCEEDED(hr))
1126 {
1127 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);
1128 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1129 }
1130
1131 if (pParameters)
1132 {
1133 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1134 {
1135 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
1136 {
1137 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
1138 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
1139 }
1140 }
1141 HeapFree(GetProcessHeap(), 0, pParameters);
1142 }
1143
1144 if (pStaticSamplers)
1145 {
1146 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1147 }
1148
1149 return hr;
1150 }
1151
1152 default:
1153 break;
1154 }
1155 break;
1156
1157 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1158 switch (pRootSignatureDesc->Version)
1159 {
1160 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1161 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1162 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1163
1164#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1165 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1166 {
1167 HRESULT hr = S_OK;
1168 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1169
1170 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1171 if (desc_1_1.NumStaticSamplers > 0)
1172 {
1173 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1174 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1175
1176 if (pStaticSamplers == nullptr)
1177 {
1178 hr = E_OUTOFMEMORY;
1179 }
1180 else
1181 {
1182 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1183 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1184 {
1185 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1186 {
1187 hr = E_INVALIDARG;
1188 break;
1189 }
1190 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1191 }
1192 }
1193 }
1194
1195 if (SUCCEEDED(hr))
1196 {
1197 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);
1198 hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
1199 }
1200
1201 if (pStaticSamplers)
1202 {
1203 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1204 }
1205
1206 return hr;
1207 }
1208#endif
1209
1210 default:
1211 break;
1212 }
1213 break;
1214
1215#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1216 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1217#endif
1218 default:
1219 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1220 }
1221
1222 return E_INVALIDARG;
1223}
1224
1225#ifdef __clang__
1226#pragma clang diagnostic pop
1227#endif
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h
new file mode 100644
index 0000000..579ecc8
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h
@@ -0,0 +1,2570 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//================================================================================================
19// D3DX12 State Object Creation Helpers
20//
21// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
22// Uses STL
23//
24// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see its public methods).
25// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
26// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
27// etc.). The subobject helpers each have methods specific to the subobject for configuring its
28// contents.
29//
30//================================================================================================
31#include <list>
32#include <forward_list>
33#include <vector>
34#include <memory>
35#include <string>
36#include <vector>
37#ifndef D3DX12_USE_ATL
38#include <wrl/client.h>
39#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
40#define D3DX12_COM_PTR_GET(x) x.Get()
41#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
42#else
43#include <atlbase.h>
44#define D3DX12_COM_PTR ATL::CComPtr
45#define D3DX12_COM_PTR_GET(x) x.p
46#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
47#endif
48
49//------------------------------------------------------------------------------------------------
50class CD3DX12_STATE_OBJECT_DESC
51{
52public:
53 CD3DX12_STATE_OBJECT_DESC() noexcept
54 {
55 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
56 }
57 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
58 {
59 Init(Type);
60 }
61 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
62 CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
63 CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
64 CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
65 CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
66 operator const D3D12_STATE_OBJECT_DESC& ()
67 {
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
69 m_RepointedSubobjectVectors.clear();
70 m_RepointedPrograms.clear();
71#endif
72 m_RepointedAssociations.clear();
73 m_SubobjectArray.clear();
74 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
75 // Flatten subobjects into an array (each flattened subobject still has a
76 // member that's a pointer to its desc that's not flattened)
77 for (auto Iter = m_SubobjectList.begin();
78 Iter != m_SubobjectList.end(); Iter++)
79 {
80 m_SubobjectArray.push_back(*Iter);
81 // Store new location in array so we can redirect pointers contained in subobjects
82 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
83 }
84 // For subobjects with pointer fields, create a new copy of those subobject definitions
85 // with fixed pointers
86 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
87 {
88 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
89 {
90 auto pOriginalSubobjectAssociation =
91 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
92 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
93 auto pWrapper =
94 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
95 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
96 m_RepointedAssociations.push_back(Repointed);
97 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
98 }
99#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
100 else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
101 {
102 auto originalGenericProgramDesc =
103 static_cast<const D3D12_GENERIC_PROGRAM_DESC*>(m_SubobjectArray[i].pDesc);
104 D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
105 if (originalGenericProgramDesc->NumSubobjects > 0)
106 {
107 m_RepointedSubobjectVectors.emplace_back(std::vector<const D3D12_STATE_SUBOBJECT*>());
108 std::vector<D3D12_STATE_SUBOBJECT const*>& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
109 repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
110 for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
111 {
112 auto pWrapper =
113 static_cast<const SUBOBJECT_WRAPPER*>(originalGenericProgramDesc->ppSubobjects[s]);
114 repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
115 }
116 // Below: using ugly way to get pointer in case .data() is not defined
117 Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
118 }
119 m_RepointedPrograms.push_back(Repointed);
120 m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
121 }
122#endif
123 }
124 // Below: using ugly way to get pointer in case .data() is not defined
125 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
126 return m_Desc;
127 }
128 operator const D3D12_STATE_OBJECT_DESC* ()
129 {
130 // Cast calls the above final preparation work
131 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
132 }
133
134 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
135 // whose lifetime is owned by this class.
136 // e.g.
137 //
138 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
139 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
140 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
141 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
142 // // data/engine driven
143 // etc.
144 //
145 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
146 // variables instead, passing the state object desc that should point to it into the helper
147 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
148 // In this alternative scenario, the user must keep the subobject alive as long as the state
149 // object it is associated with is alive, else its pointer references will be stale.
150 // e.g.
151 //
152 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
153 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
154 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
155 // // - meaning all exports in the libraries
156 // // are exported
157 // etc.
158
159 template<typename T>
160 T* CreateSubobject()
161 {
162 T* pSubobject = new T(*this);
163 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
164 return pSubobject;
165 }
166
167 template<typename T, typename U>
168 T* CreateSubobject(U&& arg)
169 {
170 T* pSubobject = new T(std::forward<U>(arg), *this);
171 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
172 return pSubobject;
173 }
174
175private:
176 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
177 {
178 SUBOBJECT_WRAPPER Subobject;
179 Subobject.pSubobjectArrayLocation = nullptr;
180 Subobject.Type = Type;
181 Subobject.pDesc = pDesc;
182 m_SubobjectList.push_back(Subobject);
183 m_Desc.NumSubobjects++;
184 return &m_SubobjectList.back();
185 }
186 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
187 {
188 SetStateObjectType(Type);
189 m_Desc.pSubobjects = nullptr;
190 m_Desc.NumSubobjects = 0;
191 m_SubobjectList.clear();
192 m_SubobjectArray.clear();
193 m_RepointedAssociations.clear();
194#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
195 m_RepointedSubobjectVectors.clear();
196 m_RepointedPrograms.clear();
197#endif
198 }
199 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
200 {
201 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
202 // for repointing pointers in subobjects
203 } SUBOBJECT_WRAPPER;
204 D3D12_STATE_OBJECT_DESC m_Desc;
205 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
206 // these can be edited live
207 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
208
209 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
210 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
211 // repointed to flattened array
212
213#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
214 std::list<std::vector<D3D12_STATE_SUBOBJECT const*>>
215 m_RepointedSubobjectVectors;
216 std::list<D3D12_GENERIC_PROGRAM_DESC>
217 m_RepointedPrograms;
218#endif
219
220 template<typename CStr, typename StdStr>
221 class StringContainer
222 {
223 public:
224 CStr LocalCopy(CStr string, bool bSingleString = false)
225 {
226 if (string)
227 {
228 if (bSingleString)
229 {
230 m_Strings.clear();
231 m_Strings.push_back(string);
232 }
233 else
234 {
235 m_Strings.push_back(string);
236 }
237 return m_Strings.back().c_str();
238 }
239 else
240 {
241 return nullptr;
242 }
243 }
244 void clear() noexcept { m_Strings.clear(); }
245 private:
246 std::list<StdStr> m_Strings;
247 };
248
249public:
250 class SUBOBJECT_HELPER_BASE
251 {
252 public:
253 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
254 virtual ~SUBOBJECT_HELPER_BASE() = default;
255 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
256 SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
257 SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
258 SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
259 SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
260 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
261 {
262 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
263 }
264 operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
265 protected:
266 virtual void* Data() noexcept = 0;
267 void Init() noexcept { m_pSubobject = nullptr; }
268 D3D12_STATE_SUBOBJECT* m_pSubobject;
269 };
270
271private:
272 std::list<std::unique_ptr<SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
273
274 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
275 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
276 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
277 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
278 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
279 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
280 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
281 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
282 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
283 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
284 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
285 friend class CD3DX12_NODE_MASK_SUBOBJECT;
286 //TODO: SDK Version check should include all the newly added subobject type for the public release.
287 // The SDK version check will be changed based on when we release state objects.
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
289 friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
290 friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
291 friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
292 friend class CD3DX12_BLEND_SUBOBJECT;
293 friend class CD3DX12_RASTERIZER_SUBOBJECT;
294 friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
295 friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
296 friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
297 friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
298 friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
299 friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
300 friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
301 friend class CD3DX12_FLAGS_SUBOBJECT;
302 friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
303 friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
304 friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
305 friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
306 friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
307 friend class CD3DX12_NODE_HELPER_BASE;
308 friend class CD3DX12_SHADER_NODE;
309 friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
310 friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
311 friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
312 friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
313#endif // D3D12_SDK_VERSION >= 612
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
315 friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
316 friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
317 friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
318 friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
319#endif
320};
321
322//------------------------------------------------------------------------------------------------
323class CD3DX12_DXIL_LIBRARY_SUBOBJECT
324 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
325{
326public:
327 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
328 {
329 Init();
330 }
331 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
332 {
333 Init();
334 AddToStateObject(ContainingStateObject);
335 }
336 CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
337 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
338 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
339 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
340 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
341 {
342 static const D3D12_SHADER_BYTECODE Default = {};
343 m_Desc.DXILLibrary = pCode ? *pCode : Default;
344 }
345 void DefineExport(
346 LPCWSTR Name,
347 LPCWSTR ExportToRename = nullptr,
348 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
349 {
350 D3D12_EXPORT_DESC Export;
351 Export.Name = m_Strings.LocalCopy(Name);
352 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
353 Export.Flags = Flags;
354 m_Exports.push_back(Export);
355 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
356 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
357 }
358 template<size_t N>
359 void DefineExports(LPCWSTR(&Exports)[N])
360 {
361 for (UINT i = 0; i < N; i++)
362 {
363 DefineExport(Exports[i]);
364 }
365 }
366 void DefineExports(const LPCWSTR* Exports, UINT N)
367 {
368 for (UINT i = 0; i < N; i++)
369 {
370 DefineExport(Exports[i]);
371 }
372 }
373 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
374 {
375 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
376 }
377 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
378private:
379 void Init() noexcept
380 {
381 SUBOBJECT_HELPER_BASE::Init();
382 m_Desc = {};
383 m_Strings.clear();
384 m_Exports.clear();
385 }
386 void* Data() noexcept override { return &m_Desc; }
387 D3D12_DXIL_LIBRARY_DESC m_Desc;
388 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
389 std::vector<D3D12_EXPORT_DESC> m_Exports;
390};
391
392//------------------------------------------------------------------------------------------------
393class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
394 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
395{
396public:
397 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
398 {
399 Init();
400 }
401 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
402 {
403 Init();
404 AddToStateObject(ContainingStateObject);
405 }
406 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
407 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
408 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
409 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
410 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
411 {
412 m_Desc.pExistingCollection = pExistingCollection;
413 m_CollectionRef = pExistingCollection;
414 }
415 void DefineExport(
416 LPCWSTR Name,
417 LPCWSTR ExportToRename = nullptr,
418 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
419 {
420 D3D12_EXPORT_DESC Export;
421 Export.Name = m_Strings.LocalCopy(Name);
422 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
423 Export.Flags = Flags;
424 m_Exports.push_back(Export);
425 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
426 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
427 }
428 template<size_t N>
429 void DefineExports(LPCWSTR(&Exports)[N])
430 {
431 for (UINT i = 0; i < N; i++)
432 {
433 DefineExport(Exports[i]);
434 }
435 }
436 void DefineExports(const LPCWSTR* Exports, UINT N)
437 {
438 for (UINT i = 0; i < N; i++)
439 {
440 DefineExport(Exports[i]);
441 }
442 }
443 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
444 {
445 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
446 }
447 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
448private:
449 void Init() noexcept
450 {
451 SUBOBJECT_HELPER_BASE::Init();
452 m_Desc = {};
453 m_CollectionRef = nullptr;
454 m_Strings.clear();
455 m_Exports.clear();
456 }
457 void* Data() noexcept override { return &m_Desc; }
458 D3D12_EXISTING_COLLECTION_DESC m_Desc;
459 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
460 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
461 std::vector<D3D12_EXPORT_DESC> m_Exports;
462};
463
464//------------------------------------------------------------------------------------------------
465class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
466 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
467{
468public:
469 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
470 {
471 Init();
472 }
473 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
474 {
475 Init();
476 AddToStateObject(ContainingStateObject);
477 }
478 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
479 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
480 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
481 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
482 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
483 {
484 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
485 }
486 void AddExport(LPCWSTR Export)
487 {
488 m_Desc.NumExports++;
489 m_Exports.push_back(m_Strings.LocalCopy(Export));
490 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
491 }
492 template<size_t N>
493 void AddExports(LPCWSTR (&Exports)[N])
494 {
495 for (UINT i = 0; i < N; i++)
496 {
497 AddExport(Exports[i]);
498 }
499 }
500 void AddExports(const LPCWSTR* Exports, UINT N)
501 {
502 for (UINT i = 0; i < N; i++)
503 {
504 AddExport(Exports[i]);
505 }
506 }
507 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
508 {
509 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
510 }
511 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
512private:
513 void Init() noexcept
514 {
515 SUBOBJECT_HELPER_BASE::Init();
516 m_Desc = {};
517 m_Strings.clear();
518 m_Exports.clear();
519 }
520 void* Data() noexcept override { return &m_Desc; }
521 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
522 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
523 std::vector<LPCWSTR> m_Exports;
524};
525
526//------------------------------------------------------------------------------------------------
527class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
528 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
529{
530public:
531 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
532 {
533 Init();
534 }
535 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
536 {
537 Init();
538 AddToStateObject(ContainingStateObject);
539 }
540 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
541 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
542 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
543 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
544 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
545 {
546 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
547 }
548 void AddExport(LPCWSTR Export)
549 {
550 m_Desc.NumExports++;
551 m_Exports.push_back(m_Strings.LocalCopy(Export));
552 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
553 }
554 template<size_t N>
555 void AddExports(LPCWSTR (&Exports)[N])
556 {
557 for (UINT i = 0; i < N; i++)
558 {
559 AddExport(Exports[i]);
560 }
561 }
562 void AddExports(const LPCWSTR* Exports, UINT N)
563 {
564 for (UINT i = 0; i < N; i++)
565 {
566 AddExport(Exports[i]);
567 }
568 }
569 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
570 {
571 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
572 }
573 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
574private:
575 void Init() noexcept
576 {
577 SUBOBJECT_HELPER_BASE::Init();
578 m_Desc = {};
579 m_Strings.clear();
580 m_SubobjectName.clear();
581 m_Exports.clear();
582 }
583 void* Data() noexcept override { return &m_Desc; }
584 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
585 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
586 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_SubobjectName;
587 std::vector<LPCWSTR> m_Exports;
588};
589
590//------------------------------------------------------------------------------------------------
591class CD3DX12_HIT_GROUP_SUBOBJECT
592 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
593{
594public:
595 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
596 {
597 Init();
598 }
599 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
600 {
601 Init();
602 AddToStateObject(ContainingStateObject);
603 }
604 CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
605 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
606 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
607 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
608 void SetHitGroupExport(LPCWSTR exportName)
609 {
610 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
611 }
612 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
613 void SetAnyHitShaderImport(LPCWSTR importName)
614 {
615 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
616 }
617 void SetClosestHitShaderImport(LPCWSTR importName)
618 {
619 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
620 }
621 void SetIntersectionShaderImport(LPCWSTR importName)
622 {
623 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
624 }
625 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
626 {
627 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
628 }
629 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
630private:
631 void Init() noexcept
632 {
633 SUBOBJECT_HELPER_BASE::Init();
634 m_Desc = {};
635 for (UINT i = 0; i < m_NumStrings; i++)
636 {
637 m_Strings[i].clear();
638 }
639 }
640 void* Data() noexcept override { return &m_Desc; }
641 D3D12_HIT_GROUP_DESC m_Desc;
642 static constexpr UINT m_NumStrings = 4;
643 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring>
644 m_Strings[m_NumStrings]; // one string for every entrypoint name
645};
646
647//------------------------------------------------------------------------------------------------
648class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
649 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
650{
651public:
652 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
653 : m_Desc({})
654 {
655 Init();
656 }
657 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
658 : m_Desc({})
659 {
660 Init();
661 AddToStateObject(ContainingStateObject);
662 }
663 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
664 : m_Desc(desc)
665 {
666 Init();
667 }
668 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
669 : m_Desc(desc)
670 {
671 Init();
672 AddToStateObject(ContainingStateObject);
673 }
674 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
675 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
676 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
677 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
678 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
679 {
680 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
681 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
682 }
683 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
684 {
685 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
686 }
687 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
688 operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
689private:
690 void Init() noexcept
691 {
692 SUBOBJECT_HELPER_BASE::Init();
693 }
694 void* Data() noexcept override { return &m_Desc; }
695 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
696};
697
698//------------------------------------------------------------------------------------------------
699class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
700 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
701{
702public:
703 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
704 : m_Desc({})
705 {
706 Init();
707 }
708 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
709 : m_Desc({})
710 {
711 Init();
712 AddToStateObject(ContainingStateObject);
713 }
714 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
715 : m_Desc(desc)
716 {
717 Init();
718 }
719 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
720 : m_Desc(desc)
721 {
722 Init();
723 AddToStateObject(ContainingStateObject);
724 }
725 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
726 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
727 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
728 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
729 void Config(UINT MaxTraceRecursionDepth) noexcept
730 {
731 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
732 }
733 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
734 {
735 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
736 }
737 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
738 operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
739private:
740 void Init() noexcept
741 {
742 SUBOBJECT_HELPER_BASE::Init();
743 }
744 void* Data() noexcept override { return &m_Desc; }
745 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
746};
747
748//------------------------------------------------------------------------------------------------
749class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
750 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
751{
752public:
753 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
754 : m_Desc({})
755 {
756 Init();
757 }
758 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
759 : m_Desc({})
760 {
761 Init();
762 AddToStateObject(ContainingStateObject);
763 }
764 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
765 : m_Desc(desc)
766 {
767 Init();
768 }
769 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
770 : m_Desc(desc)
771 {
772 Init();
773 AddToStateObject(ContainingStateObject);
774 }
775 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
776 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
777 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
778 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
779 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
780 {
781 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
782 m_Desc.Flags = Flags;
783 }
784 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
785 {
786 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
787 }
788 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
789 operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
790private:
791 void Init() noexcept
792 {
793 SUBOBJECT_HELPER_BASE::Init();
794 }
795 void* Data() noexcept override { return &m_Desc; }
796 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
797};
798
799//------------------------------------------------------------------------------------------------
800class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
801 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
802{
803public:
804 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
805 {
806 Init();
807 }
808 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
809 {
810 Init();
811 AddToStateObject(ContainingStateObject);
812 }
813 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
814 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
815 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
816 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
817 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
818 {
819 m_pRootSig = pRootSig;
820 }
821 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
822 {
823 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
824 }
825 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
826private:
827 void Init() noexcept
828 {
829 SUBOBJECT_HELPER_BASE::Init();
830 m_pRootSig = nullptr;
831 }
832 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
833 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
834};
835
836
837//------------------------------------------------------------------------------------------------
838class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
839 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
840{
841public:
842 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
843 {
844 Init();
845 }
846 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
847 {
848 Init();
849 AddToStateObject(ContainingStateObject);
850 }
851 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
852 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
853 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
854 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
855 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
856 {
857 m_pRootSig = pRootSig;
858 }
859 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
860 {
861 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
862 }
863 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
864private:
865 void Init() noexcept
866 {
867 SUBOBJECT_HELPER_BASE::Init();
868 m_pRootSig = nullptr;
869 }
870 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
871 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
872};
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
875//------------------------------------------------------------------------------------------------
876class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
877 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
878{
879public:
880 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
881 : m_Desc({})
882 {
883 Init();
884 }
885 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
886 : m_Desc({})
887 {
888 Init();
889 AddToStateObject(ContainingStateObject);
890 }
891 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
892 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
893 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
894 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
895 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
896 {
897 if (pDesc)
898 {
899 m_Desc.Desc = {};
900 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
901 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
902 }
903 }
904 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
905 {
906 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
907 }
908 operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
909 operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
910private:
911 void Init() noexcept
912 {
913 SUBOBJECT_HELPER_BASE::Init();
914 m_Desc = {};
915 }
916 void* Data() noexcept override { return &m_Desc; }
917 D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
918};
919
920//------------------------------------------------------------------------------------------------
921class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
922 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
923{
924public:
925 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
926 : m_Desc({})
927 {
928 Init();
929 }
930 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
931 : m_Desc({})
932 {
933 Init();
934 AddToStateObject(ContainingStateObject);
935 }
936 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
937 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
938 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
939 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
940 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
941 {
942 if (pDesc)
943 {
944 m_Desc.Desc = {};
945 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
946 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
947 }
948 }
949 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
950 {
951 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
952 }
953 operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
954 operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
955private:
956 void Init() noexcept
957 {
958 SUBOBJECT_HELPER_BASE::Init();
959 m_Desc = {};
960 }
961 void* Data() noexcept override { return &m_Desc; }
962 D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
963};
964
965
966//------------------------------------------------------------------------------------------------
967class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
968 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
969{
970public:
971 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
972 {
973 Init();
974 }
975 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
976 {
977 Init();
978 AddToStateObject(ContainingStateObject);
979 }
980 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
981 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
982 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
983 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
984 void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
985 {
986 const unsigned char* pKeyBytes = static_cast<const unsigned char *>(pKey);
987 m_Key.clear();
988 m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
989 m_Desc.pKey = m_Key.data();
990 m_Desc.KeySize = KeySize;
991 }
992 void DefineExport(
993 LPCWSTR Name,
994 LPCWSTR ExportToRename = nullptr,
995 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
996 {
997 D3D12_EXPORT_DESC Export;
998 Export.Name = m_Strings.LocalCopy(Name);
999 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
1000 Export.Flags = Flags;
1001 m_Exports.push_back(Export);
1002 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
1003 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
1004 }
1005 template<size_t N>
1006 void DefineExports(LPCWSTR(&Exports)[N])
1007 {
1008 for (UINT i = 0; i < N; i++)
1009 {
1010 DefineExport(Exports[i]);
1011 }
1012 }
1013 void DefineExports(const LPCWSTR* Exports, UINT N)
1014 {
1015 for (UINT i = 0; i < N; i++)
1016 {
1017 DefineExport(Exports[i]);
1018 }
1019 }
1020 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1021 {
1022 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
1023 }
1024 operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
1025private:
1026 void Init() noexcept
1027 {
1028 SUBOBJECT_HELPER_BASE::Init();
1029 m_Desc = {};
1030 m_Strings.clear();
1031 m_Exports.clear();
1032 }
1033 void* Data() noexcept override { return &m_Desc; }
1034 D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
1035 std::vector<unsigned char> m_Key;
1036 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
1037 std::vector<D3D12_EXPORT_DESC> m_Exports;
1038};
1039
1040#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1041
1042//------------------------------------------------------------------------------------------------
1043class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
1044 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1045{
1046public:
1047 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
1048 : m_Desc({})
1049 {
1050 Init();
1051 }
1052 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1053 : m_Desc({})
1054 {
1055 Init();
1056 AddToStateObject(ContainingStateObject);
1057 }
1058 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
1059 : m_Desc(desc)
1060 {
1061 Init();
1062 }
1063 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1064 : m_Desc(desc)
1065 {
1066 Init();
1067 AddToStateObject(ContainingStateObject);
1068 }
1069 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1070 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1071 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1072 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1073 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
1074 {
1075 m_Desc.Flags = Flags;
1076 }
1077 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1078 {
1079 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
1080 }
1081 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
1082 operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
1083private:
1084 void Init() noexcept
1085 {
1086 SUBOBJECT_HELPER_BASE::Init();
1087 }
1088 void* Data() noexcept override { return &m_Desc; }
1089 D3D12_STATE_OBJECT_CONFIG m_Desc;
1090};
1091
1092//------------------------------------------------------------------------------------------------
1093class CD3DX12_NODE_MASK_SUBOBJECT
1094 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1095{
1096public:
1097 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
1098 : m_Desc({})
1099 {
1100 Init();
1101 }
1102 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1103 : m_Desc({})
1104 {
1105 Init();
1106 AddToStateObject(ContainingStateObject);
1107 }
1108 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
1109 : m_Desc(desc)
1110 {
1111 Init();
1112 }
1113 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1114 : m_Desc(desc)
1115 {
1116 Init();
1117 AddToStateObject(ContainingStateObject);
1118 }
1119 CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1120 CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1121 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1122 CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1123 void SetNodeMask(UINT NodeMask) noexcept
1124 {
1125 m_Desc.NodeMask = NodeMask;
1126 }
1127 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1128 {
1129 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
1130 }
1131 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
1132 operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
1133private:
1134 void Init() noexcept
1135 {
1136 SUBOBJECT_HELPER_BASE::Init();
1137 }
1138 void* Data() noexcept override { return &m_Desc; }
1139 D3D12_NODE_MASK m_Desc;
1140};
1141
1142#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1143//------------------------------------------------------------------------------------------------
1144class CD3DX12_STREAM_OUTPUT_SUBOBJECT
1145 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1146{
1147public:
1148 CD3DX12_STREAM_OUTPUT_SUBOBJECT()
1149 {
1150 Init();
1151 }
1152 CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1153 {
1154 Init();
1155 AddToStateObject(ContainingStateObject);
1156 }
1157 void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
1158 {
1159 m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
1160 entry.Stream,
1161 m_Strings.LocalCopy(entry.SemanticName),
1162 entry.SemanticIndex,
1163 entry.StartComponent,
1164 entry.ComponentCount,
1165 entry.OutputSlot
1166 });
1167 m_Desc.NumEntries++;
1168 // Below: using ugly way to get pointer in case .data() is not defined
1169 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1170 }
1171 void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
1172 {
1173 m_soDecalEntries.resize(numEntries);
1174 for (UINT i = 0; i < numEntries; i++)
1175 {
1176 m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
1177 soDeclEntries[i].Stream,
1178 m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
1179 soDeclEntries[i].SemanticIndex,
1180 soDeclEntries[i].StartComponent,
1181 soDeclEntries[i].ComponentCount,
1182 soDeclEntries[i].OutputSlot
1183 };
1184 }
1185 m_Desc.NumEntries = numEntries;
1186 // Below: using ugly way to get pointer in case .data() is not defined
1187 if (numEntries > 0)
1188 {
1189 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1190 }
1191 }
1192 void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
1193 {
1194 for (UINT i = 0; i < numStrides; ++i)
1195 {
1196 m_Strides[i] = bufferStrides[i];
1197 }
1198 m_Desc.pBufferStrides = m_Strides;
1199 m_Desc.NumStrides = numStrides;
1200 }
1201 void SetRasterizedStream(UINT rasterizedStream)
1202 {
1203 m_Desc.RasterizedStream = rasterizedStream;
1204 }
1205 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1206 {
1207 return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
1208 }
1209 operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
1210
1211private:
1212 void Init()
1213 {
1214 SUBOBJECT_HELPER_BASE::Init();
1215 m_Desc = {};
1216 }
1217 void* Data() noexcept override { return &m_Desc; }
1218 D3D12_STREAM_OUTPUT_DESC m_Desc;
1219 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1220 std::vector<D3D12_SO_DECLARATION_ENTRY> m_soDecalEntries;
1221 UINT m_Strides[D3D12_SO_STREAM_COUNT];
1222};
1223
1224//------------------------------------------------------------------------------------------------
1225class CD3DX12_BLEND_SUBOBJECT
1226 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1227{
1228public:
1229 CD3DX12_BLEND_SUBOBJECT()
1230 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1231 {
1232 Init();
1233 }
1234 CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1235 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1236 {
1237 Init();
1238 AddToStateObject(ContainingStateObject);
1239 }
1240 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
1241 : m_Desc(desc)
1242 {
1243 Init();
1244 }
1245 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1246 : m_Desc(desc)
1247 {
1248 Init();
1249 AddToStateObject(ContainingStateObject);
1250 }
1251 void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
1252 {
1253 m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
1254 }
1255 void SetIndependentBlendEnable(bool independentBlendEnable)
1256 {
1257 m_Desc.IndependentBlendEnable = independentBlendEnable;
1258 }
1259 void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
1260 {
1261 m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
1262 m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
1263 m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
1264 m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
1265 m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
1266 m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
1267 m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
1268 m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
1269 m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
1270 m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
1271 }
1272 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1273 {
1274 return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
1275 }
1276 operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
1277 operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
1278private:
1279 void Init() noexcept
1280 {
1281 SUBOBJECT_HELPER_BASE::Init();
1282 }
1283 void* Data() noexcept override { return &m_Desc; }
1284 CD3DX12_BLEND_DESC m_Desc;
1285};
1286
1287//------------------------------------------------------------------------------------------------
1288class CD3DX12_RASTERIZER_SUBOBJECT
1289 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1290{
1291public:
1292 CD3DX12_RASTERIZER_SUBOBJECT()
1293 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1294 {
1295 Init();
1296 }
1297 CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1298 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1299 {
1300 Init();
1301 AddToStateObject(ContainingStateObject);
1302 }
1303 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
1304 : m_Desc(desc)
1305 {
1306 Init();
1307 }
1308 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1309 : m_Desc(desc)
1310 {
1311 Init();
1312 AddToStateObject(ContainingStateObject);
1313 }
1314 void SetFillMode(D3D12_FILL_MODE fillMode)
1315 {
1316 m_Desc.FillMode = fillMode;
1317 }
1318 void SetCullMode(D3D12_CULL_MODE cullMode)
1319 {
1320 m_Desc.CullMode = cullMode;
1321 }
1322 void SetFrontCounterClockwise(BOOL frontCounterClockwise)
1323 {
1324 m_Desc.FrontCounterClockwise = frontCounterClockwise;
1325 }
1326 void SetDepthBias(FLOAT depthBias)
1327 {
1328 m_Desc.DepthBias = depthBias;
1329 }
1330 void SetDepthBiasClamp(FLOAT depthBiasClamp)
1331 {
1332 m_Desc.DepthBiasClamp = depthBiasClamp;
1333 }
1334 void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
1335 {
1336 m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
1337 }
1338 void SetDepthClipEnable(BOOL depthClipEnable)
1339 {
1340 m_Desc.DepthClipEnable = depthClipEnable;
1341 }
1342 void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
1343 {
1344 m_Desc.LineRasterizationMode = lineRasterizationMode;
1345 }
1346 void SetForcedSampleCount(UINT forcedSampleCount)
1347 {
1348 m_Desc.ForcedSampleCount = forcedSampleCount;
1349 }
1350 void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
1351 {
1352 m_Desc.ConservativeRaster = conservativeRaster;
1353 }
1354 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1355 {
1356 return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
1357 }
1358 operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
1359 operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
1360private:
1361 void Init() noexcept
1362 {
1363 SUBOBJECT_HELPER_BASE::Init();
1364 }
1365 void* Data() noexcept override { return &m_Desc; }
1366 CD3DX12_RASTERIZER_DESC2 m_Desc;
1367};
1368
1369//------------------------------------------------------------------------------------------------
1370class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
1371 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1372{
1373public:
1374 CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
1375 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1376 {
1377 Init();
1378 }
1379 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1380 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1381 {
1382 Init();
1383 AddToStateObject(ContainingStateObject);
1384 }
1385 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
1386 : m_Desc(desc)
1387 {
1388 Init();
1389 }
1390 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1391 : m_Desc(desc)
1392 {
1393 Init();
1394 AddToStateObject(ContainingStateObject);
1395 }
1396 void SetDepthEnable(BOOL depthEnable)
1397 {
1398 m_Desc.DepthEnable = depthEnable;
1399 }
1400 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1401 {
1402 m_Desc.DepthWriteMask = depthWriteMask;
1403 }
1404 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1405 {
1406 m_Desc.DepthFunc = depthFunc;
1407 }
1408 void SetStencilEnable(BOOL stencilEnable)
1409 {
1410 m_Desc.StencilEnable = stencilEnable;
1411 }
1412 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
1413 {
1414 m_Desc.FrontFace = {
1415 frontFace.StencilFailOp,
1416 frontFace.StencilDepthFailOp,
1417 frontFace.StencilPassOp,
1418 frontFace.StencilFunc,
1419 frontFace.StencilReadMask,
1420 frontFace.StencilWriteMask
1421 };
1422 }
1423 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
1424 {
1425 m_Desc.BackFace = {
1426 backFace.StencilFailOp,
1427 backFace.StencilDepthFailOp,
1428 backFace.StencilPassOp,
1429 backFace.StencilFunc,
1430 backFace.StencilReadMask,
1431 backFace.StencilWriteMask
1432 };
1433 }
1434 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1435 {
1436 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1437 }
1438 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1439 {
1440 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
1441 }
1442 operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
1443 operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
1444private:
1445 void Init() noexcept
1446 {
1447 SUBOBJECT_HELPER_BASE::Init();
1448 }
1449 void* Data() noexcept override { return &m_Desc; }
1450 CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
1451};
1452
1453//------------------------------------------------------------------------------------------------
1454class CD3DX12_INPUT_LAYOUT_SUBOBJECT
1455 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1456{
1457public:
1458 CD3DX12_INPUT_LAYOUT_SUBOBJECT()
1459 {
1460 Init();
1461 }
1462 CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1463 {
1464 Init();
1465 AddToStateObject(ContainingStateObject);
1466 }
1467 void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
1468 {
1469 m_inputLayoutElements.emplace_back(
1470 D3D12_INPUT_ELEMENT_DESC{
1471 m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
1472 inputLayoutElementDesc.SemanticIndex,
1473 inputLayoutElementDesc.Format,
1474 inputLayoutElementDesc.InputSlot,
1475 inputLayoutElementDesc.AlignedByteOffset,
1476 inputLayoutElementDesc.InputSlotClass,
1477 inputLayoutElementDesc.InstanceDataStepRate
1478 });
1479 ++m_Desc.NumElements;
1480 // Below: using ugly way to get pointer in case .data() is not defined
1481 m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
1482 }
1483 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1484 {
1485 return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
1486 }
1487 operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
1488private:
1489 void Init() noexcept
1490 {
1491 SUBOBJECT_HELPER_BASE::Init();
1492 m_Desc = {};
1493 m_inputLayoutElements.clear();
1494 }
1495 void* Data() noexcept override { return &m_Desc; }
1496 D3D12_INPUT_LAYOUT_DESC m_Desc;
1497 std::vector<D3D12_INPUT_ELEMENT_DESC> m_inputLayoutElements;
1498 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1499};
1500
1501//------------------------------------------------------------------------------------------------
1502class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
1503 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1504{
1505public:
1506 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
1507 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1508 {
1509 Init();
1510 }
1511 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1512 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1513 {
1514 Init();
1515 AddToStateObject(ContainingStateObject);
1516 }
1517 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
1518 : m_Desc(desc)
1519 {
1520 Init();
1521 }
1522 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1523 : m_Desc(desc)
1524 {
1525 Init();
1526 AddToStateObject(ContainingStateObject);
1527 }
1528 void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
1529 {
1530 m_Desc = ibStripCutValue;
1531 }
1532 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1533 {
1534 return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
1535 }
1536 operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
1537 operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
1538private:
1539 void Init() noexcept
1540 {
1541 SUBOBJECT_HELPER_BASE::Init();
1542 }
1543 void* Data() noexcept override { return &m_Desc; }
1544 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
1545};
1546
1547//------------------------------------------------------------------------------------------------
1548class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
1549 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1550{
1551public:
1552 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
1553 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1554 {
1555 Init();
1556 }
1557 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1558 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1559 {
1560 Init();
1561 AddToStateObject(ContainingStateObject);
1562 }
1563 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
1564 : m_Desc(desc)
1565 {
1566 Init();
1567 }
1568 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1569 : m_Desc(desc)
1570 {
1571 Init();
1572 AddToStateObject(ContainingStateObject);
1573 }
1574 void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
1575 {
1576 m_Desc = primitiveTopologytype;
1577 }
1578 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1579 {
1580 return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
1581 }
1582 operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
1583 operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
1584private:
1585 void Init() noexcept
1586 {
1587 SUBOBJECT_HELPER_BASE::Init();
1588 }
1589 void* Data() noexcept override { return &m_Desc; }
1590 D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
1591};
1592
1593//------------------------------------------------------------------------------------------------
1594class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
1595 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1596{
1597public:
1598 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
1599 : m_Desc({})
1600 {
1601 Init();
1602 }
1603 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1604 : m_Desc({})
1605 {
1606 Init();
1607 AddToStateObject(ContainingStateObject);
1608 }
1609 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
1610 : m_Desc(desc)
1611 {
1612 Init();
1613 }
1614 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1615 : m_Desc(desc)
1616 {
1617 Init();
1618 AddToStateObject(ContainingStateObject);
1619 }
1620 void SetNumRenderTargets(UINT numRenderTargets)
1621 {
1622 m_Desc.NumRenderTargets = numRenderTargets;
1623 }
1624 void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
1625 {
1626 m_Desc.RTFormats[renderTarget] = renderTargetFormat;
1627 }
1628 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1629 {
1630 return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
1631 }
1632 operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
1633 operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
1634private:
1635 void Init() noexcept
1636 {
1637 SUBOBJECT_HELPER_BASE::Init();
1638 }
1639 void* Data() noexcept override { return &m_Desc; }
1640 D3D12_RT_FORMAT_ARRAY m_Desc;
1641};
1642
1643//------------------------------------------------------------------------------------------------
1644class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
1645 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1646{
1647public:
1648 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
1649 : m_Desc(DXGI_FORMAT_UNKNOWN)
1650 {
1651 Init();
1652 }
1653 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1654 : m_Desc(DXGI_FORMAT_UNKNOWN)
1655 {
1656 Init();
1657 AddToStateObject(ContainingStateObject);
1658 }
1659 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
1660 : m_Desc(desc)
1661 {
1662 Init();
1663 }
1664 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1665 : m_Desc(desc)
1666 {
1667 Init();
1668 AddToStateObject(ContainingStateObject);
1669 }
1670 void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
1671 {
1672 m_Desc = depthStencilFormat;
1673 }
1674 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1675 {
1676 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
1677 }
1678 operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
1679 operator DXGI_FORMAT& () noexcept { return m_Desc; }
1680private:
1681 void Init() noexcept
1682 {
1683 SUBOBJECT_HELPER_BASE::Init();
1684 }
1685 void* Data() noexcept override { return &m_Desc; }
1686 DXGI_FORMAT m_Desc;
1687};
1688
1689//------------------------------------------------------------------------------------------------
1690class CD3DX12_SAMPLE_DESC_SUBOBJECT
1691 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1692{
1693public:
1694 CD3DX12_SAMPLE_DESC_SUBOBJECT()
1695 : m_Desc({1, 0})
1696 {
1697 Init();
1698 }
1699 CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1700 : m_Desc({1, 0})
1701 {
1702 Init();
1703 AddToStateObject(ContainingStateObject);
1704 }
1705 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
1706 : m_Desc(desc)
1707 {
1708 Init();
1709 }
1710 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1711 : m_Desc(desc)
1712 {
1713 Init();
1714 AddToStateObject(ContainingStateObject);
1715 }
1716 void SetCount(UINT count)
1717 {
1718 m_Desc.Count = count;
1719 }
1720 void SetQuality(UINT quality)
1721 {
1722 m_Desc.Quality = quality;
1723 }
1724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1725 {
1726 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
1727 }
1728 operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
1729 operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
1730private:
1731 void Init() noexcept
1732 {
1733 SUBOBJECT_HELPER_BASE::Init();
1734 m_Desc = {};
1735 }
1736 void* Data() noexcept override { return &m_Desc; }
1737 DXGI_SAMPLE_DESC m_Desc;
1738};
1739
1740//------------------------------------------------------------------------------------------------
1741class CD3DX12_FLAGS_SUBOBJECT
1742 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1743{
1744public:
1745 CD3DX12_FLAGS_SUBOBJECT()
1746 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1747 {
1748 Init();
1749 }
1750 CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1751 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1752 {
1753 Init();
1754 AddToStateObject(ContainingStateObject);
1755 }
1756 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
1757 : m_Desc(desc)
1758 {
1759 Init();
1760 }
1761 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1762 : m_Desc(desc)
1763 {
1764 Init();
1765 AddToStateObject(ContainingStateObject);
1766 }
1767 void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
1768 {
1769 m_Desc = flags;
1770 }
1771 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1772 {
1773 return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
1774 }
1775 operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
1776 operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
1777private:
1778 void Init() noexcept
1779 {
1780 SUBOBJECT_HELPER_BASE::Init();
1781 }
1782 void* Data() noexcept override { return &m_Desc; }
1783 D3D12_PIPELINE_STATE_FLAGS m_Desc;
1784};
1785
1786//------------------------------------------------------------------------------------------------
1787class CD3DX12_VIEW_INSTANCING_SUBOBJECT
1788 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1789{
1790public:
1791 CD3DX12_VIEW_INSTANCING_SUBOBJECT()
1792 {
1793 Init();
1794 }
1795 CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1796 {
1797 Init();
1798 AddToStateObject(ContainingStateObject);
1799 }
1800 void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
1801 {
1802 m_Desc.ViewInstanceCount++;
1803 m_viewInstanceLocations.emplace_back(
1804 D3D12_VIEW_INSTANCE_LOCATION
1805 {
1806 viewInstanceLocation.ViewportArrayIndex,
1807 viewInstanceLocation.RenderTargetArrayIndex
1808 }
1809 );
1810 // Below: using ugly way to get pointer in case .data() is not defined
1811 m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
1812 }
1813 void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
1814 {
1815 m_Desc.Flags = flags;
1816 }
1817 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1818 {
1819 return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
1820 }
1821 operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
1822private:
1823 void Init() noexcept
1824 {
1825 SUBOBJECT_HELPER_BASE::Init();
1826 m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
1827 m_viewInstanceLocations.clear();
1828 }
1829 void* Data() noexcept override { return &m_Desc; }
1830 CD3DX12_VIEW_INSTANCING_DESC m_Desc;
1831 std::vector<D3D12_VIEW_INSTANCE_LOCATION> m_viewInstanceLocations;
1832};
1833
1834//------------------------------------------------------------------------------------------------
1835class CD3DX12_DEPTH_STENCIL_SUBOBJECT
1836 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1837{
1838public:
1839 CD3DX12_DEPTH_STENCIL_SUBOBJECT()
1840 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1841 {
1842 Init();
1843 }
1844 CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1845 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1846 {
1847 Init();
1848 AddToStateObject(ContainingStateObject);
1849 }
1850 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
1851 : m_Desc(desc)
1852 {
1853 Init();
1854 }
1855 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1856 : m_Desc(desc)
1857 {
1858 Init();
1859 AddToStateObject(ContainingStateObject);
1860 }
1861 void SetDepthEnable(BOOL depthEnable)
1862 {
1863 m_Desc.DepthEnable = depthEnable;
1864 }
1865 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1866 {
1867 m_Desc.DepthWriteMask = depthWriteMask;
1868 }
1869 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1870 {
1871 m_Desc.DepthFunc = depthFunc;
1872 }
1873 void SetStencilEnable(BOOL stencilEnable)
1874 {
1875 m_Desc.StencilEnable = stencilEnable;
1876 }
1877 void SetStencilReadMask(UINT8 stencilReadMask)
1878 {
1879 m_Desc.StencilReadMask = stencilReadMask;
1880 }
1881 void SetStencilWriteMask(UINT8 stencilWriteMask)
1882 {
1883 m_Desc.StencilWriteMask = stencilWriteMask;
1884 }
1885 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1886 {
1887 m_Desc.FrontFace = {
1888 frontFace.StencilFailOp,
1889 frontFace.StencilDepthFailOp,
1890 frontFace.StencilPassOp,
1891 frontFace.StencilFunc
1892 };
1893 }
1894 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1895 {
1896 m_Desc.BackFace = {
1897 backFace.StencilFailOp,
1898 backFace.StencilDepthFailOp,
1899 backFace.StencilPassOp,
1900 backFace.StencilFunc
1901 };
1902 }
1903 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1904 {
1905 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1906 }
1907 operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
1908 operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
1909private:
1910 void Init() noexcept
1911 {
1912 SUBOBJECT_HELPER_BASE::Init();
1913 }
1914 void* Data() noexcept override { return &m_Desc; }
1915 CD3DX12_DEPTH_STENCIL_DESC m_Desc;
1916};
1917
1918//------------------------------------------------------------------------------------------------
1919class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
1920 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1921{
1922public:
1923 CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
1924 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1925 {
1926 Init();
1927 }
1928 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1929 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1930 {
1931 Init();
1932 AddToStateObject(ContainingStateObject);
1933 }
1934 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
1935 : m_Desc(desc)
1936 {
1937 Init();
1938 }
1939 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1940 : m_Desc(desc)
1941 {
1942 Init();
1943 AddToStateObject(ContainingStateObject);
1944 }
1945 void SetDepthEnable(BOOL depthEnable)
1946 {
1947 m_Desc.DepthEnable = depthEnable;
1948 }
1949 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1950 {
1951 m_Desc.DepthWriteMask = depthWriteMask;
1952 }
1953 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1954 {
1955 m_Desc.DepthFunc = depthFunc;
1956 }
1957 void SetStencilEnable(BOOL stencilEnable)
1958 {
1959 m_Desc.StencilEnable = stencilEnable;
1960 }
1961 void SetStencilReadMask(UINT8 stencilReadMask)
1962 {
1963 m_Desc.StencilReadMask = stencilReadMask;
1964 }
1965 void SetStencilWriteMask(UINT8 stencilWriteMask)
1966 {
1967 m_Desc.StencilWriteMask = stencilWriteMask;
1968 }
1969 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1970 {
1971 m_Desc.FrontFace = {
1972 frontFace.StencilFailOp,
1973 frontFace.StencilDepthFailOp,
1974 frontFace.StencilPassOp,
1975 frontFace.StencilFunc
1976 };
1977 }
1978 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1979 {
1980 m_Desc.BackFace = {
1981 backFace.StencilFailOp,
1982 backFace.StencilDepthFailOp,
1983 backFace.StencilPassOp,
1984 backFace.StencilFunc
1985 };
1986 }
1987 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1988 {
1989 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1990 }
1991 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1992 {
1993 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
1994 }
1995 operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
1996 operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
1997private:
1998 void Init() noexcept
1999 {
2000 SUBOBJECT_HELPER_BASE::Init();
2001 }
2002 void* Data() noexcept override { return &m_Desc; }
2003 CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
2004};
2005
2006//------------------------------------------------------------------------------------------------
2007class CD3DX12_SAMPLE_MASK_SUBOBJECT
2008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2009{
2010public:
2011 CD3DX12_SAMPLE_MASK_SUBOBJECT()
2012 : m_Desc(0xffffffffu)
2013 {
2014 Init();
2015 }
2016 CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2017 : m_Desc(0xffffffffu)
2018 {
2019 Init();
2020 AddToStateObject(ContainingStateObject);
2021 }
2022 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
2023 : m_Desc(desc)
2024 {
2025 Init();
2026 }
2027 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2028 : m_Desc(desc)
2029 {
2030 Init();
2031 AddToStateObject(ContainingStateObject);
2032 }
2033 void SetSampleMask(UINT sampleMask)
2034 {
2035 m_Desc = sampleMask;
2036 }
2037 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2038 {
2039 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
2040 }
2041 operator const UINT& () const noexcept { return m_Desc; }
2042 operator UINT& () noexcept { return m_Desc; }
2043private:
2044 void Init() noexcept
2045 {
2046 SUBOBJECT_HELPER_BASE::Init();
2047 }
2048 void* Data() noexcept override { return &m_Desc; }
2049 UINT m_Desc;
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
2054 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2055{
2056public:
2057 CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
2058 {
2059 Init();
2060 }
2061 CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2062 {
2063 Init();
2064 AddToStateObject(ContainingStateObject);
2065 }
2066 void SetProgramName(LPCWSTR ProgramName)
2067 {
2068 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2069 }
2070 void AddExport(LPCWSTR exportName)
2071 {
2072 m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
2073 m_Desc.NumExports++;
2074 // Below: using ugly way to get pointer in case .data() is not defined
2075 m_Desc.pExports = &m_Exports[0];
2076 }
2077 void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
2078 {
2079 m_Subobjects.emplace_back(&subobject);
2080 m_Desc.NumSubobjects++;
2081 // Below: using ugly way to get pointer in case .data() is not defined
2082 m_Desc.ppSubobjects = &m_Subobjects[0];
2083 }
2084 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2085 {
2086 return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
2087 }
2088 operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
2089private:
2090 void Init() noexcept
2091 {
2092 SUBOBJECT_HELPER_BASE::Init();
2093 m_Desc = {};
2094 }
2095 void* Data() noexcept override { return &m_Desc; }
2096 D3D12_GENERIC_PROGRAM_DESC m_Desc;
2097 std::vector<LPCWSTR> m_Exports;
2098 std::vector<D3D12_STATE_SUBOBJECT const*> m_Subobjects;
2099 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2100};
2101
2102//------------------------------------------------------------------------------------------------
2103class CD3DX12_NODE_OUTPUT_OVERRIDES
2104{
2105public:
2106 CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
2107 {
2108 m_Desc.clear();
2109 m_ppOwner = ppOwner;
2110 *m_ppOwner = nullptr;
2111 m_pNumOutputOverrides = pNumOutputOverrides;
2112 *m_pNumOutputOverrides = 0;
2113 }
2114 void NewOutputOverride()
2115 {
2116 m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
2117 *m_ppOwner = m_Desc.data();
2118 (*m_pNumOutputOverrides)++;
2119 }
2120 void OutputIndex(UINT index)
2121 {
2122 m_Desc.back().OutputIndex = index;
2123 }
2124 void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
2125 {
2126 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
2127 m_Desc.back().pNewName = &m_NodeIDs.front();
2128 }
2129 void AllowSparseNodes(BOOL bAllow)
2130 {
2131 m_UINTs.emplace_front((UINT)bAllow);
2132 m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
2133 }
2134 void MaxOutputRecords(UINT maxOutputRecords) noexcept
2135 {
2136 m_UINTs.emplace_front(maxOutputRecords);
2137 m_Desc.back().pMaxRecords = &m_UINTs.front();
2138 }
2139 void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
2140 {
2141 m_UINTs.emplace_front(outputIndex);
2142 m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
2143 }
2144private:
2145 std::vector<D3D12_NODE_OUTPUT_OVERRIDES> m_Desc;
2146 // Cached parameters
2147 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2148 std::forward_list<UINT> m_UINTs;
2149 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2150 const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
2151 UINT* m_pNumOutputOverrides;
2152};
2153
2154//------------------------------------------------------------------------------------------------
2155class CD3DX12_WORK_GRAPH_SUBOBJECT;
2156
2157//------------------------------------------------------------------------------------------------
2158class CD3DX12_NODE_HELPER_BASE
2159{
2160protected:
2161 struct Backreference
2162 {
2163 CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
2164 UINT m_NodeIndex;
2165 };
2166public:
2167 CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
2168 : m_BackRef(BackRef)
2169 {
2170 }
2171 virtual ~CD3DX12_NODE_HELPER_BASE() = default;
2172protected:
2173 D3D12_NODE *GetNode() const;
2174 const Backreference m_BackRef;
2175 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2176};
2177
2178//------------------------------------------------------------------------------------------------
2179class CD3DX12_SHADER_NODE // Not specifying launch mode.
2180 // Don't need to distinguish if no parameter overriding is happening
2181 : public CD3DX12_NODE_HELPER_BASE
2182{
2183public:
2184 CD3DX12_SHADER_NODE(
2185 const Backreference &BackRef,
2186 LPCWSTR _Shader = nullptr)
2187 : CD3DX12_NODE_HELPER_BASE(BackRef)
2188 {
2189 GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
2190 Shader(_Shader);
2191 }
2192 void Shader(LPCWSTR _Shader)
2193 {
2194 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2195 }
2196 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2197};
2198
2199#endif // D3D12_SDK_VERSION >= 612
2200
2201
2202#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2203
2204//------------------------------------------------------------------------------------------------
2205// Use this class when defining a broadcasting launch node where configuration parameters
2206// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2207class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
2208 : public CD3DX12_NODE_HELPER_BASE
2209{
2210public:
2211 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
2212 const Backreference &BackRef,
2213 LPCWSTR _Shader = nullptr) :
2214 CD3DX12_NODE_HELPER_BASE(BackRef),
2215 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2216 {
2217 Overrides = {};
2218 D3D12_NODE *pNode = GetNode();
2219 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2220 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
2221 pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
2222 Shader(_Shader);
2223 }
2224 void Shader(LPCWSTR _Shader)
2225 {
2226 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2227 }
2228 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2229 void LocalRootArgumentsTableIndex(UINT index)
2230 {
2231 m_UINTs.emplace_front(index);
2232 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2233 }
2234 void ProgramEntry(BOOL bIsProgramEntry)
2235 {
2236 m_UINTs.emplace_front(bIsProgramEntry);
2237 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2238 }
2239 void NewName(D3D12_NODE_ID NodeID)
2240 {
2241 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2242 Overrides.pNewName = &m_NodeIDs.front();
2243 }
2244 void ShareInputOf(D3D12_NODE_ID NodeID)
2245 {
2246 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2247 Overrides.pShareInputOf = &m_NodeIDs.front();
2248 }
2249 void DispatchGrid(UINT x, UINT y, UINT z)
2250 {
2251 m_UINT3s.emplace_front(UINT3{ x,y,z });
2252 Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
2253 }
2254 void MaxDispatchGrid(UINT x, UINT y, UINT z)
2255 {
2256 m_UINT3s.emplace_front(UINT3{x,y,z});
2257 Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
2258 }
2259 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2260 {
2261 return m_NodeOutputOverrides;
2262 }
2263 D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
2264private:
2265 // Cached parameters
2266 std::forward_list<UINT> m_UINTs;
2267 struct UINT3
2268 {
2269 UINT x;
2270 UINT y;
2271 UINT z;
2272 };
2273 std::forward_list<UINT3> m_UINT3s;
2274 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2275 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2276};
2277
2278//------------------------------------------------------------------------------------------------
2279// Use this class when defining a coalescing launch node where configuration parameters
2280// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2281class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
2282 : public CD3DX12_NODE_HELPER_BASE
2283{
2284public:
2285 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
2286 const Backreference &BackRef,
2287 LPCWSTR _Shader = nullptr) :
2288 CD3DX12_NODE_HELPER_BASE(BackRef),
2289 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2290 {
2291 Overrides = {};
2292 D3D12_NODE *pNode = GetNode();
2293 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2294 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
2295 pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
2296 Shader(_Shader);
2297 }
2298 void Shader(LPCWSTR _Shader)
2299 {
2300 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2301 }
2302 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2303 void LocalRootArgumentsTableIndex(UINT index)
2304 {
2305 m_UINTs.emplace_front(index);
2306 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2307 }
2308 void ProgramEntry(BOOL bIsProgramEntry)
2309 {
2310 m_UINTs.emplace_front(bIsProgramEntry);
2311 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2312 }
2313 void NewName(D3D12_NODE_ID NodeID)
2314 {
2315 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2316 Overrides.pNewName = &m_NodeIDs.front();
2317 }
2318 void ShareInputOf(D3D12_NODE_ID NodeID)
2319 {
2320 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2321 Overrides.pShareInputOf = &m_NodeIDs.front();
2322 }
2323 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2324 {
2325 return m_NodeOutputOverrides;
2326 }
2327 D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
2328private:
2329 // Cached parameters
2330 std::forward_list<UINT> m_UINTs;
2331 struct UINT3
2332 {
2333 UINT x;
2334 UINT y;
2335 UINT z;
2336 };
2337 std::forward_list<UINT3> m_UINT3s;
2338 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2339 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2340};
2341
2342//------------------------------------------------------------------------------------------------
2343// Use this class when defining a thread launch node where configuration parameters
2344// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2345class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
2346 : public CD3DX12_NODE_HELPER_BASE
2347{
2348public:
2349 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
2350 const Backreference &BackRef,
2351 LPCWSTR _Shader = nullptr) :
2352 CD3DX12_NODE_HELPER_BASE(BackRef),
2353 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2354 {
2355 Overrides = {};
2356 D3D12_NODE *pNode = GetNode();
2357 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2358 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
2359 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2360 Shader(_Shader);
2361 }
2362 void Shader(LPCWSTR _Shader)
2363 {
2364 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2365 }
2366 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2367 void LocalRootArgumentsTableIndex(UINT index)
2368 {
2369 m_UINTs.emplace_front(index);
2370 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2371 }
2372 void ProgramEntry(BOOL bIsProgramEntry)
2373 {
2374 m_UINTs.emplace_front(bIsProgramEntry);
2375 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2376 }
2377 void NewName(D3D12_NODE_ID NodeID)
2378 {
2379 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2380 Overrides.pNewName = &m_NodeIDs.front();
2381 }
2382 void ShareInputOf(D3D12_NODE_ID NodeID)
2383 {
2384 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2385 Overrides.pShareInputOf = &m_NodeIDs.front();
2386 }
2387 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2388 {
2389 return m_NodeOutputOverrides;
2390 }
2391 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2392private:
2393 // Cached parameters
2394 std::forward_list<UINT> m_UINTs;
2395 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2396 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2397};
2398
2399//------------------------------------------------------------------------------------------------
2400// Use this class when defining a node where configuration parameters
2401// need to be overridden for parameters that are common to all launch node types.
2402// This option is a convenience if you don't want to determine what the launch mode is
2403// and just want to override a setting that isn't specific to launch mode.
2404// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2405class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
2406 : public CD3DX12_NODE_HELPER_BASE
2407{
2408public:
2409 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
2410 const Backreference &BackRef,
2411 LPCWSTR _Shader = nullptr) :
2412 CD3DX12_NODE_HELPER_BASE(BackRef),
2413 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2414 {
2415 Overrides = {};
2416 D3D12_NODE *pNode = GetNode();
2417 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2418 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
2419 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2420 Shader(_Shader);
2421 }
2422 void Shader(LPCWSTR _Shader)
2423 {
2424 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2425 }
2426 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2427 void LocalRootArgumentsTableIndex(UINT index)
2428 {
2429 m_UINTs.emplace_front(index);
2430 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2431 }
2432 void ProgramEntry(BOOL bIsProgramEntry)
2433 {
2434 m_UINTs.emplace_front(bIsProgramEntry);
2435 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2436 }
2437 void NewName(D3D12_NODE_ID NodeID)
2438 {
2439 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2440 Overrides.pNewName = &m_NodeIDs.front();
2441 }
2442 void ShareInputOf(D3D12_NODE_ID NodeID)
2443 {
2444 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2445 Overrides.pShareInputOf = &m_NodeIDs.front();
2446 }
2447 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2448 {
2449 return m_NodeOutputOverrides;
2450 }
2451 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2452private:
2453 // Cached parameters
2454 std::forward_list<UINT> m_UINTs;
2455 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2456 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2457};
2458
2459//------------------------------------------------------------------------------------------------
2460class CD3DX12_WORK_GRAPH_SUBOBJECT
2461 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2462{
2463public:
2464 CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
2465 {
2466 Init();
2467 }
2468 CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2469 {
2470 Init();
2471 AddToStateObject(ContainingStateObject);
2472 }
2473 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2474 {
2475 return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
2476 }
2477 void IncludeAllAvailableNodes()
2478 {
2479 m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
2480 }
2481
2482
2483 void SetProgramName(LPCWSTR ProgramName)
2484 {
2485 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2486 }
2487 void AddEntrypoint(D3D12_NODE_ID Entrypoint)
2488 {
2489 m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
2490 m_Desc.NumEntrypoints++;
2491 m_Desc.pEntrypoints = m_Entrypoints.data();
2492 }
2493
2494 template<typename T>
2495 T* CreateNode()
2496 {
2497 m_NodeDescs.push_back({});
2498 m_Desc.NumExplicitlyDefinedNodes++;
2499 m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
2500 T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
2501 m_OwnedNodeHelpers.emplace_back(pNodeHelper);
2502 return pNodeHelper;
2503 }
2504 CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
2505 {
2506 auto pNode = CreateNode<CD3DX12_SHADER_NODE>();
2507 pNode->Shader(Shader);
2508 return pNode;
2509 }
2510 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2511 {
2512 auto pNode = CreateNode<CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES>();
2513 pNode->Shader(Shader);
2514 return pNode;
2515 }
2516 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2517 {
2518 auto pNode = CreateNode<CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES>();
2519 pNode->Shader(Shader);
2520 return pNode;
2521 }
2522 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2523 {
2524 auto pNode = CreateNode<CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES>();
2525 pNode->Shader(Shader);
2526 return pNode;
2527 }
2528 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
2529 {
2530 auto pNode = CreateNode<CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES>();
2531 pNode->Shader(Shader);
2532 return pNode;
2533 }
2534#endif // D3D12_SDK_VERSION >= 612
2535
2536
2537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2538
2539 operator const D3D12_WORK_GRAPH_DESC& () noexcept
2540 {
2541 return m_Desc;
2542 }
2543private:
2544 void Init() noexcept
2545 {
2546 SUBOBJECT_HELPER_BASE::Init();
2547 m_Desc = {};
2548 m_Entrypoints.clear();
2549 m_NodeDescs.clear();
2550 }
2551 void* Data() noexcept override { return &m_Desc; }
2552 D3D12_WORK_GRAPH_DESC m_Desc;
2553 std::vector<D3D12_NODE_ID> m_Entrypoints;
2554 std::vector<D3D12_NODE> m_NodeDescs;
2555 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2556 std::vector<std::unique_ptr<const CD3DX12_NODE_HELPER_BASE>> m_OwnedNodeHelpers;
2557 friend class CD3DX12_NODE_HELPER_BASE;
2558};
2559
2560inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
2561{
2562 return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
2563}
2564#endif // D3D12_SDK_VERSION >= 612
2565
2566#undef D3DX12_COM_PTR
2567#undef D3DX12_COM_PTR_GET
2568#undef D3DX12_COM_PTR_ADDRESSOF
2569
2570
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h
new file mode 100644
index 0000000..83e6c07
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h
@@ -0,0 +1,144 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
139
140
141 DXGI_FORMAT_FORCE_UINT = 0xffffffff
142} DXGI_FORMAT;
143
144#endif // __dxgiformat_h__
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl
new file mode 100644
index 0000000..34cc883
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl
@@ -0,0 +1,139 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
135
136
137 DXGI_FORMAT_FORCE_UINT = 0xffffffff
138} DXGI_FORMAT;
139
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp
new file mode 100644
index 0000000..549bf50
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp
@@ -0,0 +1,2601 @@
1
2
3
4//*********************************************************
5//
6// Copyright (c) Microsoft Corporation.
7// Licensed under the MIT License (MIT).
8//
9//*********************************************************
10
11#ifndef WIN32_LEAN_AND_MEAN
12 #define WIN32_LEAN_AND_MEAN
13#endif
14#ifndef NOMINMAX
15 #define NOMINMAX 1
16#endif
17#ifdef __MINGW32__
18 #include <unknwn.h>
19#endif
20#ifndef _WIN32
21 #include <wsl/winadapter.h>
22#endif
23#include "d3dx12_property_format_table.h"
24#include <algorithm>
25#include <cassert>
26#include "D3D12TokenizedProgramFormat.hpp"
27#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
28#include <stdexcept>
29#endif
30#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
31#ifndef ASSUME
32 #define ASSUME(x) assert(x)
33#endif
34
35#define R D3DFCN_R
36#define G D3DFCN_G
37#define B D3DFCN_B
38#define A D3DFCN_A
39#define D D3DFCN_D
40#define S D3DFCN_S
41#define X D3DFCN_X
42
43#define _TYPELESS D3DFCI_TYPELESS
44#define _FLOAT D3DFCI_FLOAT
45#define _SNORM D3DFCI_SNORM
46#define _UNORM D3DFCI_UNORM
47#define _SINT D3DFCI_SINT
48#define _UINT D3DFCI_UINT
49#define _UNORM_SRGB D3DFCI_UNORM_SRGB
50#define _FIXED_2_8 D3DFCI_BIASED_FIXED_2_8
51
52#ifndef INTSAFE_E_ARITHMETIC_OVERFLOW
53 #define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216L)
54#endif
55
56//
57// UINT addition
58//
59inline HRESULT Safe_UIntAdd(UINT uAugend, UINT uAddend, UINT* puResult)
60{
61 if ((uAugend + uAddend) >= uAugend)
62 {
63 *puResult = (uAugend + uAddend);
64 return S_OK;
65 }
66 *puResult = UINT_MAX;
67 return E_FAIL;
68}
69
70//
71// UINT multiplication
72//
73inline HRESULT Safe_UIntMult(UINT uMultiplicand, UINT uMultiplier, UINT* puResult)
74{
75 ULONGLONG ull64Result = (ULONGLONG)uMultiplicand * (ULONGLONG)uMultiplier;
76
77 if (ull64Result <= UINT_MAX)
78 {
79 *puResult = (UINT)ull64Result;
80 return S_OK;
81 }
82 *puResult = UINT_MAX;
83 return E_FAIL;
84}
85
86const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] = // separate from above structure so it can be compiled out of the runtime.
87{
88// Name
89 "UNKNOWN",
90 "R32G32B32A32_TYPELESS",
91 "R32G32B32A32_FLOAT",
92 "R32G32B32A32_UINT",
93 "R32G32B32A32_SINT",
94 "R32G32B32_TYPELESS",
95 "R32G32B32_FLOAT",
96 "R32G32B32_UINT",
97 "R32G32B32_SINT",
98 "R16G16B16A16_TYPELESS",
99 "R16G16B16A16_FLOAT",
100 "R16G16B16A16_UNORM",
101 "R16G16B16A16_UINT",
102 "R16G16B16A16_SNORM",
103 "R16G16B16A16_SINT",
104 "R32G32_TYPELESS",
105 "R32G32_FLOAT",
106 "R32G32_UINT",
107 "R32G32_SINT",
108 "R32G8X24_TYPELESS",
109 "D32_FLOAT_S8X24_UINT",
110 "R32_FLOAT_X8X24_TYPELESS",
111 "X32_TYPELESS_G8X24_UINT",
112 "R10G10B10A2_TYPELESS",
113 "R10G10B10A2_UNORM",
114 "R10G10B10A2_UINT",
115 "R11G11B10_FLOAT",
116 "R8G8B8A8_TYPELESS",
117 "R8G8B8A8_UNORM",
118 "R8G8B8A8_UNORM_SRGB",
119 "R8G8B8A8_UINT",
120 "R8G8B8A8_SNORM",
121 "R8G8B8A8_SINT",
122 "R16G16_TYPELESS",
123 "R16G16_FLOAT",
124 "R16G16_UNORM",
125 "R16G16_UINT",
126 "R16G16_SNORM",
127 "R16G16_SINT",
128 "R32_TYPELESS",
129 "D32_FLOAT",
130 "R32_FLOAT",
131 "R32_UINT",
132 "R32_SINT",
133 "R24G8_TYPELESS",
134 "D24_UNORM_S8_UINT",
135 "R24_UNORM_X8_TYPELESS",
136 "X24_TYPELESS_G8_UINT",
137 "R8G8_TYPELESS",
138 "R8G8_UNORM",
139 "R8G8_UINT",
140 "R8G8_SNORM",
141 "R8G8_SINT",
142 "R16_TYPELESS",
143 "R16_FLOAT",
144 "D16_UNORM",
145 "R16_UNORM",
146 "R16_UINT",
147 "R16_SNORM",
148 "R16_SINT",
149 "R8_TYPELESS",
150 "R8_UNORM",
151 "R8_UINT",
152 "R8_SNORM",
153 "R8_SINT",
154 "A8_UNORM",
155 "R1_UNORM",
156 "R9G9B9E5_SHAREDEXP",
157 "R8G8_B8G8_UNORM",
158 "G8R8_G8B8_UNORM",
159 "BC1_TYPELESS",
160 "BC1_UNORM",
161 "BC1_UNORM_SRGB",
162 "BC2_TYPELESS",
163 "BC2_UNORM",
164 "BC2_UNORM_SRGB",
165 "BC3_TYPELESS",
166 "BC3_UNORM",
167 "BC3_UNORM_SRGB",
168 "BC4_TYPELESS",
169 "BC4_UNORM",
170 "BC4_SNORM",
171 "BC5_TYPELESS",
172 "BC5_UNORM",
173 "BC5_SNORM",
174 "B5G6R5_UNORM",
175 "B5G5R5A1_UNORM",
176 "B8G8R8A8_UNORM",
177 "B8G8R8X8_UNORM",
178 "R10G10B10_XR_BIAS_A2_UNORM",
179 "B8G8R8A8_TYPELESS",
180 "B8G8R8A8_UNORM_SRGB",
181 "B8G8R8X8_TYPELESS",
182 "B8G8R8X8_UNORM_SRGB",
183 "BC6H_TYPELESS",
184 "BC6H_UF16",
185 "BC6H_SF16",
186 "BC7_TYPELESS",
187 "BC7_UNORM",
188 "BC7_UNORM_SRGB",
189 "AYUV",
190 "Y410",
191 "Y416",
192 "NV12",
193 "P010",
194 "P016",
195 "420_OPAQUE",
196 "YUY2",
197 "Y210",
198 "Y216",
199 "NV11",
200 "AI44",
201 "IA44",
202 "P8",
203 "A8P8",
204 "B4G4R4A4_UNORM",
205
206 nullptr, // 116
207 nullptr, // 117
208 nullptr, // 118
209 nullptr, // 119
210 nullptr, // 120
211 nullptr, // 121
212 nullptr, // 122
213 nullptr, // 123
214 nullptr, // 124
215 nullptr, // 125
216 nullptr, // 126
217 nullptr, // 127
218 nullptr, // 128
219 nullptr, // 129
220
221 "P208",
222 "V208",
223 "V408",
224
225 NULL, // 133
226 NULL, // 134
227 NULL, // 135
228 NULL, // 136
229 NULL, // 137
230 NULL, // 138
231 NULL, // 139
232 NULL, // 140
233 NULL, // 141
234 NULL, // 142
235 NULL, // 143
236 NULL, // 144
237 NULL, // 145
238 NULL, // 146
239 NULL, // 147
240 NULL, // 148
241 NULL, // 149
242 NULL, // 150
243 NULL, // 151
244 NULL, // 152
245 NULL, // 153
246 NULL, // 154
247 NULL, // 155
248 NULL, // 156
249 NULL, // 157
250 NULL, // 158
251 NULL, // 159
252 NULL, // 160
253 NULL, // 161
254 NULL, // 162
255 NULL, // 163
256 NULL, // 164
257 NULL, // 165
258 NULL, // 166
259 NULL, // 167
260 NULL, // 168
261 NULL, // 169
262 NULL, // 170
263 NULL, // 171
264 NULL, // 172
265 NULL, // 173
266 NULL, // 174
267 NULL, // 175
268 NULL, // 176
269 NULL, // 177
270 NULL, // 178
271 NULL, // 179
272 NULL, // 180
273 NULL, // 181
274 NULL, // 182
275 NULL, // 183
276 NULL, // 184
277 NULL, // 185
278 NULL, // 186
279 NULL, // 187
280 NULL, // 188
281
282 "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",
283 "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",
284 "A4B4G4R4_UNORM",
285};
286
287// --------------------------------------------------------------------------------------------------------------------------------
288// Format Cast Sets
289// --------------------------------------------------------------------------------------------------------------------------------
290constexpr DXGI_FORMAT D3DFCS_UNKNOWN[] =
291{
292 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
293};
294
295constexpr DXGI_FORMAT D3DFCS_R32G32B32A32[] =
296{
297 DXGI_FORMAT_R32G32B32A32_TYPELESS,
298 DXGI_FORMAT_R32G32B32A32_FLOAT,
299 DXGI_FORMAT_R32G32B32A32_UINT,
300 DXGI_FORMAT_R32G32B32A32_SINT,
301 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
302};
303
304constexpr DXGI_FORMAT D3DFCS_R32G32B32[] =
305{
306 DXGI_FORMAT_R32G32B32_TYPELESS,
307 DXGI_FORMAT_R32G32B32_FLOAT,
308 DXGI_FORMAT_R32G32B32_UINT,
309 DXGI_FORMAT_R32G32B32_SINT,
310 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
311};
312
313constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] =
314{
315 DXGI_FORMAT_R16G16B16A16_TYPELESS,
316 DXGI_FORMAT_R16G16B16A16_FLOAT,
317 DXGI_FORMAT_R16G16B16A16_UNORM,
318 DXGI_FORMAT_R16G16B16A16_UINT,
319 DXGI_FORMAT_R16G16B16A16_SNORM,
320 DXGI_FORMAT_R16G16B16A16_SINT,
321 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
322};
323
324constexpr DXGI_FORMAT D3DFCS_R32G32[] =
325{
326 DXGI_FORMAT_R32G32_TYPELESS,
327 DXGI_FORMAT_R32G32_FLOAT,
328 DXGI_FORMAT_R32G32_UINT,
329 DXGI_FORMAT_R32G32_SINT,
330 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
331};
332
333constexpr DXGI_FORMAT D3DFCS_R32G8X24[] =
334{
335 DXGI_FORMAT_R32G8X24_TYPELESS,
336 DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
337 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
338 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,
339 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
340};
341
342constexpr DXGI_FORMAT D3DFCS_R11G11B10[] =
343{
344 DXGI_FORMAT_R11G11B10_FLOAT,
345 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
346};
347
348constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] =
349{
350 DXGI_FORMAT_R8G8B8A8_TYPELESS,
351 DXGI_FORMAT_R8G8B8A8_UNORM,
352 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
353 DXGI_FORMAT_R8G8B8A8_UINT,
354 DXGI_FORMAT_R8G8B8A8_SNORM,
355 DXGI_FORMAT_R8G8B8A8_SINT,
356 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
357};
358
359constexpr DXGI_FORMAT D3DFCS_R16G16[] =
360{
361 DXGI_FORMAT_R16G16_TYPELESS,
362 DXGI_FORMAT_R16G16_FLOAT,
363 DXGI_FORMAT_R16G16_UNORM,
364 DXGI_FORMAT_R16G16_UINT,
365 DXGI_FORMAT_R16G16_SNORM,
366 DXGI_FORMAT_R16G16_SINT,
367 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
368};
369
370constexpr DXGI_FORMAT D3DFCS_R32[] =
371{
372 DXGI_FORMAT_R32_TYPELESS,
373 DXGI_FORMAT_D32_FLOAT,
374 DXGI_FORMAT_R32_FLOAT,
375 DXGI_FORMAT_R32_UINT,
376 DXGI_FORMAT_R32_SINT,
377 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
378};
379
380constexpr DXGI_FORMAT D3DFCS_R24G8[] =
381{
382 DXGI_FORMAT_R24G8_TYPELESS,
383 DXGI_FORMAT_D24_UNORM_S8_UINT,
384 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
385 DXGI_FORMAT_X24_TYPELESS_G8_UINT,
386 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
387};
388
389constexpr DXGI_FORMAT D3DFCS_R8G8[] =
390{
391 DXGI_FORMAT_R8G8_TYPELESS,
392 DXGI_FORMAT_R8G8_UNORM,
393 DXGI_FORMAT_R8G8_UINT,
394 DXGI_FORMAT_R8G8_SNORM,
395 DXGI_FORMAT_R8G8_SINT,
396 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
397};
398
399constexpr DXGI_FORMAT D3DFCS_R16[] =
400{
401 DXGI_FORMAT_R16_TYPELESS,
402 DXGI_FORMAT_R16_FLOAT,
403 DXGI_FORMAT_D16_UNORM,
404 DXGI_FORMAT_R16_UNORM,
405 DXGI_FORMAT_R16_UINT,
406 DXGI_FORMAT_R16_SNORM,
407 DXGI_FORMAT_R16_SINT,
408 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
409};
410
411constexpr DXGI_FORMAT D3DFCS_R8[] =
412{
413 DXGI_FORMAT_R8_TYPELESS,
414 DXGI_FORMAT_R8_UNORM,
415 DXGI_FORMAT_R8_UINT,
416 DXGI_FORMAT_R8_SNORM,
417 DXGI_FORMAT_R8_SINT,
418 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
419};
420
421constexpr DXGI_FORMAT D3DFCS_A8[] =
422{
423 DXGI_FORMAT_A8_UNORM,
424 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
425};
426
427constexpr DXGI_FORMAT D3DFCS_R1[] =
428{
429 DXGI_FORMAT_R1_UNORM,
430 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
431};
432
433constexpr DXGI_FORMAT D3DFCS_R9G9B9E5[] =
434{
435 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
436 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
437};
438
439constexpr DXGI_FORMAT D3DFCS_R8G8_B8G8[] =
440{
441 DXGI_FORMAT_R8G8_B8G8_UNORM,
442 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
443};
444
445constexpr DXGI_FORMAT D3DFCS_G8R8_G8B8[] =
446{
447 DXGI_FORMAT_G8R8_G8B8_UNORM,
448 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
449};
450
451constexpr DXGI_FORMAT D3DFCS_BC1[] =
452{
453 DXGI_FORMAT_BC1_TYPELESS,
454 DXGI_FORMAT_BC1_UNORM,
455 DXGI_FORMAT_BC1_UNORM_SRGB,
456 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
457};
458
459constexpr DXGI_FORMAT D3DFCS_BC2[] =
460{
461 DXGI_FORMAT_BC2_TYPELESS,
462 DXGI_FORMAT_BC2_UNORM,
463 DXGI_FORMAT_BC2_UNORM_SRGB,
464 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
465};
466
467constexpr DXGI_FORMAT D3DFCS_BC3[] =
468{
469 DXGI_FORMAT_BC3_TYPELESS,
470 DXGI_FORMAT_BC3_UNORM,
471 DXGI_FORMAT_BC3_UNORM_SRGB,
472 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
473};
474
475constexpr DXGI_FORMAT D3DFCS_BC4[] =
476{
477 DXGI_FORMAT_BC4_TYPELESS,
478 DXGI_FORMAT_BC4_UNORM,
479 DXGI_FORMAT_BC4_SNORM,
480 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
481};
482
483constexpr DXGI_FORMAT D3DFCS_BC5[] =
484{
485 DXGI_FORMAT_BC5_TYPELESS,
486 DXGI_FORMAT_BC5_UNORM,
487 DXGI_FORMAT_BC5_SNORM,
488 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
489};
490
491constexpr DXGI_FORMAT D3DFCS_B5G6R5[] =
492{
493 DXGI_FORMAT_B5G6R5_UNORM,
494 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
495};
496
497constexpr DXGI_FORMAT D3DFCS_B5G5R5A1[] =
498{
499 DXGI_FORMAT_B5G5R5A1_UNORM,
500 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
501};
502
503constexpr DXGI_FORMAT D3DFCS_B8G8R8A8[] =
504{
505 DXGI_FORMAT_B8G8R8A8_TYPELESS,
506 DXGI_FORMAT_B8G8R8A8_UNORM,
507 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
508 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
509};
510
511constexpr DXGI_FORMAT D3DFCS_B8G8R8X8[] =
512{
513 DXGI_FORMAT_B8G8R8X8_TYPELESS,
514 DXGI_FORMAT_B8G8R8X8_UNORM,
515 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
516 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
517};
518
519constexpr DXGI_FORMAT D3DFCS_R10G10B10A2[] =
520{
521 DXGI_FORMAT_R10G10B10A2_TYPELESS,
522 DXGI_FORMAT_R10G10B10A2_UNORM,
523 DXGI_FORMAT_R10G10B10A2_UINT,
524 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,
525 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
526};
527
528constexpr DXGI_FORMAT D3DFCS_BC6H[] =
529{
530 DXGI_FORMAT_BC6H_TYPELESS,
531 DXGI_FORMAT_BC6H_UF16,
532 DXGI_FORMAT_BC6H_SF16,
533 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
534};
535
536constexpr DXGI_FORMAT D3DFCS_BC7[] =
537{
538 DXGI_FORMAT_BC7_TYPELESS,
539 DXGI_FORMAT_BC7_UNORM,
540 DXGI_FORMAT_BC7_UNORM_SRGB,
541 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
542};
543
544constexpr DXGI_FORMAT D3DFCS_AYUV[] =
545{
546 DXGI_FORMAT_AYUV,
547 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
548};
549
550constexpr DXGI_FORMAT D3DFCS_NV12[] =
551{
552 DXGI_FORMAT_NV12,
553 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
554};
555
556constexpr DXGI_FORMAT D3DFCS_YUY2[] =
557{
558 DXGI_FORMAT_YUY2,
559 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
560};
561
562constexpr DXGI_FORMAT D3DFCS_P010[] =
563{
564 DXGI_FORMAT_P010,
565 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
566};
567
568constexpr DXGI_FORMAT D3DFCS_P016[] =
569{
570 DXGI_FORMAT_P016,
571 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
572};
573
574constexpr DXGI_FORMAT D3DFCS_NV11[] =
575{
576 DXGI_FORMAT_NV11,
577 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
578};
579
580constexpr DXGI_FORMAT D3DFCS_420_OPAQUE[] =
581{
582 DXGI_FORMAT_420_OPAQUE,
583 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
584};
585
586constexpr DXGI_FORMAT D3DFCS_Y410[] =
587{
588 DXGI_FORMAT_Y410,
589 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
590};
591
592constexpr DXGI_FORMAT D3DFCS_Y416[] =
593{
594 DXGI_FORMAT_Y416,
595 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
596};
597
598constexpr DXGI_FORMAT D3DFCS_Y210[] =
599{
600 DXGI_FORMAT_Y210,
601 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
602};
603
604constexpr DXGI_FORMAT D3DFCS_Y216[] =
605{
606 DXGI_FORMAT_Y216,
607 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
608};
609
610constexpr DXGI_FORMAT D3DFCS_AI44[] =
611{
612 DXGI_FORMAT_AI44,
613 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
614};
615
616constexpr DXGI_FORMAT D3DFCS_IA44[] =
617{
618 DXGI_FORMAT_IA44,
619 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
620};
621
622constexpr DXGI_FORMAT D3DFCS_P8[] =
623{
624 DXGI_FORMAT_P8,
625 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
626};
627
628constexpr DXGI_FORMAT D3DFCS_A8P8[] =
629{
630 DXGI_FORMAT_A8P8,
631 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
632};
633
634constexpr DXGI_FORMAT D3DFCS_B4G4R4A4[] =
635{
636 DXGI_FORMAT_B4G4R4A4_UNORM,
637 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
638};
639
640constexpr DXGI_FORMAT D3DFCS_P208[] =
641{
642 DXGI_FORMAT_P208,
643 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
644};
645
646constexpr DXGI_FORMAT D3DFCS_V208[] =
647{
648 DXGI_FORMAT_V208,
649 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
650};
651
652constexpr DXGI_FORMAT D3DFCS_V408[] =
653{
654 DXGI_FORMAT_V408,
655 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
656};
657
658constexpr DXGI_FORMAT D3DFCS_A4B4G4R4[] =
659{
660 DXGI_FORMAT_A4B4G4R4_UNORM,
661 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
662};
663
664constexpr D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail[] =
665{
666 // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
667 {DXGI_FORMAT_UNKNOWN ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
668 {DXGI_FORMAT_R32G32B32A32_TYPELESS ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
669 { DXGI_FORMAT_R32G32B32A32_FLOAT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
670 { DXGI_FORMAT_R32G32B32A32_UINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
671 { DXGI_FORMAT_R32G32B32A32_SINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
672 {DXGI_FORMAT_R32G32B32_TYPELESS ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
673 { DXGI_FORMAT_R32G32B32_FLOAT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
674 { DXGI_FORMAT_R32G32B32_UINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _UINT, _UINT, _UINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
675 { DXGI_FORMAT_R32G32B32_SINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _SINT, _SINT, _SINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
676 {DXGI_FORMAT_R16G16B16A16_TYPELESS ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
677 { DXGI_FORMAT_R16G16B16A16_FLOAT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
678 { DXGI_FORMAT_R16G16B16A16_UNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
679 { DXGI_FORMAT_R16G16B16A16_UINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
680 { DXGI_FORMAT_R16G16B16A16_SNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
681 { DXGI_FORMAT_R16G16B16A16_SINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
682 {DXGI_FORMAT_R32G32_TYPELESS ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
683 { DXGI_FORMAT_R32G32_FLOAT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
684 { DXGI_FORMAT_R32G32_UINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
685 { DXGI_FORMAT_R32G32_SINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
686 {DXGI_FORMAT_R32G8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
687 { DXGI_FORMAT_D32_FLOAT_S8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _FLOAT,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
688 { DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
689 { DXGI_FORMAT_X32_TYPELESS_G8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
690 {DXGI_FORMAT_R10G10B10A2_TYPELESS ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
691 { DXGI_FORMAT_R10G10B10A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, },
692 { DXGI_FORMAT_R10G10B10A2_UINT ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
693 {DXGI_FORMAT_R11G11B10_FLOAT ,DXGI_FORMAT_R11G11B10_FLOAT, D3DFCS_R11G11B10, {11,11,10,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
694 {DXGI_FORMAT_R8G8B8A8_TYPELESS ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
695 { DXGI_FORMAT_R8G8B8A8_UNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
696 { DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
697 { DXGI_FORMAT_R8G8B8A8_UINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
698 { DXGI_FORMAT_R8G8B8A8_SNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
699 { DXGI_FORMAT_R8G8B8A8_SINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
700 {DXGI_FORMAT_R16G16_TYPELESS ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
701 { DXGI_FORMAT_R16G16_FLOAT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
702 { DXGI_FORMAT_R16G16_UNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
703 { DXGI_FORMAT_R16G16_UINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
704 { DXGI_FORMAT_R16G16_SNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
705 { DXGI_FORMAT_R16G16_SINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
706 {DXGI_FORMAT_R32_TYPELESS ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
707 { DXGI_FORMAT_D32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
708 { DXGI_FORMAT_R32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
709 { DXGI_FORMAT_R32_UINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
710 { DXGI_FORMAT_R32_SINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
711 {DXGI_FORMAT_R24G8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
712 { DXGI_FORMAT_D24_UNORM_S8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _UNORM,_UINT,_TYPELESS,_TYPELESS, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, },
713 { DXGI_FORMAT_R24_UNORM_X8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
714 { DXGI_FORMAT_X24_TYPELESS_G8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
715 {DXGI_FORMAT_R8G8_TYPELESS ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
716 { DXGI_FORMAT_R8G8_UNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
717 { DXGI_FORMAT_R8G8_UINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
718 { DXGI_FORMAT_R8G8_SNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
719 { DXGI_FORMAT_R8G8_SINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
720 {DXGI_FORMAT_R16_TYPELESS ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
721 { DXGI_FORMAT_R16_FLOAT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
722 { DXGI_FORMAT_D16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
723 { DXGI_FORMAT_R16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
724 { DXGI_FORMAT_R16_UINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
725 { DXGI_FORMAT_R16_SNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
726 { DXGI_FORMAT_R16_SINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
727 {DXGI_FORMAT_R8_TYPELESS ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
728 { DXGI_FORMAT_R8_UNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
729 { DXGI_FORMAT_R8_UINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
730 { DXGI_FORMAT_R8_SNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
731 { DXGI_FORMAT_R8_SINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
732 {DXGI_FORMAT_A8_UNORM ,DXGI_FORMAT_A8_UNORM, D3DFCS_A8, {0,0,0,8}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,X,X,A, _TYPELESS, _TYPELESS, _TYPELESS, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
733 {DXGI_FORMAT_R1_UNORM ,DXGI_FORMAT_R1_UNORM, D3DFCS_R1, {1,0,0,0}, 1, FALSE, 8, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
734 {DXGI_FORMAT_R9G9B9E5_SHAREDEXP ,DXGI_FORMAT_R9G9B9E5_SHAREDEXP, D3DFCS_R9G9B9E5, {0,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _FLOAT, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
735 {DXGI_FORMAT_R8G8_B8G8_UNORM ,DXGI_FORMAT_R8G8_B8G8_UNORM, D3DFCS_R8G8_B8G8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
736 {DXGI_FORMAT_G8R8_G8B8_UNORM ,DXGI_FORMAT_G8R8_G8B8_UNORM, D3DFCS_G8R8_G8B8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
737 {DXGI_FORMAT_BC1_TYPELESS ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
738 { DXGI_FORMAT_BC1_UNORM ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
739 { DXGI_FORMAT_BC1_UNORM_SRGB ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
740 {DXGI_FORMAT_BC2_TYPELESS ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
741 { DXGI_FORMAT_BC2_UNORM ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
742 { DXGI_FORMAT_BC2_UNORM_SRGB ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
743 {DXGI_FORMAT_BC3_TYPELESS ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
744 { DXGI_FORMAT_BC3_UNORM ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
745 { DXGI_FORMAT_BC3_UNORM_SRGB ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
746 {DXGI_FORMAT_BC4_TYPELESS ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
747 { DXGI_FORMAT_BC4_UNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
748 { DXGI_FORMAT_BC4_SNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
749 {DXGI_FORMAT_BC5_TYPELESS ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
750 { DXGI_FORMAT_BC5_UNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
751 { DXGI_FORMAT_BC5_SNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
752 {DXGI_FORMAT_B5G6R5_UNORM ,DXGI_FORMAT_B5G6R5_UNORM, D3DFCS_B5G6R5, {5,6,5,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
753 {DXGI_FORMAT_B5G5R5A1_UNORM ,DXGI_FORMAT_B5G5R5A1_UNORM, D3DFCS_B5G5R5A1, {5,5,5,1}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
754 {DXGI_FORMAT_B8G8R8A8_UNORM ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
755 {DXGI_FORMAT_B8G8R8X8_UNORM ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
756 {DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FIXED_2_8, _FIXED_2_8, _FIXED_2_8, _UNORM, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
757 {DXGI_FORMAT_B8G8R8A8_TYPELESS ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
758 { DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
759 {DXGI_FORMAT_B8G8R8X8_TYPELESS ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
760 { DXGI_FORMAT_B8G8R8X8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
761 {DXGI_FORMAT_BC6H_TYPELESS ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
762 { DXGI_FORMAT_BC6H_UF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
763 { DXGI_FORMAT_BC6H_SF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
764 {DXGI_FORMAT_BC7_TYPELESS ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
765 { DXGI_FORMAT_BC7_UNORM ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
766 { DXGI_FORMAT_BC7_UNORM_SRGB ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
767 // YUV 4:4:4 formats
768 { DXGI_FORMAT_AYUV ,DXGI_FORMAT_AYUV, D3DFCS_AYUV, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
769 { DXGI_FORMAT_Y410 ,DXGI_FORMAT_Y410, D3DFCS_Y410, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
770 { DXGI_FORMAT_Y416 ,DXGI_FORMAT_Y416, D3DFCS_Y416, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
771 // YUV 4:2:0 formats
772 { DXGI_FORMAT_NV12 ,DXGI_FORMAT_NV12, D3DFCS_NV12, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
773 { DXGI_FORMAT_P010 ,DXGI_FORMAT_P010, D3DFCS_P010, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
774 { DXGI_FORMAT_P016 ,DXGI_FORMAT_P016, D3DFCS_P016, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
775 { DXGI_FORMAT_420_OPAQUE ,DXGI_FORMAT_420_OPAQUE, D3DFCS_420_OPAQUE, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
776 // YUV 4:2:2 formats
777 { DXGI_FORMAT_YUY2 ,DXGI_FORMAT_YUY2, D3DFCS_YUY2, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
778 { DXGI_FORMAT_Y210 ,DXGI_FORMAT_Y210, D3DFCS_Y210, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
779 { DXGI_FORMAT_Y216 ,DXGI_FORMAT_Y216, D3DFCS_Y216, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
780 // YUV 4:1:1 formats
781 { DXGI_FORMAT_NV11 ,DXGI_FORMAT_NV11, D3DFCS_NV11, {0,0,0,0}, 8, FALSE, 4, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
782 // Legacy substream formats
783 { DXGI_FORMAT_AI44 ,DXGI_FORMAT_AI44, D3DFCS_AI44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
784 { DXGI_FORMAT_IA44 ,DXGI_FORMAT_IA44, D3DFCS_IA44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
785 { DXGI_FORMAT_P8 ,DXGI_FORMAT_P8, D3DFCS_P8, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
786 { DXGI_FORMAT_A8P8 ,DXGI_FORMAT_A8P8, D3DFCS_A8P8, {0,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
787 { DXGI_FORMAT_B4G4R4A4_UNORM ,DXGI_FORMAT_B4G4R4A4_UNORM, D3DFCS_B4G4R4A4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
788 { DXGI_FORMAT(116) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
789 { DXGI_FORMAT(117) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
790 { DXGI_FORMAT(118) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
791 { DXGI_FORMAT(119) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
792 { DXGI_FORMAT(120) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
793 { DXGI_FORMAT(121) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
794 { DXGI_FORMAT(122) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
795
796 { DXGI_FORMAT(123) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
797
798 { DXGI_FORMAT(124) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
799 { DXGI_FORMAT(125) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
800 { DXGI_FORMAT(126) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
801 { DXGI_FORMAT(127) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
802 { DXGI_FORMAT(128) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
803 { DXGI_FORMAT(129) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
804 { DXGI_FORMAT(DXGI_FORMAT_P208) ,DXGI_FORMAT_P208, D3DFCS_P208, {0,0,0,0}, 8, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
805 { DXGI_FORMAT(DXGI_FORMAT_V208) ,DXGI_FORMAT_V208, D3DFCS_V208, {0,0,0,0}, 8, FALSE, 1, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
806 { DXGI_FORMAT(DXGI_FORMAT_V408) ,DXGI_FORMAT_V408, D3DFCS_V408, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
807
808 { DXGI_FORMAT(133) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
809 { DXGI_FORMAT(134) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
810 { DXGI_FORMAT(135) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
811 { DXGI_FORMAT(136) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
812 { DXGI_FORMAT(137) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
813 { DXGI_FORMAT(138) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
814 { DXGI_FORMAT(139) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
815 { DXGI_FORMAT(140) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
816 { DXGI_FORMAT(141) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
817 { DXGI_FORMAT(142) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
818 { DXGI_FORMAT(143) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
819 { DXGI_FORMAT(144) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
820 { DXGI_FORMAT(145) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
821 { DXGI_FORMAT(146) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
822 { DXGI_FORMAT(147) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
823 { DXGI_FORMAT(148) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
824 { DXGI_FORMAT(149) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
825 { DXGI_FORMAT(150) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
826 { DXGI_FORMAT(151) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
827 { DXGI_FORMAT(152) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
828 { DXGI_FORMAT(153) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
829 { DXGI_FORMAT(154) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
830 { DXGI_FORMAT(155) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
831 { DXGI_FORMAT(156) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
832 { DXGI_FORMAT(157) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
833 { DXGI_FORMAT(158) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
834 { DXGI_FORMAT(159) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
835 { DXGI_FORMAT(160) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
836 { DXGI_FORMAT(161) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
837 { DXGI_FORMAT(162) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
838 { DXGI_FORMAT(163) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
839 { DXGI_FORMAT(164) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
840 { DXGI_FORMAT(165) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
841 { DXGI_FORMAT(166) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
842 { DXGI_FORMAT(167) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
843 { DXGI_FORMAT(168) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
844 { DXGI_FORMAT(169) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
845 { DXGI_FORMAT(170) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
846 { DXGI_FORMAT(171) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
847 { DXGI_FORMAT(172) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
848 { DXGI_FORMAT(173) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
849 { DXGI_FORMAT(174) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
850 { DXGI_FORMAT(175) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
851 { DXGI_FORMAT(176) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
852 { DXGI_FORMAT(177) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
853 { DXGI_FORMAT(178) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
854 { DXGI_FORMAT(179) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
855 { DXGI_FORMAT(180) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
856 { DXGI_FORMAT(181) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
857 { DXGI_FORMAT(182) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
858 { DXGI_FORMAT(183) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
859 { DXGI_FORMAT(184) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
860 { DXGI_FORMAT(185) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
861 { DXGI_FORMAT(186) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
862 { DXGI_FORMAT(187) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
863 { DXGI_FORMAT(188) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
864
865 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
866 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
867 { DXGI_FORMAT_A4B4G4R4_UNORM ,DXGI_FORMAT_A4B4G4R4_UNORM, D3DFCS_A4B4G4R4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, A,B,G,R, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
868 //DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
869
870};
871
872const UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_NumFormats = (sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail) / sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL));
873
874//---------------------------------------------------------------------------------------------------------------------------------
875// GetHighestDefinedFeatureLevel
876D3D_FEATURE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHighestDefinedFeatureLevel()
877{
878 return D3D_FEATURE_LEVEL_12_2;
879}
880
881//---------------------------------------------------------------------------------------------------------------------------------
882// GetNumFormats
883UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumFormats()
884{
885 return s_NumFormats;
886}
887
888//---------------------------------------------------------------------------------------------------------------------------------
889// GetFormatTable
890const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatTable()
891{
892 return &s_FormatDetail[0];
893}
894
895//---------------------------------------------------------------------------------------------------------------------------------
896// GetFormatTable
897BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Opaque(DXGI_FORMAT Format)
898{
899 return Format == DXGI_FORMAT_420_OPAQUE;
900}
901
902//---------------------------------------------------------------------------------------------------------------------------------
903// FormatExists
904bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(DXGI_FORMAT Format)
905{
906 return GetFormat( Format) != (DXGI_FORMAT) -1 ? true : false;
907}
908
909//---------------------------------------------------------------------------------------------------------------------------------
910// GetDetailTableIndex
911UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format )
912{
913 if( (UINT)Format < _countof( s_FormatDetail ) )
914 {
915 assert( s_FormatDetail[(UINT)Format].DXGIFormat == Format );
916 return static_cast<UINT>(Format);
917 }
918
919 return (UINT)-1;
920}
921
922//---------------------------------------------------------------------------------------------------------------------------------
923// IsBlockCompressFormat - returns true if format is block compressed. This function is a helper function for GetBitsPerUnit and
924// if this function returns true then GetBitsPerUnit returns block size.
925bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsBlockCompressFormat(DXGI_FORMAT Format)
926{
927 // Returns true if BC1, BC2, BC3, BC4, BC5, BC6, BC7, or ASTC
928 return (Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC5_SNORM) ||
929 (Format >= DXGI_FORMAT_BC6H_TYPELESS && Format <= DXGI_FORMAT_BC7_UNORM_SRGB);
930}
931
932//---------------------------------------------------------------------------------------------------------------------------------
933// GetByteAlignment
934UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetByteAlignment(DXGI_FORMAT Format)
935{
936 UINT bits = GetBitsPerUnit(Format);
937 if (!IsBlockCompressFormat(Format))
938 {
939 bits *= GetWidthAlignment(Format)*GetHeightAlignment(Format)*GetDepthAlignment(Format);
940 }
941
942 assert((bits & 0x7) == 0); // Unit must be byte-aligned
943 return bits >> 3;
944}
945
946//---------------------------------------------------------------------------------------------------------------------------------
947// GetBitsPerUnitThrow
948UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnitThrow(DXGI_FORMAT Format)
949{
950 return s_FormatDetail[GetDetailTableIndexThrow( Format )].BitsPerUnit;
951}
952
953//---------------------------------------------------------------------------------------------------------------------------------
954// FormatExistsInHeader
955bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format, bool bExternalHeader)
956{
957 const UINT Index = GetDetailTableIndex( Format );
958 if (UINT( -1 ) == Index || (bExternalHeader && GetFormatDetail( Format )->bInternal))
959 {
960 return false;
961 }
962 else
963 {
964 return true;
965 }
966}
967
968//---------------------------------------------------------------------------------------------------------------------------------
969// GetName
970LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHideInternalFormats)
971{
972 const UINT Index = GetDetailTableIndex( Format );
973 if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal) || !s_FormatNames[Index])
974 {
975 return "Unrecognized";
976 }
977 else
978 {
979 return s_FormatNames[ Index ];
980 }
981}
982
983//---------------------------------------------------------------------------------------------------------------------------------
984// IsSRGBFormat
985bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSRGBFormat(DXGI_FORMAT Format)
986{
987 const UINT Index = GetDetailTableIndex(Format);
988 if(UINT( -1 ) == Index )
989 {
990 return false;
991 }
992
993 return s_FormatDetail[Index].SRGBFormat ? true : false;
994}
995
996//----------------------------------------------------------------------------
997// DivideAndRoundUp
998inline HRESULT DivideAndRoundUp(UINT dividend, UINT divisor, _Out_ UINT& result)
999{
1000 HRESULT hr = S_OK;
1001
1002 UINT adjustedDividend;
1003 hr = Safe_UIntAdd(dividend, (divisor - 1), &adjustedDividend);
1004
1005 result = SUCCEEDED(hr) ? (adjustedDividend / divisor) : 0;
1006
1007 return hr;
1008}
1009
1010//----------------------------------------------------------------------------
1011// CalculateExtraPlanarRows
1012HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows(
1013 DXGI_FORMAT format,
1014 UINT plane0Height,
1015 _Out_ UINT& totalHeight
1016 )
1017{
1018 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(format))
1019 {
1020 totalHeight = plane0Height;
1021 return S_OK;
1022 }
1023
1024 // blockWidth, blockHeight, and blockSize only reflect the size of plane 0. Each planar format has additonal planes that must
1025 // be counted. Each format increases size by another 0.5x, 1x, or 2x. Grab the number of "half allocation" increments so integer
1026 // math can be used to calculate the extra size.
1027 UINT extraHalfHeight;
1028 UINT round;
1029
1030 switch (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(format))
1031 {
1032 case DXGI_FORMAT_NV12:
1033 case DXGI_FORMAT_P010:
1034 case DXGI_FORMAT_P016:
1035 case DXGI_FORMAT_420_OPAQUE:
1036 extraHalfHeight = 1;
1037 round = 1;
1038 break;
1039
1040 case DXGI_FORMAT_NV11:
1041 case DXGI_FORMAT_P208:
1042 extraHalfHeight = 2;
1043 round = 0;
1044 break;
1045 case DXGI_FORMAT_V208:
1046 extraHalfHeight = 2;
1047 round = 1;
1048 break;
1049
1050 case DXGI_FORMAT_V408:
1051 extraHalfHeight = 4;
1052 round = 0;
1053 break;
1054
1055 case DXGI_FORMAT_R24G8_TYPELESS:
1056 case DXGI_FORMAT_R32G8X24_TYPELESS:
1057 totalHeight = plane0Height;
1058 return S_OK;
1059
1060 default:
1061 assert(false);
1062 return S_OK;
1063 }
1064
1065 UINT extraPlaneHeight;
1066 if (FAILED(Safe_UIntMult(plane0Height, extraHalfHeight, &extraPlaneHeight))
1067 || FAILED(Safe_UIntAdd(extraPlaneHeight, round, &extraPlaneHeight))
1068 || FAILED(Safe_UIntAdd(plane0Height, (extraPlaneHeight >> 1), &totalHeight)))
1069 {
1070 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1071 }
1072
1073 return S_OK;
1074}
1075
1076//----------------------------------------------------------------------------
1077// CalculateResourceSize
1078HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(
1079 UINT width,
1080 UINT height,
1081 UINT depth,
1082 DXGI_FORMAT format,
1083 UINT mipLevels,
1084 UINT subresources,
1085 _Out_ SIZE_T& totalByteSize,
1086 _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST *pDst)
1087{
1088 UINT tableIndex = GetDetailTableIndexNoThrow( format );
1089 if (tableIndex == UINT(-1))
1090 return E_INVALIDARG;
1091
1092 totalByteSize = 0;
1093
1094 const FORMAT_DETAIL& formatDetail = s_FormatDetail[tableIndex];
1095
1096 bool fIsBlockCompressedFormat = IsBlockCompressFormat(format );
1097
1098 // No format currently requires depth alignment.
1099 assert(formatDetail.DepthAlignment == 1);
1100
1101 UINT subWidth = width;
1102 UINT subHeight = height;
1103 UINT subDepth = depth;
1104 for (UINT s = 0, iM = 0; s < subresources; ++s)
1105 {
1106 UINT blockWidth;
1107 if (FAILED(DivideAndRoundUp(subWidth, formatDetail.WidthAlignment, /*_Out_*/ blockWidth)))
1108 {
1109 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1110 }
1111
1112 UINT blockSize, blockHeight;
1113 if (fIsBlockCompressedFormat)
1114 {
1115 if (FAILED(DivideAndRoundUp(subHeight, formatDetail.HeightAlignment, /*_Out_*/ blockHeight)))
1116 {
1117 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1118 }
1119
1120 // Block Compressed formats use BitsPerUnit as block size.
1121 blockSize = formatDetail.BitsPerUnit;
1122 }
1123 else
1124 {
1125 // The height must *not* be aligned to HeightAlign. As there is no plane pitch/stride, the expectation is that the 2nd plane
1126 // begins immediately after the first. The only formats with HeightAlignment other than 1 are planar or block compressed, and
1127 // block compressed is handled above.
1128 assert(formatDetail.bPlanar || formatDetail.HeightAlignment == 1);
1129 blockHeight = subHeight;
1130
1131 // Combined with the division os subWidth by the width alignment above, this helps achieve rounding the stride up to an even multiple of
1132 // block width. This is especially important for formats like NV12 and P208 whose chroma plane is wider than the luma.
1133 blockSize = formatDetail.BitsPerUnit * formatDetail.WidthAlignment;
1134 }
1135
1136 if (DXGI_FORMAT_UNKNOWN == formatDetail.DXGIFormat)
1137 {
1138 blockSize = 8;
1139 }
1140
1141 // Convert block width size to bytes.
1142 assert((blockSize & 0x7) == 0);
1143 blockSize = blockSize >> 3;
1144
1145 if (formatDetail.bPlanar)
1146 {
1147 if (FAILED(CalculateExtraPlanarRows(format, blockHeight, /*_Out_*/ blockHeight)))
1148 {
1149 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1150 }
1151 }
1152
1153 // Calculate rowPitch, depthPitch, and total subresource size.
1154 UINT rowPitch, depthPitch;
1155
1156 if ( FAILED(Safe_UIntMult(blockWidth, blockSize, &rowPitch))
1157 || FAILED(Safe_UIntMult(blockHeight, rowPitch, &depthPitch)))
1158 {
1159 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1160 }
1161 SIZE_T subresourceByteSize = SIZE_T(UINT64(subDepth) * UINT64(depthPitch));
1162
1163 if (pDst)
1164 {
1165 D3D12_MEMCPY_DEST& dst = pDst[s];
1166
1167 // This data will be returned straight from the API to satisfy Map. So, strides/ alignment must be API-correct.
1168 dst.pData = reinterpret_cast<void*>(totalByteSize);
1169 assert(s != 0 || dst.pData == nullptr);
1170
1171 dst.RowPitch = rowPitch;
1172 dst.SlicePitch = depthPitch;
1173 }
1174
1175 // Align the subresource size.
1176 static_assert((MAP_ALIGN_REQUIREMENT & (MAP_ALIGN_REQUIREMENT - 1)) == 0, "This code expects MAP_ALIGN_REQUIREMENT to be a power of 2.");
1177
1178 SIZE_T subresourceByteSizeAligned = subresourceByteSize + MAP_ALIGN_REQUIREMENT - 1;
1179 subresourceByteSizeAligned = subresourceByteSizeAligned & ~(MAP_ALIGN_REQUIREMENT - 1);
1180 totalByteSize = totalByteSize + subresourceByteSizeAligned;
1181
1182
1183 // Iterate over mip levels and array elements
1184 if (++iM >= mipLevels)
1185 {
1186 iM = 0;
1187
1188 subWidth = width;
1189 subHeight = height;
1190 subDepth = depth;
1191 }
1192 else
1193 {
1194 subWidth /= (1 == subWidth ? 1 : 2);
1195 subHeight /= (1 == subHeight ? 1 : 2);
1196 subDepth /= (1 == subDepth ? 1 : 2);
1197 }
1198 }
1199
1200 return S_OK;
1201}
1202
1203inline bool IsPow2( UINT Val )
1204{
1205 return 0 == (Val & (Val - 1));
1206}
1207
1208// This helper function calculates the Row Pitch for a given format. For Planar formats this function returns
1209// the row major RowPitch of the resource. The RowPitch is the same for all the planes. For Planar
1210// also use the CalculateExtraPlanarRows function to calculate the corresonding height or use the CalculateMinimumRowMajorSlicePitch
1211// function. For Block Compressed Formats, this function returns the RowPitch of a row of blocks. For packed subsampled formats and other formats,
1212// this function returns the row pitch of one single row of pixels.
1213HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXGI_FORMAT Format, UINT Width, _Out_ UINT &RowPitch)
1214{
1215 // Early out for DXGI_FORMAT_UNKNOWN special case.
1216 if (Format == DXGI_FORMAT_UNKNOWN)
1217 {
1218 RowPitch = Width;
1219 return S_OK;
1220 }
1221
1222 UINT WidthAlignment = GetWidthAlignment(Format);
1223
1224 UINT NumUnits;
1225 if (IsBlockCompressFormat(Format))
1226 {
1227 // This function calculates the minimum stride needed for a block row when the format
1228 // is block compressed.The GetBitsPerUnit value stored in the format table indicates
1229 // the size of a compressed block for block compressed formats.
1230 assert(WidthAlignment != 0);
1231 if (FAILED(DivideAndRoundUp(Width, WidthAlignment, NumUnits)))
1232 {
1233 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1234 }
1235 }
1236 else
1237 {
1238 // All other formats must have strides aligned to their width alignment requirements.
1239 // The Width may not be aligned to the WidthAlignment. This is not an error for this
1240 // function as we expect to allow formats like NV12 to have odd dimensions in the future.
1241
1242 // The following alignement code expects only pow2 alignment requirements. Only block
1243 // compressed formats currently have non-pow2 alignment requriements.
1244 assert(IsPow2(WidthAlignment));
1245
1246 UINT Mask = WidthAlignment - 1;
1247 if (FAILED(Safe_UIntAdd(Width, Mask, &NumUnits)))
1248 {
1249 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1250 }
1251
1252 NumUnits &= ~Mask;
1253 }
1254
1255 if (FAILED(Safe_UIntMult(NumUnits, GetBitsPerUnit(Format), &RowPitch)))
1256 {
1257 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1258 }
1259
1260 // This must to always be Byte aligned.
1261 assert((RowPitch & 7) == 0);
1262 RowPitch >>= 3;
1263
1264 return S_OK;
1265}
1266
1267// This helper function calculates the SlicePitch for a given format. For Planar formats the slice pitch includes the extra
1268// planes.
1269HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(DXGI_FORMAT Format, UINT TightRowPitch, UINT Height, _Out_ UINT &SlicePitch)
1270{
1271 if (Planar(Format))
1272 {
1273 UINT PlanarHeight;
1274 if (FAILED(CalculateExtraPlanarRows(Format, Height, PlanarHeight)))
1275 {
1276 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1277 }
1278
1279 return Safe_UIntMult(TightRowPitch, PlanarHeight, &SlicePitch);
1280 }
1281 else if (Format == DXGI_FORMAT_UNKNOWN)
1282 {
1283 return Safe_UIntMult(TightRowPitch, Height, &SlicePitch);
1284 }
1285
1286 UINT HeightAlignment = GetHeightAlignment(Format);
1287
1288 // Caution assert to make sure that no new format breaks this assumption that all HeightAlignment formats are BC or Planar.
1289 // This is to make sure that Height handled correctly for this calculation.
1290 assert(HeightAlignment == 1 || IsBlockCompressFormat(Format));
1291
1292 UINT HeightOfPacked;
1293 if (FAILED(DivideAndRoundUp(Height, HeightAlignment, HeightOfPacked)))
1294 {
1295 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1296 }
1297
1298 if (FAILED(Safe_UIntMult(HeightOfPacked, TightRowPitch, &SlicePitch)))
1299 {
1300 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1301 }
1302
1303 return S_OK;
1304}
1305
1306
1307
1308//---------------------------------------------------------------------------------------------------------------------------------
1309// GetBitsPerUnit - returns bits per pixel unless format is a block compress format then it returns bits per block.
1310// use IsBlockCompressFormat() to determine if block size is returned.
1311UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnit(DXGI_FORMAT Format)
1312{
1313 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerUnit;
1314}
1315
1316//---------------------------------------------------------------------------------------------------------------------------------
1317UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment(DXGI_FORMAT Format)
1318{
1319 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].WidthAlignment;
1320}
1321
1322UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment(DXGI_FORMAT Format)
1323{
1324 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].HeightAlignment;
1325}
1326
1327UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment(DXGI_FORMAT Format)
1328{
1329 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].DepthAlignment;
1330}
1331//---------------------------------------------------------------------------------------------------------------------------------
1332// GetFormat
1333DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormat(SIZE_T Index)
1334{
1335 if( Index < GetNumFormats() )
1336 {
1337 return s_FormatDetail[Index].DXGIFormat;
1338 }
1339 return (DXGI_FORMAT)-1;
1340}
1341
1342//---------------------------------------------------------------------------------------------------------------------------------
1343// CanBeCastEvenFullyTyped
1344bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CanBeCastEvenFullyTyped(DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl)
1345{
1346 //SRGB can be cast away/back, and XR_BIAS can be cast to/from UNORM
1347 switch(fl)
1348 {
1349 case D3D_FEATURE_LEVEL_1_0_GENERIC:
1350 case D3D_FEATURE_LEVEL_1_0_CORE:
1351 return false;
1352 default:
1353 break;
1354 }
1355 switch( Format )
1356 {
1357 case DXGI_FORMAT_R8G8B8A8_UNORM:
1358 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
1359 case DXGI_FORMAT_B8G8R8A8_UNORM:
1360 case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
1361 return true;
1362 case DXGI_FORMAT_R10G10B10A2_UNORM:
1363 case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
1364 return fl >= D3D_FEATURE_LEVEL_10_0;
1365 default:
1366 return false;
1367 }
1368}
1369
1370//---------------------------------------------------------------------------------------------------------------------------------
1371// GetFormatDetail
1372const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatDetail( DXGI_FORMAT Format )
1373{
1374 const UINT Index = GetDetailTableIndex(Format);
1375 if(UINT( -1 ) == Index )
1376 {
1377 return nullptr;
1378 }
1379
1380 return &s_FormatDetail[ Index ];
1381}
1382
1383//---------------------------------------------------------------------------------------------------------------------------------
1384// GetBitsPerStencil
1385UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format)
1386{
1387 const UINT Index = GetDetailTableIndexThrow( Format );
1388 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1389 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1390 {
1391 return 0;
1392 }
1393 for( UINT comp = 0; comp < 4; comp++ )
1394 {
1395 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1396 switch(comp)
1397 {
1398 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1399 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1400 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1401 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1402 }
1403 if( name == D3DFCN_S )
1404 {
1405 return s_FormatDetail[Index].BitsPerComponent[comp];
1406 }
1407 }
1408 return 0;
1409}
1410
1411//---------------------------------------------------------------------------------------------------------------------------------
1412// GetBitsPerDepth
1413UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format)
1414{
1415 const UINT Index = GetDetailTableIndexThrow( Format );
1416 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1417 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1418 {
1419 return 0;
1420 }
1421 for( UINT comp = 0; comp < 4; comp++ )
1422 {
1423 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1424 switch(comp)
1425 {
1426 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1427 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1428 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1429 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1430 }
1431 if( name == D3DFCN_D )
1432 {
1433 return s_FormatDetail[Index].BitsPerComponent[comp];
1434 }
1435 }
1436 return 0;
1437}
1438
1439//---------------------------------------------------------------------------------------------------------------------------------
1440// GetFormatReturnTypes
1441void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes(
1442 DXGI_FORMAT Format,
1443 D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations ) // return array with 4 entries
1444{
1445 const UINT Index = GetDetailTableIndexThrow(Format);
1446 pInterpretations[D3D10_SB_4_COMPONENT_R] = s_FormatDetail[Index].ComponentInterpretation0;
1447 pInterpretations[D3D10_SB_4_COMPONENT_G] = s_FormatDetail[Index].ComponentInterpretation1;
1448 pInterpretations[D3D10_SB_4_COMPONENT_B] = s_FormatDetail[Index].ComponentInterpretation2;
1449 pInterpretations[D3D10_SB_4_COMPONENT_A] = s_FormatDetail[Index].ComponentInterpretation3;
1450}
1451
1452//---------------------------------------------------------------------------------------------------------------------------------
1453// GetAddressingBitsPerAlignedSize
1454UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetAddressingBitsPerAlignedSize(DXGI_FORMAT Format)
1455{
1456 UINT byteAlignment = GetByteAlignment(Format);
1457 UINT8 addressBitsPerElement = 0;
1458
1459 switch(byteAlignment)
1460 {
1461 case 1: addressBitsPerElement = 0; break;
1462 case 2: addressBitsPerElement = 1; break;
1463 case 4: addressBitsPerElement = 2; break;
1464 case 8: addressBitsPerElement = 3; break;
1465 case 16: addressBitsPerElement = 4; break;
1466
1467 // The format is not supported
1468 default: return UINT8( -1 );
1469 }
1470
1471 return addressBitsPerElement;
1472}
1473
1474//---------------------------------------------------------------------------------------------------------------------------------
1475// GetNumComponentsInFormat
1476UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat( DXGI_FORMAT Format )
1477{
1478 UINT n = 0;
1479 const UINT Index = GetDetailTableIndexThrow(Format);
1480 for( UINT comp = 0; comp < 4; comp++ )
1481 {
1482 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1483 switch(comp)
1484 {
1485 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1486 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1487 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1488 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1489 }
1490 if( name != D3DFCN_X )
1491 {
1492 n++;
1493 }
1494 }
1495 return n;
1496}
1497
1498//---------------------------------------------------------------------------------------------------------------------------------
1499// GetMinNumComponentsInFormats
1500UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
1501{
1502 UINT NumComponentsFormatA = GetNumComponentsInFormat(FormatA);
1503 UINT NumComponentsFormatB = GetNumComponentsInFormat(FormatB);
1504 UINT NumComponents = NumComponentsFormatA < NumComponentsFormatB ? NumComponentsFormatA : NumComponentsFormatB;
1505 return NumComponents;
1506}
1507
1508//---------------------------------------------------------------------------------------------------------------------------------
1509// Sequential2AbsoluteComponentIndex
1510UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI_FORMAT Format, UINT SequentialComponentIndex)
1511{
1512 UINT n = 0;
1513 const UINT Index = GetDetailTableIndexThrow(Format);
1514 for( UINT comp = 0; comp < 4; comp++ )
1515 {
1516 D3D_FORMAT_COMPONENT_NAME name = static_cast<D3D_FORMAT_COMPONENT_NAME>(0);
1517 switch(comp)
1518 {
1519 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1520 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1521 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1522 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1523 }
1524 if( name != D3DFCN_X )
1525 {
1526 if (SequentialComponentIndex == n)
1527 {
1528 return comp;
1529 }
1530 n++;
1531 }
1532 }
1533 return UINT( -1 );
1534}
1535
1536//---------------------------------------------------------------------------------------------------------------------------------
1537// Depth Only Format
1538bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DepthOnlyFormat(DXGI_FORMAT Format)
1539{
1540 switch( Format )
1541 {
1542 case DXGI_FORMAT_D32_FLOAT:
1543 case DXGI_FORMAT_D16_UNORM:
1544 return true;
1545 default:
1546 return false;
1547 }
1548}
1549
1550//---------------------------------------------------------------------------------------------------------------------------------
1551bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsSamplerFeedback(DXGI_FORMAT Format)
1552{
1553 switch (Format)
1554 {
1555 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE:
1556 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE:
1557 return true;
1558 default:
1559 return false;
1560 }
1561}
1562
1563//---------------------------------------------------------------------------------------------------------------------------------
1564// GetParentFormat
1565DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(DXGI_FORMAT Format)
1566{
1567 return s_FormatDetail[Format].ParentFormat;
1568}
1569
1570//---------------------------------------------------------------------------------------------------------------------------------
1571// GetFormatCastSet
1572const DXGI_FORMAT* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatCastSet(DXGI_FORMAT Format)
1573{
1574 return s_FormatDetail[Format].pDefaultFormatCastSet;
1575}
1576
1577//---------------------------------------------------------------------------------------------------------------------------------
1578// GetTypeLevel
1579D3D_FORMAT_TYPE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTypeLevel(DXGI_FORMAT Format)
1580{
1581 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].TypeLevel;
1582}
1583
1584//---------------------------------------------------------------------------------------------------------------------------------
1585// GetLayout
1586D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Format)
1587{
1588 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].Layout;
1589}
1590
1591//---------------------------------------------------------------------------------------------------------------------------------
1592// GetComponentName
1593D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1594{
1595 D3D_FORMAT_COMPONENT_NAME name = {};
1596 switch( AbsoluteComponentIndex )
1597 {
1598 case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName0; break;
1599 case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName1; break;
1600 case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName2; break;
1601 case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName3; break;
1602#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1603 default: throw std::invalid_argument("AbsoluteComponentIndex");
1604#else
1605 default: break;
1606#endif
1607 }
1608 return name;
1609}
1610//---------------------------------------------------------------------------------------------------------------------------------
1611// GetBitsPerComponent
1612UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerComponent(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1613{
1614 if( AbsoluteComponentIndex > 3 )
1615 {
1616#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1617 throw std::invalid_argument("AbsoluteComponentIndex");
1618#else
1619 return UINT( -1 );
1620#endif
1621 }
1622 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerComponent[AbsoluteComponentIndex];
1623}
1624
1625//---------------------------------------------------------------------------------------------------------------------------------
1626// GetFormatComponentInterpretation
1627D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatComponentInterpretation(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1628{
1629 D3D_FORMAT_COMPONENT_INTERPRETATION interp {};
1630
1631 switch( AbsoluteComponentIndex )
1632 {
1633 case 0: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation0; break;
1634 case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation1; break;
1635 case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation2; break;
1636 case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation3; break;
1637#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1638 default: throw std::invalid_argument("AbsoluteComponentIndex");
1639#else
1640 default: break;
1641#endif
1642 }
1643 return interp;
1644}
1645
1646//---------------------------------------------------------------------------------------------------------------------------------
1647// Planar
1648BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(DXGI_FORMAT Format)
1649{
1650 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bPlanar;
1651}
1652
1653//---------------------------------------------------------------------------------------------------------------------------------
1654// Non-opaque Planar
1655BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(DXGI_FORMAT Format)
1656{
1657 return Planar(Format) && !Opaque(Format);
1658}
1659
1660//---------------------------------------------------------------------------------------------------------------------------------
1661// YUV
1662BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::YUV(DXGI_FORMAT Format)
1663{
1664 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bYUV;
1665}
1666
1667//---------------------------------------------------------------------------------------------------------------------------------
1668// Format family supports stencil
1669bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Format)
1670{
1671 switch( GetParentFormat(Format) )
1672 {
1673 case DXGI_FORMAT_R32G8X24_TYPELESS:
1674 case DXGI_FORMAT_R24G8_TYPELESS:
1675 return true;
1676 default:
1677 return false;
1678 }
1679}
1680
1681//---------------------------------------------------------------------------------------------------------------------------------
1682// GetDetailTableIndexThrow
1683UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Format)
1684{
1685 UINT Index = GetDetailTableIndex( Format );
1686#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1687 if(UINT( -1 ) == Index )
1688 {
1689 throw std::invalid_argument("Format");
1690 }
1691#endif
1692 return Index;
1693}
1694
1695//---------------------------------------------------------------------------------------------------------------------------------
1696// GetDetailTableIndexNoThrow
1697UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexNoThrow(DXGI_FORMAT Format)
1698{
1699 UINT Index = GetDetailTableIndex( Format );
1700 assert(UINT( -1 ) != Index ); // Needs to be validated externally.
1701 return Index;
1702}
1703
1704//---------------------------------------------------------------------------------------------------------------------------------
1705// GetYCbCrChromaSubsampling
1706void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetYCbCrChromaSubsampling(
1707 DXGI_FORMAT Format,
1708 _Out_ UINT& HorizontalSubsampling,
1709 _Out_ UINT& VerticalSubsampling
1710 )
1711{
1712 switch( Format)
1713 {
1714 // YCbCr 4:2:0
1715 case DXGI_FORMAT_NV12:
1716 case DXGI_FORMAT_P010:
1717 case DXGI_FORMAT_P016:
1718 case DXGI_FORMAT_420_OPAQUE:
1719 HorizontalSubsampling = 2;
1720 VerticalSubsampling = 2;
1721 break;
1722
1723 // YCbCr 4:2:2
1724 case DXGI_FORMAT_P208:
1725 case DXGI_FORMAT_YUY2:
1726 case DXGI_FORMAT_Y210:
1727 HorizontalSubsampling = 2;
1728 VerticalSubsampling = 1;
1729 break;
1730
1731 // YCbCr 4:4:0
1732 case DXGI_FORMAT_V208:
1733 HorizontalSubsampling = 1;
1734 VerticalSubsampling = 2;
1735 break;
1736
1737 // YCbCr 4:4:4
1738 case DXGI_FORMAT_AYUV:
1739 case DXGI_FORMAT_V408:
1740 case DXGI_FORMAT_Y410:
1741 case DXGI_FORMAT_Y416:
1742 // Fallthrough
1743
1744 // YCbCr palletized 4:4:4:
1745 case DXGI_FORMAT_AI44:
1746 case DXGI_FORMAT_IA44:
1747 case DXGI_FORMAT_P8:
1748 case DXGI_FORMAT_A8P8:
1749 HorizontalSubsampling = 1;
1750 VerticalSubsampling = 1;
1751 break;
1752
1753 // YCbCr 4:1:1
1754 case DXGI_FORMAT_NV11:
1755 HorizontalSubsampling = 4;
1756 VerticalSubsampling = 1;
1757 break;
1758
1759 default:
1760 // All YCbCr formats should be in this list.
1761 assert( !YUV(Format) );
1762 HorizontalSubsampling = 1;
1763 VerticalSubsampling = 1;
1764 break;
1765 };
1766}
1767
1768//---------------------------------------------------------------------------------------------------------------------------------
1769// Plane count for non-opaque planar formats
1770UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlaneCount(DXGI_FORMAT Format)
1771{
1772 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(Format))
1773 {
1774 return 1;
1775 }
1776
1777 // V208 and V408 are the only 3-plane formats.
1778 return (Format == DXGI_FORMAT_V208 || Format == DXGI_FORMAT_V408) ? 3 : 2;
1779}
1780
1781//---------------------------------------------------------------------------------------------------------------------------------
1782// GetTileShape
1783//
1784// Retrieve 64K Tiled Resource tile shape
1785void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape(
1786 D3D12_TILE_SHAPE* pTileShape,
1787 DXGI_FORMAT Format,
1788 D3D12_RESOURCE_DIMENSION Dimension,
1789 UINT SampleCount
1790 )
1791{
1792 UINT BPU = GetBitsPerUnit(Format);
1793
1794 switch(Dimension)
1795 {
1796 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1797 case D3D12_RESOURCE_DIMENSION_BUFFER:
1798 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1799 {
1800 assert(!IsBlockCompressFormat(Format));
1801 pTileShape->WidthInTexels = (BPU == 0) ? D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES : D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES*8 / BPU;
1802 pTileShape->HeightInTexels = 1;
1803 pTileShape->DepthInTexels = 1;
1804 }
1805 break;
1806 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1807 {
1808 if (IsBlockCompressFormat(Format))
1809 {
1810 // Currently only supported block sizes are 64 and 128.
1811 // These equations calculate the size in texels for a tile. It relies on the fact that 64 * 64 blocks fit in a tile if the block size is 128 bits.
1812 assert(BPU == 64 || BPU == 128);
1813 pTileShape->WidthInTexels = 64 * GetWidthAlignment(Format);
1814 pTileShape->HeightInTexels = 64 * GetHeightAlignment(Format);
1815 pTileShape->DepthInTexels = 1;
1816 if (BPU == 64)
1817 {
1818 // If bits per block are 64 we double width so it takes up the full tile size.
1819 // This is only true for BC1 and BC4
1820 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1821 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1822 pTileShape->WidthInTexels *= 2;
1823 }
1824 }
1825 else
1826 {
1827 pTileShape->DepthInTexels = 1;
1828 if (BPU <= 8)
1829 {
1830 pTileShape->WidthInTexels = 256;
1831 pTileShape->HeightInTexels = 256;
1832 }
1833 else if (BPU <= 16)
1834 {
1835 pTileShape->WidthInTexels = 256;
1836 pTileShape->HeightInTexels = 128;
1837 }
1838 else if (BPU <= 32)
1839 {
1840 pTileShape->WidthInTexels = 128;
1841 pTileShape->HeightInTexels = 128;
1842 }
1843 else if (BPU <= 64)
1844 {
1845 pTileShape->WidthInTexels = 128;
1846 pTileShape->HeightInTexels = 64;
1847 }
1848 else if (BPU <= 128)
1849 {
1850 pTileShape->WidthInTexels = 64;
1851 pTileShape->HeightInTexels = 64;
1852 }
1853 else
1854 {
1855 ASSUME( FALSE );
1856 }
1857
1858 if (SampleCount <= 1)
1859 { /* Do nothing */ }
1860 else if (SampleCount <= 2)
1861 {
1862 pTileShape->WidthInTexels /= 2;
1863 pTileShape->HeightInTexels /= 1;
1864 }
1865 else if (SampleCount <= 4)
1866 {
1867 pTileShape->WidthInTexels /= 2;
1868 pTileShape->HeightInTexels /= 2;
1869 }
1870 else if (SampleCount <= 8)
1871 {
1872 pTileShape->WidthInTexels /= 4;
1873 pTileShape->HeightInTexels /= 2;
1874 }
1875 else if (SampleCount <= 16)
1876 {
1877 pTileShape->WidthInTexels /= 4;
1878 pTileShape->HeightInTexels /= 4;
1879 }
1880 else
1881 {
1882 ASSUME( FALSE );
1883 }
1884 }
1885 }
1886 break;
1887 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
1888 {
1889 if (IsBlockCompressFormat(Format))
1890 {
1891 // Currently only supported block sizes are 64 and 128.
1892 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1893 assert(BPU == 64 || BPU == 128);
1894 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1895 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1896 pTileShape->DepthInTexels = 16 * GetDepthAlignment(Format);
1897 if (BPU == 64)
1898 {
1899 // If bits per block are 64 we double width so it takes up the full tile size.
1900 // This is only true for BC1 and BC4
1901 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1902 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1903 pTileShape->WidthInTexels *= 2;
1904 }
1905 }
1906 else if (Format == DXGI_FORMAT_R8G8_B8G8_UNORM || Format == DXGI_FORMAT_G8R8_G8B8_UNORM)
1907 {
1908 //RGBG and GRGB are treated as 2x1 block format
1909 pTileShape->WidthInTexels = 64;
1910 pTileShape->HeightInTexels = 32;
1911 pTileShape->DepthInTexels = 16;
1912 }
1913 else
1914 {
1915 // Not a block format so BPU is bits per pixel.
1916 assert(GetWidthAlignment(Format) == 1 && GetHeightAlignment(Format) == 1 && GetDepthAlignment(Format));
1917 switch(BPU)
1918 {
1919 case 8:
1920 pTileShape->WidthInTexels = 64;
1921 pTileShape->HeightInTexels = 32;
1922 pTileShape->DepthInTexels = 32;
1923 break;
1924 case 16:
1925 pTileShape->WidthInTexels = 32;
1926 pTileShape->HeightInTexels = 32;
1927 pTileShape->DepthInTexels = 32;
1928 break;
1929 case 32:
1930 pTileShape->WidthInTexels = 32;
1931 pTileShape->HeightInTexels = 32;
1932 pTileShape->DepthInTexels = 16;
1933 break;
1934 case 64:
1935 pTileShape->WidthInTexels = 32;
1936 pTileShape->HeightInTexels = 16;
1937 pTileShape->DepthInTexels = 16;
1938 break;
1939 case 128:
1940 pTileShape->WidthInTexels = 16;
1941 pTileShape->HeightInTexels = 16;
1942 pTileShape->DepthInTexels = 16;
1943 break;
1944 }
1945 }
1946 break;
1947 }
1948 }
1949}
1950
1951//---------------------------------------------------------------------------------------------------------------------------------
1952// Get4KTileShape
1953//
1954// Retrieve 4K Tiled Resource tile shape
1955void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape(
1956 D3D12_TILE_SHAPE* pTileShape,
1957 DXGI_FORMAT Format,
1958 D3D12_RESOURCE_DIMENSION Dimension,
1959 UINT SampleCount
1960 )
1961{
1962 UINT BPU = GetBitsPerUnit(Format);
1963
1964 switch(Dimension)
1965 {
1966 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1967 case D3D12_RESOURCE_DIMENSION_BUFFER:
1968 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1969 {
1970 assert(!IsBlockCompressFormat(Format));
1971 pTileShape->WidthInTexels = (BPU == 0) ? 4096 : 4096*8 / BPU;
1972 pTileShape->HeightInTexels = 1;
1973 pTileShape->DepthInTexels = 1;
1974 }
1975 break;
1976 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1977 {
1978 pTileShape->DepthInTexels = 1;
1979 if (IsBlockCompressFormat(Format))
1980 {
1981 // Currently only supported block sizes are 64 and 128.
1982 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1983 assert(BPU == 64 || BPU == 128);
1984 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1985 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1986 if (BPU == 64)
1987 {
1988 // If bits per block are 64 we double width so it takes up the full tile size.
1989 // This is only true for BC1 and BC4
1990 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1991 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1992 pTileShape->WidthInTexels *= 2;
1993 }
1994 }
1995 else
1996 {
1997 if (BPU <= 8)
1998 {
1999 pTileShape->WidthInTexels = 64;
2000 pTileShape->HeightInTexels = 64;
2001 }
2002 else if (BPU <= 16)
2003 {
2004 pTileShape->WidthInTexels = 64;
2005 pTileShape->HeightInTexels = 32;
2006 }
2007 else if (BPU <= 32)
2008 {
2009 pTileShape->WidthInTexels = 32;
2010 pTileShape->HeightInTexels = 32;
2011 }
2012 else if (BPU <= 64)
2013 {
2014 pTileShape->WidthInTexels = 32;
2015 pTileShape->HeightInTexels = 16;
2016 }
2017 else if (BPU <= 128)
2018 {
2019 pTileShape->WidthInTexels = 16;
2020 pTileShape->HeightInTexels = 16;
2021 }
2022 else
2023 {
2024 ASSUME( FALSE );
2025 }
2026
2027 if (SampleCount <= 1)
2028 { /* Do nothing */ }
2029 else if (SampleCount <= 2)
2030 {
2031 pTileShape->WidthInTexels /= 2;
2032 pTileShape->HeightInTexels /= 1;
2033 }
2034 else if (SampleCount <= 4)
2035 {
2036 pTileShape->WidthInTexels /= 2;
2037 pTileShape->HeightInTexels /= 2;
2038 }
2039 else if (SampleCount <= 8)
2040 {
2041 pTileShape->WidthInTexels /= 4;
2042 pTileShape->HeightInTexels /= 2;
2043 }
2044 else if (SampleCount <= 16)
2045 {
2046 pTileShape->WidthInTexels /= 4;
2047 pTileShape->HeightInTexels /= 4;
2048 }
2049 else
2050 {
2051 ASSUME( FALSE );
2052 }
2053
2054 assert(GetWidthAlignment(Format) == 1);
2055 assert(GetHeightAlignment(Format) == 1);
2056 assert(GetDepthAlignment(Format) == 1);
2057 }
2058
2059 break;
2060 }
2061 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
2062 {
2063 if (IsBlockCompressFormat(Format))
2064 {
2065 // Currently only supported block sizes are 64 and 128.
2066 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
2067 assert(BPU == 64 || BPU == 128);
2068 pTileShape->WidthInTexels = 8 * GetWidthAlignment(Format);
2069 pTileShape->HeightInTexels = 8 * GetHeightAlignment(Format);
2070 pTileShape->DepthInTexels = 4;
2071 if (BPU == 64)
2072 {
2073 // If bits per block are 64 we double width so it takes up the full tile size.
2074 // This is only true for BC1 and BC4
2075 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
2076 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
2077 pTileShape->DepthInTexels *= 2;
2078 }
2079 }
2080 else
2081 {
2082 if (BPU <= 8)
2083 {
2084 pTileShape->WidthInTexels = 16;
2085 pTileShape->HeightInTexels = 16;
2086 pTileShape->DepthInTexels = 16;
2087 }
2088 else if (BPU <= 16)
2089 {
2090 pTileShape->WidthInTexels = 16;
2091 pTileShape->HeightInTexels = 16;
2092 pTileShape->DepthInTexels = 8;
2093 }
2094 else if (BPU <= 32)
2095 {
2096 pTileShape->WidthInTexels = 16;
2097 pTileShape->HeightInTexels = 8;
2098 pTileShape->DepthInTexels = 8;
2099 }
2100 else if (BPU <= 64)
2101 {
2102 pTileShape->WidthInTexels = 8;
2103 pTileShape->HeightInTexels = 8;
2104 pTileShape->DepthInTexels = 8;
2105 }
2106 else if (BPU <= 128)
2107 {
2108 pTileShape->WidthInTexels = 8;
2109 pTileShape->HeightInTexels = 8;
2110 pTileShape->DepthInTexels = 4;
2111 }
2112 else
2113 {
2114 ASSUME( FALSE );
2115 }
2116
2117 assert(GetWidthAlignment(Format) == 1);
2118 assert(GetHeightAlignment(Format) == 1);
2119 assert(GetDepthAlignment(Format) == 1);
2120 }
2121 }
2122 break;
2123 }
2124}
2125
2126//----------------------------------------------------------------------------------------------------------------------------------
2127// GetPlaneSliceFromViewFormat
2128// Maps resource format + view format to a plane index for resource formats where the plane index can be inferred from this information.
2129// For planar formats where the plane index is ambiguous given this information (examples: V208, V408), this function returns 0.
2130// This function returns 0 for non-planar formats.
2131UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSliceFromViewFormat(
2132 DXGI_FORMAT ResourceFormat,
2133 DXGI_FORMAT ViewFormat
2134 )
2135{
2136 switch(GetParentFormat(ResourceFormat))
2137 {
2138 case DXGI_FORMAT_R24G8_TYPELESS:
2139 switch(ViewFormat)
2140 {
2141 case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
2142 return 0;
2143 case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
2144 return 1;
2145 default:
2146 ASSUME( false );
2147 }
2148 break;
2149 case DXGI_FORMAT_R32G8X24_TYPELESS:
2150 switch(ViewFormat)
2151 {
2152 case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2153 return 0;
2154 case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
2155 return 1;
2156 default:
2157 ASSUME( false );
2158 }
2159 break;
2160 case DXGI_FORMAT_NV12:
2161 case DXGI_FORMAT_NV11:
2162 case DXGI_FORMAT_P208:
2163 switch(ViewFormat)
2164 {
2165 case DXGI_FORMAT_R8_UNORM:
2166 case DXGI_FORMAT_R8_UINT:
2167 return 0;
2168 case DXGI_FORMAT_R8G8_UNORM:
2169 case DXGI_FORMAT_R8G8_UINT:
2170 return 1;
2171 default:
2172 ASSUME( false );
2173 }
2174 break;
2175 case DXGI_FORMAT_P016:
2176 case DXGI_FORMAT_P010:
2177 switch(ViewFormat)
2178 {
2179 case DXGI_FORMAT_R16_UNORM:
2180 case DXGI_FORMAT_R16_UINT:
2181 return 0;
2182 case DXGI_FORMAT_R16G16_UNORM:
2183 case DXGI_FORMAT_R16G16_UINT:
2184 case DXGI_FORMAT_R32_UINT:
2185 return 1;
2186 default:
2187 ASSUME( false );
2188 }
2189 break;
2190 default:
2191 break;
2192 }
2193 return 0;
2194}
2195
2196//----------------------------------------------------------------------------------------------------------------------------------
2197void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(
2198 UINT PlaneSlice,
2199 DXGI_FORMAT Format,
2200 UINT Width,
2201 UINT Height,
2202 _Out_ DXGI_FORMAT& PlaneFormat,
2203 _Out_ UINT& MinPlanePitchWidth,
2204 _Out_ UINT& PlaneWidth,
2205 _Out_ UINT& PlaneHeight)
2206{
2207 DXGI_FORMAT ParentFormat = GetParentFormat(Format);
2208
2209 if (Planar(ParentFormat))
2210 {
2211 switch (ParentFormat)
2212 {
2213 // YCbCr 4:2:0
2214 case DXGI_FORMAT_NV12:
2215 switch(PlaneSlice)
2216 {
2217 case 0:
2218 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2219 PlaneWidth = Width;
2220 PlaneHeight = Height;
2221 break;
2222 case 1:
2223 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2224 PlaneWidth = (Width + 1) >> 1;
2225 PlaneHeight = (Height + 1) >> 1;
2226 break;
2227 default:
2228 ASSUME(FALSE);
2229 };
2230
2231 MinPlanePitchWidth = PlaneWidth;
2232 break;
2233
2234 case DXGI_FORMAT_P010:
2235 case DXGI_FORMAT_P016:
2236 switch(PlaneSlice)
2237 {
2238 case 0:
2239 PlaneFormat = DXGI_FORMAT_R16_TYPELESS;
2240 PlaneWidth = Width;
2241 PlaneHeight = Height;
2242 break;
2243 case 1:
2244 PlaneFormat = DXGI_FORMAT_R16G16_TYPELESS;
2245 PlaneWidth = (Width + 1) >> 1;
2246 PlaneHeight = (Height + 1) >> 1;
2247 break;
2248 default:
2249 ASSUME(FALSE);
2250 };
2251
2252 MinPlanePitchWidth = PlaneWidth;
2253 break;
2254
2255 // YCbCr 4:2:2
2256 case DXGI_FORMAT_P208:
2257 switch(PlaneSlice)
2258 {
2259 case 0:
2260 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2261 PlaneWidth = Width;
2262 PlaneHeight = Height;
2263 break;
2264 case 1:
2265 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2266 PlaneWidth = (Width + 1) >> 1;
2267 PlaneHeight = Height;
2268 break;
2269 default:
2270 ASSUME(FALSE);
2271 };
2272
2273 MinPlanePitchWidth = PlaneWidth;
2274 break;
2275
2276 // YCbCr 4:4:0
2277 case DXGI_FORMAT_V208:
2278 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2279 switch(PlaneSlice)
2280 {
2281 case 0:
2282 PlaneWidth = Width;
2283 PlaneHeight = Height;
2284 break;
2285 case 1:
2286 case 2:
2287 PlaneWidth = Width;
2288 PlaneHeight = (Height + 1) >> 1;
2289 break;
2290 default:
2291 ASSUME(FALSE);
2292 };
2293
2294 MinPlanePitchWidth = PlaneWidth;
2295 break;
2296
2297 // YCbCr 4:4:4
2298 case DXGI_FORMAT_V408:
2299
2300 switch(PlaneSlice)
2301 {
2302 case 0:
2303 case 1:
2304 case 2:
2305 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2306 PlaneWidth = Width;
2307 PlaneHeight = Height;
2308 MinPlanePitchWidth = PlaneWidth;
2309 break;
2310 default:
2311 ASSUME(FALSE);
2312 };
2313 break;
2314
2315 // YCbCr 4:1:1
2316 case DXGI_FORMAT_NV11:
2317 switch(PlaneSlice)
2318 {
2319 case 0:
2320 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2321 PlaneWidth = Width;
2322 PlaneHeight = Height;
2323 MinPlanePitchWidth = Width;
2324 break;
2325 case 1:
2326 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2327 PlaneWidth = (Width + 3) >> 2;
2328 PlaneHeight = Height;
2329
2330 // NV11 has unused padding to the right of the chroma plane in the RowMajor (linear) copyable layout.
2331 MinPlanePitchWidth = (Width + 1) >> 1;
2332 break;
2333 default:
2334 ASSUME(FALSE);
2335 };
2336
2337 break;
2338
2339 case DXGI_FORMAT_R32G8X24_TYPELESS:
2340 case DXGI_FORMAT_R24G8_TYPELESS:
2341 switch(PlaneSlice)
2342 {
2343 case 0:
2344 PlaneFormat = DXGI_FORMAT_R32_TYPELESS;
2345 PlaneWidth = Width;
2346 PlaneHeight = Height;
2347 MinPlanePitchWidth = Width;
2348 break;
2349 case 1:
2350 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2351 PlaneWidth = Width;
2352 PlaneHeight = Height;
2353 MinPlanePitchWidth = Width;
2354 break;
2355 default:
2356 ASSUME(FALSE);
2357 };
2358 break;
2359
2360 default:
2361 ASSUME( FALSE );
2362 };
2363 }
2364 else
2365 {
2366 assert(PlaneSlice == 0);
2367 PlaneFormat = Format;
2368 PlaneWidth = Width;
2369 PlaneHeight = Height;
2370 MinPlanePitchWidth = PlaneWidth;
2371 }
2372}
2373
2374//---------------------------------------------------------------------------------------------------------------------------------
2375// GetPlaneCount
2376UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(DXGI_FORMAT Format)
2377{
2378 switch( GetParentFormat(Format) )
2379 {
2380 case DXGI_FORMAT_NV12:
2381 case DXGI_FORMAT_NV11:
2382 case DXGI_FORMAT_P208:
2383 case DXGI_FORMAT_P016:
2384 case DXGI_FORMAT_P010:
2385 case DXGI_FORMAT_R24G8_TYPELESS:
2386 case DXGI_FORMAT_R32G8X24_TYPELESS:
2387 return 2;
2388 case DXGI_FORMAT_V208:
2389 case DXGI_FORMAT_V408:
2390 return 3;
2391 default:
2392 return 1;
2393 }
2394}
2395
2396//---------------------------------------------------------------------------------------------------------------------------------
2397void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMipDimensions(UINT8 mipSlice, _Inout_ UINT64 *pWidth, _Inout_opt_ UINT64 *pHeight, _Inout_opt_ UINT64 *pDepth)
2398{
2399 UINT denominator = (1 << mipSlice); // 2 ^ subresource
2400 UINT64 mipWidth = *pWidth / denominator;
2401 UINT64 mipHeight = pHeight ? *pHeight / denominator : 1;
2402 UINT64 mipDepth = pDepth ? *pDepth / denominator : 1;
2403
2404 // Adjust dimensions for degenerate mips
2405 if(mipHeight == 0 )
2406 mipHeight = 1;
2407 if(mipWidth == 0 )
2408 mipWidth = 1;
2409 if(mipDepth == 0)
2410 mipDepth = 1;
2411
2412 *pWidth = mipWidth;
2413 if(pHeight) *pHeight = mipHeight;
2414 if(pDepth) *pDepth = mipDepth;
2415}
2416
2417//---------------------------------------------------------------------------------------------------------------------------------
2418// DX9VertexOrIndexFormat
2419BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9VertexOrIndexFormat(DXGI_FORMAT Format)
2420{
2421 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9VertexOrIndexFormat;
2422}
2423
2424//---------------------------------------------------------------------------------------------------------------------------------
2425// DX9TextureFormat
2426BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9TextureFormat(DXGI_FORMAT Format)
2427{
2428 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9TextureFormat;
2429}
2430//---------------------------------------------------------------------------------------------------------------------------------
2431// FloatNormTextureFormat
2432BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatNormTextureFormat(DXGI_FORMAT Format)
2433{
2434 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bFloatNormFormat;
2435}
2436
2437//---------------------------------------------------------------------------------------------------------------------------------
2438// ValidCastToR32UAV
2439//
2440// D3D11 has a limitation on typed UAVs (e.g. Texture1D/2D/3D) whereby the only format that can be read is R32_*. Lots of formats
2441// can be written though, with type conversion (e.g. R8G8B8A8_*). If an API user wants to do image processing in-place, in either
2442// the Compute Shader or the Pixel Shader, the only format available is R32_* (since it can be read and written at the same time).
2443//
2444// We were able to allow resources (Texture1D/2D/3D), created with a format from a small set of families that have 32 bits per element
2445// (such as R8G8B8A8_TYPELESS), to be cast to R32_* when creating a UAV. This means the Compute Shader or Pixel Shader can
2446// do simultaneous read+write on the resource when bound as an R32_* UAV, with the caveat that the shader code has to do manual
2447// type conversion manually, but later on the resource can be used as an SRV or RT as the desired type (e.g. R8G8B8A8_UNORM), and
2448// thus have access to filtering/blending where the hardware knows what the format is.
2449//
2450// If we didn't have this ability to cast some formats to R32_* UAVs, applications would have to keep an extra allocation around
2451// and do a rendering pass that copies from the R32_* UAV to whatever typed resource they really wanted. For formats not included
2452// in this list, such as any format that doesn't have 32-bits per component, as well as some 32-bit per component formats like
2453// R24G8 or R11G11B10_FLOAT there is no alternative for an application but to do the extra copy as mentioned, or avoid in-place
2454// image editing in favor of ping-ponging between buffers with multiple passes.
2455//
2456bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::ValidCastToR32UAV(DXGI_FORMAT from, DXGI_FORMAT to)
2457{
2458 // Allow casting of 32 bit formats to R32_*
2459 if(
2460 ((to == DXGI_FORMAT_R32_UINT)||(to == DXGI_FORMAT_R32_SINT)||(to == DXGI_FORMAT_R32_FLOAT))
2461 &&
2462 (
2463 (from == DXGI_FORMAT_R10G10B10A2_TYPELESS) ||
2464 (from == DXGI_FORMAT_R8G8B8A8_TYPELESS) ||
2465 (from == DXGI_FORMAT_B8G8R8A8_TYPELESS) ||
2466 (from == DXGI_FORMAT_B8G8R8X8_TYPELESS) ||
2467 (from == DXGI_FORMAT_R16G16_TYPELESS) ||
2468 (from == DXGI_FORMAT_R32_TYPELESS)
2469 )
2470 )
2471 {
2472 return true;
2473 }
2474 return false;
2475}
2476
2477//---------------------------------------------------------------------------------------------------------------------------------
2478// IsSupportedTextureDisplayableFormat
2479//
2480// List of formats associated with Feature_D3D1XDisplayable
2481bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat
2482 ( DXGI_FORMAT Format
2483 , bool bMediaFormatOnly
2484 )
2485{
2486 if (bMediaFormatOnly)
2487 {
2488 return (false
2489 || ( Format == DXGI_FORMAT_NV12
2490 || Format == DXGI_FORMAT_YUY2
2491 )
2492 );
2493 }
2494 else
2495 {
2496 return (false // eases evolution
2497 || ( Format == DXGI_FORMAT_B8G8R8A8_UNORM
2498 || Format == DXGI_FORMAT_R8G8B8A8_UNORM
2499 || Format == DXGI_FORMAT_R16G16B16A16_FLOAT
2500 || Format == DXGI_FORMAT_R10G10B10A2_UNORM
2501 || Format == DXGI_FORMAT_NV12
2502 || Format == DXGI_FORMAT_YUY2
2503 )
2504 );
2505 }
2506}
2507
2508//---------------------------------------------------------------------------------------------------------------------------------
2509bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2510{
2511 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2512 for (UINT c = 0; c < NumComponents; c++)
2513 {
2514 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2515 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2516 if ((fciA != fciB) && ((fciA == D3DFCI_FLOAT) || (fciB == D3DFCI_FLOAT)))
2517 {
2518 return true;
2519 }
2520 }
2521 return false;
2522}
2523
2524//---------------------------------------------------------------------------------------------------------------------------------
2525bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2526{
2527 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2528 for (UINT c = 0; c < NumComponents; c++)
2529 {
2530 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2531 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2532 if (((fciA == D3DFCI_SNORM) && (fciB == D3DFCI_UNORM)) ||
2533 ((fciB == D3DFCI_SNORM) && (fciA == D3DFCI_UNORM)))
2534 {
2535 return true;
2536 }
2537 }
2538 return false;
2539}
2540
2541//---------------------------------------------------------------------------------------------------------------------------------
2542// Formats allowed by runtime for decode histogram.
2543 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format)
2544 {
2545 return (
2546 /* YUV 4:2:0 */
2547 Format == DXGI_FORMAT_NV12
2548 || Format == DXGI_FORMAT_P010
2549 || Format == DXGI_FORMAT_P016
2550 /* YUV 4:2:2 */
2551 || Format == DXGI_FORMAT_YUY2
2552 || Format == DXGI_FORMAT_Y210
2553 || Format == DXGI_FORMAT_Y216
2554 /* YUV 4:4:4 */
2555 || Format == DXGI_FORMAT_AYUV
2556 || Format == DXGI_FORMAT_Y410
2557 || Format == DXGI_FORMAT_Y416
2558 );
2559 }
2560
2561//---------------------------------------------------------------------------------------------------------------------------------
2562// Formats allowed by runtime for decode histogram. Scopes to tested formats.
2563 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::MotionEstimatorAllowedInputFormat(DXGI_FORMAT Format)
2564 {
2565 return Format == DXGI_FORMAT_NV12;
2566 }
2567
2568//---------------------------------------------------------------------------------------------------------------------------------
2569 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format)
2570 {
2571 // If the number of bits associated with depth in the format is greater then 0, then the format supports depth
2572 return (GetComponentName(Format, 0) == D3DFCN_D);
2573 }
2574
2575 //---------------------------------------------------------------------------------------------------------------------------------
2576 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format)
2577 {
2578 // If the number of bits associated with stencil in the format is greater then 0, then the format supports stencil
2579 return GetBitsPerStencil(Format) > 0;
2580 }
2581
2582#undef R
2583#undef G
2584#undef B
2585#undef A
2586#undef D
2587#undef S
2588#undef X
2589
2590#undef _TYPELESS
2591#undef _FLOAT
2592#undef _SNORM
2593#undef _UNORM
2594#undef _SINT
2595#undef _UINT
2596#undef _UNORM_SRGB
2597#undef _FIXED_2_8
2598
2599#endif // D3D12_SDK_VERSION >= 606
2600
2601
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/distributable files.txt b/contrib/microsoft.direct3d.d3d12.1.618.4/distributable files.txt
new file mode 100644
index 0000000..0bab1bf
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/distributable files.txt
@@ -0,0 +1,5 @@
1You may distribute the following files:
2
3D3D12Core.dll
4d3d12SDKLayers.dll
5d3dconfig.exe
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/icon.png b/contrib/microsoft.direct3d.d3d12.1.618.4/icon.png
new file mode 100644
index 0000000..b217335
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/icon.png
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/package/services/metadata/core-properties/20c8cfa303e54def8eaf74afbcdc6295.psmdcp b/contrib/microsoft.direct3d.d3d12.1.618.4/package/services/metadata/core-properties/20c8cfa303e54def8eaf74afbcdc6295.psmdcp
new file mode 100644
index 0000000..c7bacda
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/package/services/metadata/core-properties/20c8cfa303e54def8eaf74afbcdc6295.psmdcp
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<coreProperties xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties">
3 <dc:creator>Microsoft</dc:creator>
4 <dc:description>DirectX 12 Agility SDK</dc:description>
5 <dc:identifier>Microsoft.Direct3D.D3D12</dc:identifier>
6 <version>1.618.4</version>
7 <keywords>DirectX Direct3D D3D12 Direct3D12 DirectX12 Agility</keywords>
8 <lastModifiedBy>NuGet, Version=6.4.0.123, Culture=neutral, PublicKeyToken=31bf3856ad364e35;Microsoft Windows NT 10.0.20348.0;.NET Framework 4.7.2</lastModifiedBy>
9</coreProperties> \ No newline at end of file