aboutsummaryrefslogtreecommitdiff
path: root/contrib/DirectX-Headers
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/DirectX-Headers')
-rw-r--r--contrib/DirectX-Headers/CMakeLists.txt87
-rw-r--r--contrib/DirectX-Headers/LICENSE21
-rw-r--r--contrib/DirectX-Headers/README.md59
-rw-r--r--contrib/DirectX-Headers/SECURITY.md41
-rw-r--r--contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in4
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.h23139
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.idl5457
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.h659
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.idl88
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.h3657
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl1679
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12shader.h474
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.h5533
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.idl1448
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.h1068
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.idl911
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dx12.h4049
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore.h41
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore_interface.h316
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.h57
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.idl52
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.h142
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.idl137
-rw-r--r--contrib/DirectX-Headers/include/dxguids/dxguids.h126
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpc.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/winadapter.h340
-rw-r--r--contrib/DirectX-Headers/include/wsl/wrladapter.h801
-rw-r--r--contrib/DirectX-Headers/meson.build35
-rw-r--r--contrib/DirectX-Headers/meson_options.txt7
-rw-r--r--contrib/DirectX-Headers/src/dxguids.cpp12
-rw-r--r--contrib/DirectX-Headers/test/CMakeLists.txt6
-rw-r--r--contrib/DirectX-Headers/test/meson.build9
-rw-r--r--contrib/DirectX-Headers/test/test.cpp32
39 files changed, 50526 insertions, 0 deletions
diff --git a/contrib/DirectX-Headers/CMakeLists.txt b/contrib/DirectX-Headers/CMakeLists.txt
new file mode 100644
index 0000000..9d3c51b
--- /dev/null
+++ b/contrib/DirectX-Headers/CMakeLists.txt
@@ -0,0 +1,87 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3cmake_minimum_required(VERSION 3.10.2)
4project(DirectX-Headers
5 LANGUAGES CXX
6 VERSION 1.4.9
7)
8
9set(CMAKE_CXX_STANDARD 14)
10set(CMAKE_CXX_STANDARD_REQUIRED ON)
11set(CMAKE_CXX_EXTENSIONS OFF)
12
13# It's useful to know if you are a top level project or not, if your project is
14# being consumed via add_subdirectory
15if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
16 set(IS_TOPLEVEL_PROJECT TRUE)
17else()
18 set(IS_TOPLEVEL_PROJECT FALSE)
19endif()
20
21# Use DXHEADERS_* prefix to avoid potential name conflicts in cmake-gui, and allow
22# grouping by prefix if more options are added
23#
24# Testing should only be enabled by default if we are top level. Otherwise clients can set it
25# either via cmake or cmake-gui
26option(DXHEADERS_BUILD_TEST "Build the test" ${IS_TOPLEVEL_PROJECT})
27option(DXHEADERS_INSTALL "Installation logic" ${IS_TOPLEVEL_PROJECT})
28
29include(GNUInstallDirs)
30
31# Enables consumers to add this library as a link target to automatically add
32# these include directories, regardless of whether this is referenced via subdirectory
33# or from an installed location
34add_library(DirectX-Headers INTERFACE)
35target_include_directories(DirectX-Headers SYSTEM INTERFACE
36 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
37 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
38)
39
40# For non-Windows targets, also add the WSL stubs to the include path
41if (NOT WIN32)
42 target_include_directories(DirectX-Headers SYSTEM INTERFACE
43 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/wsl/stubs>"
44 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsl/stubs>"
45 )
46endif()
47
48add_library(Microsoft::DirectX-Headers ALIAS DirectX-Headers)
49
50add_library(DirectX-Guids STATIC src/dxguids.cpp)
51target_link_libraries(DirectX-Guids PRIVATE DirectX-Headers)
52
53add_library(Microsoft::DirectX-Guids ALIAS DirectX-Guids)
54
55if (DXHEADERS_INSTALL)
56 # Install the targets
57 install(TARGETS DirectX-Headers DirectX-Guids
58 EXPORT DirectX-Headers-Targets
59 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
60 # Create the targets CMake file which contains the above definitions
61 install(EXPORT DirectX-Headers-Targets FILE directx-headers-targets.cmake
62 NAMESPACE Microsoft::
63 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
64
65 # Install the actual includes
66 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/"
67 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
68
69 # Create the CMake config files
70 include(CMakePackageConfigHelpers)
71 write_basic_package_version_file("directx-headers-config-version.cmake"
72 VERSION ${PROJECT_VERSION}
73 COMPATIBILITY SameMajorVersion)
74 configure_package_config_file(
75 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/directx-headers-config.cmake.in"
76 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
77 INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
78
79 # Install the CMake config files
80 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
81 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config-version.cmake"
82 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
83endif()
84
85if (DXHEADERS_BUILD_TEST)
86 add_subdirectory(test)
87endif()
diff --git a/contrib/DirectX-Headers/LICENSE b/contrib/DirectX-Headers/LICENSE
new file mode 100644
index 0000000..63447fd
--- /dev/null
+++ b/contrib/DirectX-Headers/LICENSE
@@ -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/DirectX-Headers/README.md b/contrib/DirectX-Headers/README.md
new file mode 100644
index 0000000..1e77be6
--- /dev/null
+++ b/contrib/DirectX-Headers/README.md
@@ -0,0 +1,59 @@
1# DirectX Headers
2
3This repository hosts the official Direct3D 12 headers. These headers are made available under the MIT license rather than the traditional Windows SDK license.
4
5Additionally, this repository hosts several helpers for using these headers.
6
7## Directory Structure
8
9* `/`: Build files are available here for quick integration. CMake is provided, and can be referenced either via `subdirectory()` or after installation to a system location. Meson is also available for inclusion as a subproject/wrap.
10* `/include/directx`: These files are the core headers for using D3D12, plus d3dx12.h, which is a helper and does not cross the boundaries of the D3D12 API.
11* `/include/wsl`: These files are provided as a shim to be able to include the D3D12 headers from a Linux build environment, without requiring the rest of the Windows SDK.
12* `/include/dxguids`: This header allows an application to use `uuidof<T>()` consistently between Windows and WSL, instead of `__uuidof()`.
13* `/src/dxguids.cpp`: This cpp file can be used as a replacement for linking against `dxguid.lib` on Windows, and as a convenient translation unit to define GUIDs without multiple definitions for WSL.
14* `/test`: Simple CMake/Meson projects for validating the headers can be included in a given environment
15
16## Use on Windows
17
18Note that these headers may conflict with the headers from the Windows SDK, depending on include ordering. These headers should be added to the include directory list before the SDK, and should be included before other graphics headers (e.g. `d3d11.h`) from the Windows SDK. Otherwise, the corresponding header from the Windows SDK may be included first, and will define the include guards which prevents these headers from being used.
19
20## Use on WSL
21
22Note: WSL support is not intended for general purpose application development. At this time, the only recommended usage is for frameworks wishing to provide hardware acceleration for a Linux graphics/compute API in a WSL2 virtualization environment.
23
24Note: WSL support is only available for 64-bit binaries.
25
26The headers in the `/include/wsl` directory provide alternative definitions to macros and typedefs normally found in the Windows SDK. For the most part, they should be straightforward, but there are a couple to call attention to:
27
28|Type|Reason|
29|---|---|
30|`LONG`/`ULONG`|On 64-bit Windows, a `long` is 4 bytes, but on Linux it is typically 8 bytes. The D3D12 ABI for WSL uses `long` and therefore these should be 8 bytes.|
31|`WCHAR`/`WCSTR`|On Windows, a `wchar_t` is 2 bytes, but on Linux it is typically 4 bytes. The D3D12 ABI for WSL uses the native 4-byte `wchar_t`, to enable applications and the runtime to use the system C library to perform string manipulation.|
32
33Additionally, APIs taking `HANDLE` (`void*`) for Win32 types should instead use `reinterpret_cast<HANDLE>(fd)` for an appropriate type of file descriptor. For `ID3D12Fence::SetEventOnCompletion` this should be an `eventfd`, and for shared resources will be an opaque fd.
34
35## Ways to consume
36
37There are various ways to consume the headers in this project:
38
39* Manually: Just copy the headers somewhere and point your project at them.
40* CMake subproject: Add this entire project as a subdirectory of your larger project, e.g. as a git submodule, and `add_subdirectory` into it. Use the resulting `DirectX-Headers` and/or `DirectX-Guids` targets as a link dependency
41* Installed CMake: After building/installing this project, it can be found through CMake's `find_package` functionality and will expose the same `DirectX-Headers` and `DirectX-Guids` targets.
42* FetchContent CMake (3.11+): Fetch this library using Git and easily add it to your project.
43* Meson subproject/wrap: Add this entire project as a subproject of your larger project, and use `subproject` or `dependency` to consume it.
44* Pkg-config: Use Meson to build this project, and the resulting installed package can be found via pkg-config.
45* vcpkg: A vcpkg port has [been added](https://github.com/microsoft/vcpkg/pull/15222).
46
47Contributions for new mechanisms are welcome.
48
49## Contributing
50
51This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
52
53When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
54
55This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
56
57## Trademarks
58
59This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies. \ No newline at end of file
diff --git a/contrib/DirectX-Headers/SECURITY.md b/contrib/DirectX-Headers/SECURITY.md
new file mode 100644
index 0000000..f7b8998
--- /dev/null
+++ b/contrib/DirectX-Headers/SECURITY.md
@@ -0,0 +1,41 @@
1<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
2
3## Security
4
5Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6
7If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
8
9## Reporting Security Issues
10
11**Please do not report security vulnerabilities through public GitHub issues.**
12
13Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
14
15If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
16
17You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
18
19Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20
21 * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 * Full paths of source file(s) related to the manifestation of the issue
23 * The location of the affected source code (tag/branch/commit or direct URL)
24 * Any special configuration required to reproduce the issue
25 * Step-by-step instructions to reproduce the issue
26 * Proof-of-concept or exploit code (if possible)
27 * Impact of the issue, including how an attacker might exploit the issue
28
29This information will help us triage your report more quickly.
30
31If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
32
33## Preferred Languages
34
35We prefer all communications to be in English.
36
37## Policy
38
39Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
40
41<!-- END MICROSOFT SECURITY.MD BLOCK --> \ No newline at end of file
diff --git a/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in b/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in
new file mode 100644
index 0000000..50c40bc
--- /dev/null
+++ b/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in
@@ -0,0 +1,4 @@
1@PACKAGE_INIT@
2
3include("${CMAKE_CURRENT_LIST_DIR}/directx-headers-targets.cmake")
4check_required_components("@PROJECT_NAME@") \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.h b/contrib/DirectX-Headers/include/directx/d3d12.h
new file mode 100644
index 0000000..0cac343
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.h
@@ -0,0 +1,23139 @@
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.0625 */
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 _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 __ID3D12DescriptorHeap_FWD_DEFINED__
140#define __ID3D12DescriptorHeap_FWD_DEFINED__
141typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
142
143#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12QueryHeap_FWD_DEFINED__
147#define __ID3D12QueryHeap_FWD_DEFINED__
148typedef interface ID3D12QueryHeap ID3D12QueryHeap;
149
150#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12CommandSignature_FWD_DEFINED__
154#define __ID3D12CommandSignature_FWD_DEFINED__
155typedef interface ID3D12CommandSignature ID3D12CommandSignature;
156
157#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandList_FWD_DEFINED__
161#define __ID3D12CommandList_FWD_DEFINED__
162typedef interface ID3D12CommandList ID3D12CommandList;
163
164#endif /* __ID3D12CommandList_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
168#define __ID3D12GraphicsCommandList_FWD_DEFINED__
169typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
170
171#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
177
178#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
184
185#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12CommandQueue_FWD_DEFINED__
189#define __ID3D12CommandQueue_FWD_DEFINED__
190typedef interface ID3D12CommandQueue ID3D12CommandQueue;
191
192#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12Device_FWD_DEFINED__
196#define __ID3D12Device_FWD_DEFINED__
197typedef interface ID3D12Device ID3D12Device;
198
199#endif /* __ID3D12Device_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
203#define __ID3D12PipelineLibrary_FWD_DEFINED__
204typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
205
206#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
210#define __ID3D12PipelineLibrary1_FWD_DEFINED__
211typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
212
213#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12Device1_FWD_DEFINED__
217#define __ID3D12Device1_FWD_DEFINED__
218typedef interface ID3D12Device1 ID3D12Device1;
219
220#endif /* __ID3D12Device1_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12Device2_FWD_DEFINED__
224#define __ID3D12Device2_FWD_DEFINED__
225typedef interface ID3D12Device2 ID3D12Device2;
226
227#endif /* __ID3D12Device2_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device3_FWD_DEFINED__
231#define __ID3D12Device3_FWD_DEFINED__
232typedef interface ID3D12Device3 ID3D12Device3;
233
234#endif /* __ID3D12Device3_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
238#define __ID3D12ProtectedSession_FWD_DEFINED__
239typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
240
241#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
245#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
246typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
247
248#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12Device4_FWD_DEFINED__
252#define __ID3D12Device4_FWD_DEFINED__
253typedef interface ID3D12Device4 ID3D12Device4;
254
255#endif /* __ID3D12Device4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
259#define __ID3D12LifetimeOwner_FWD_DEFINED__
260typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
261
262#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
266#define __ID3D12SwapChainAssistant_FWD_DEFINED__
267typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
268
269#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
273#define __ID3D12LifetimeTracker_FWD_DEFINED__
274typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
275
276#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12StateObject_FWD_DEFINED__
280#define __ID3D12StateObject_FWD_DEFINED__
281typedef interface ID3D12StateObject ID3D12StateObject;
282
283#endif /* __ID3D12StateObject_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
287#define __ID3D12StateObjectProperties_FWD_DEFINED__
288typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
289
290#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12Device5_FWD_DEFINED__
294#define __ID3D12Device5_FWD_DEFINED__
295typedef interface ID3D12Device5 ID3D12Device5;
296
297#endif /* __ID3D12Device5_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
301#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
302typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
303
304#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
308#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
309typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
310
311#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
315#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
316typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
317
318#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
322#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
323typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
324
325#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
329#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
330typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
331
332#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12Device6_FWD_DEFINED__
336#define __ID3D12Device6_FWD_DEFINED__
337typedef interface ID3D12Device6 ID3D12Device6;
338
339#endif /* __ID3D12Device6_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
343#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
344typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
345
346#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12Device7_FWD_DEFINED__
350#define __ID3D12Device7_FWD_DEFINED__
351typedef interface ID3D12Device7 ID3D12Device7;
352
353#endif /* __ID3D12Device7_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12Device8_FWD_DEFINED__
357#define __ID3D12Device8_FWD_DEFINED__
358typedef interface ID3D12Device8 ID3D12Device8;
359
360#endif /* __ID3D12Device8_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12Resource1_FWD_DEFINED__
364#define __ID3D12Resource1_FWD_DEFINED__
365typedef interface ID3D12Resource1 ID3D12Resource1;
366
367#endif /* __ID3D12Resource1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12Resource2_FWD_DEFINED__
371#define __ID3D12Resource2_FWD_DEFINED__
372typedef interface ID3D12Resource2 ID3D12Resource2;
373
374#endif /* __ID3D12Resource2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Heap1_FWD_DEFINED__
378#define __ID3D12Heap1_FWD_DEFINED__
379typedef interface ID3D12Heap1 ID3D12Heap1;
380
381#endif /* __ID3D12Heap1_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
385#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
386typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
387
388#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12MetaCommand_FWD_DEFINED__
392#define __ID3D12MetaCommand_FWD_DEFINED__
393typedef interface ID3D12MetaCommand ID3D12MetaCommand;
394
395#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
399#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
400typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
401
402#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
406#define __ID3D12ShaderCacheSession_FWD_DEFINED__
407typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
408
409#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Device9_FWD_DEFINED__
413#define __ID3D12Device9_FWD_DEFINED__
414typedef interface ID3D12Device9 ID3D12Device9;
415
416#endif /* __ID3D12Device9_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Tools_FWD_DEFINED__
420#define __ID3D12Tools_FWD_DEFINED__
421typedef interface ID3D12Tools ID3D12Tools;
422
423#endif /* __ID3D12Tools_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
427#define __ID3D12SDKConfiguration_FWD_DEFINED__
428typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
429
430#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
434#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
435typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
436
437#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
443
444#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
445
446
447/* header files for imported files */
448#include "OAIdl.h"
449#include "OCIdl.h"
450#include "dxgicommon.h"
451#include "dxgiformat.h"
452#include "d3dcommon.h"
453
454#ifdef __cplusplus
455extern "C"{
456#endif
457
458
459/* interface __MIDL_itf_d3d12_0000_0000 */
460/* [local] */
461
462#include <winapifamily.h>
463#pragma region App Family
464#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
465#ifndef _D3D12_CONSTANTS
466#define _D3D12_CONSTANTS
467#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
468
469#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
470
471#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
472
473#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
474
475#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
476
477#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
478
479#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
480
481#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
482
483#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
484
485#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
486
487#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
488
489#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
490
491#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
492
493#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
494
495#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
496
497#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
498
499#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
500
501#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
502
503#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
504
505#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
506
507#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
508
509#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
510
511#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
512
513#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
514
515#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
516
517#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
518
519#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
520
521#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
522
523#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
524
525#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
526
527#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
528
529#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
530
531#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
532
533#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
534
535#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
536
537#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
538
539#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
540
541#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
542
543#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
544
545#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
546
547#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
548
549#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
550
551#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
552
553#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
554
555#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
556
557#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
558
559#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
560
561#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
562
563#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
564
565#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
566
567#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
568
569#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
570
571#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
572
573#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
574
575#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
576
577#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
578
579#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
580
581#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
582
583#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
584
585#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
586
587#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
588
589#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
590
591#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
592
593#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
594
595#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
596
597#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
598
599#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
600
601#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
602
603#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
604
605#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
606
607#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
608
609#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
610
611#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
612
613#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
614
615#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
616
617#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
618
619#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
620
621#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
622
623#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
624
625#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
626
627#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
628
629#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
630
631#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
632
633#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
634
635#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
636
637#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
638
639#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
640
641#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
642
643#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
644
645#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
646
647#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
648
649#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
650
651#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
652
653#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
654
655#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
656
657#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
658
659#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
660
661#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
662
663#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
664
665#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
666
667#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
668
669#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
670
671#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
672#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
673#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
674#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
675#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
676#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
677
678#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
679#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
680
681#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
682#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
683
684#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
685
686#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
687
688#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
689
690#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
691
692#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
693
694#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
695
696#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
697
698#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
699#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
700
701#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
702
703#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
704
705#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
706
707#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
708
709#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
710#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
711#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
712
713#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
714
715#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
716
717#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
718
719#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
720
721#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
722
723#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
724
725#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
726
727#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
728
729#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
730
731#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
732
733#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
734
735#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
736
737#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
738
739#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
740
741#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
742
743#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
744
745#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
746
747#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
748
749#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
750
751#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
752
753#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
754
755#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
756
757#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
758
759#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
760
761#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
762
763#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
764
765#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
766
767#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
768
769#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
770
771#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
772#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
773#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
774#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
775#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
776#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
777#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
778#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
779#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
780#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
781#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
782#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
783#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
784#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
785
786#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
787
788#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
789
790#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
791
792#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
793
794#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
795
796#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
797
798#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
799
800#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
801
802#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
803
804#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
805
806#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
807
808#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
809
810#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
811
812#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
813
814#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
815
816#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
817
818#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
819
820#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
821
822#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
823
824#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
825
826#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
827
828#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
829
830#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
831
832#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
833
834#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
835
836#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
837
838#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
839
840#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
841
842#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
843
844#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
845
846#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
847
848#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
849
850#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
851
852#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
853
854#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
855
856#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
857
858#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
859
860#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
861
862#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
863
864#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
865
866#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
867
868#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
869
870#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
871
872#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
873
874#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
875#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
876#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
877
878#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
879
880#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
881
882#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
883
884#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
885
886#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
887
888#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
889
890#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
891
892#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
893
894#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
895
896#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
897
898#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
899
900#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
901
902#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
903
904#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
905
906#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
907
908#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
909
910#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
911
912#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
913
914#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
915
916#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
917
918#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
919
920#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
921
922#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
923
924#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
925
926#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
927
928#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
929
930#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
931
932#define D3D12_LINEAR_GAMMA ( 1.0f )
933#define D3D12_MAJOR_VERSION ( 12 )
934
935#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
936#define D3D12_MAX_DEPTH ( 1.0f )
937#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
938
939#define D3D12_MAX_MAXANISOTROPY ( 16 )
940
941#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
942
943#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
944#define D3D12_MAX_ROOT_COST ( 64 )
945
946#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
947
948#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
949
950#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
951
952#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
953
954#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
955
956#define D3D12_MINOR_VERSION ( 0 )
957
958#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
959#define D3D12_MIN_DEPTH ( 0.0f )
960#define D3D12_MIN_MAXANISOTROPY ( 0 )
961
962#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
963#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
964#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
965
966#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
967
968#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
969#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
970
971#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
972
973#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
974
975#define D3D12_PACKED_TILE ( 0xffffffff )
976
977#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
978
979#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
980
981#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
982
983#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
984
985#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
986
987#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
988
989#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
990
991#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
992
993#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
994
995#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
996
997#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
998
999#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1000
1001#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1002
1003#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1004
1005#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1006#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1007
1008#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1009
1010#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1011
1012#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1013
1014#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1015
1016#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1017
1018#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1019
1020#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1021
1022#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1023
1024#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1025#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1026
1027#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1028
1029#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1030
1031#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1032
1033#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1034
1035#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1036
1037#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1038
1039#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1040
1041#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1042
1043#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1044
1045#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1046
1047#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1048
1049#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1050
1051#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1052
1053#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1054
1055#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1056
1057#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1058
1059#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1060
1061#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1062
1063#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1064
1065#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1066
1067#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1068
1069#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1070
1071#define D3D12_REQ_MAXANISOTROPY ( 16 )
1072
1073#define D3D12_REQ_MIP_LEVELS ( 15 )
1074
1075#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1076
1077#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1078
1079#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1080
1081#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1082
1083#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1084#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1085
1086#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1087
1088#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1089
1090#define D3D12_REQ_SUBRESOURCES ( 30720 )
1091
1092#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1093
1094#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1095
1096#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1097
1098#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1099
1100#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1101
1102#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1103
1104#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1105
1106#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1107
1108#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1109
1110#define D3D12_SDK_VERSION ( 4 )
1111
1112#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1113
1114#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1115
1116#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1117
1118#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1119
1120#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1121
1122#define D3D12_SHADER_MAX_TYPES ( 65535 )
1123
1124#define D3D12_SHADER_MINOR_VERSION ( 1 )
1125
1126#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1127
1128#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1129
1130#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1131
1132#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1133
1134#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1135
1136#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1137
1138#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1139
1140#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1141
1142#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1143
1144#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1145
1146#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1147
1148#define D3D12_SO_STREAM_COUNT ( 4 )
1149
1150#define D3D12_SPEC_DATE_DAY ( 14 )
1151
1152#define D3D12_SPEC_DATE_MONTH ( 11 )
1153
1154#define D3D12_SPEC_DATE_YEAR ( 2014 )
1155
1156#define D3D12_SPEC_VERSION ( 1.16 )
1157#define D3D12_SRGB_GAMMA ( 2.2f )
1158#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1159#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1160#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1161#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1162#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1163#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1164#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1165
1166#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1167
1168#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1169
1170#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1171
1172#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1173
1174#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1175
1176#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1177
1178#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1179
1180#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1181
1182#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1183
1184#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1185
1186#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1187
1188#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1189
1190#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1191
1192#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1193
1194#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1195
1196#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1197
1198#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1199
1200#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1201
1202#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1203
1204#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1205
1206#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1207
1208#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1209
1210#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1211
1212#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1213
1214#define D3D12_UAV_SLOT_COUNT ( 64 )
1215
1216#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1217
1218#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1219
1220#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1221
1222#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1223
1224#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1225
1226#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1227
1228#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1229
1230#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1231
1232#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1233
1234#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1235
1236#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1237
1238#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1239
1240#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1241
1242#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1243
1244#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1245
1246#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1247
1248#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1249
1250#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1251
1252#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1253
1254#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1255
1256#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1257
1258#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1259
1260#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1261
1262#endif
1263
1264typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1265
1266typedef
1267enum D3D12_COMMAND_LIST_TYPE
1268 {
1269 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1270 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1271 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1272 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1273 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1274 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1275 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6
1276 } D3D12_COMMAND_LIST_TYPE;
1277
1278typedef
1279enum D3D12_COMMAND_QUEUE_FLAGS
1280 {
1281 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1282 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
1283 } D3D12_COMMAND_QUEUE_FLAGS;
1284
1285DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );
1286typedef
1287enum D3D12_COMMAND_QUEUE_PRIORITY
1288 {
1289 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1290 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1291 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1292 } D3D12_COMMAND_QUEUE_PRIORITY;
1293
1294typedef struct D3D12_COMMAND_QUEUE_DESC
1295 {
1296 D3D12_COMMAND_LIST_TYPE Type;
1297 INT Priority;
1298 D3D12_COMMAND_QUEUE_FLAGS Flags;
1299 UINT NodeMask;
1300 } D3D12_COMMAND_QUEUE_DESC;
1301
1302typedef
1303enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1304 {
1305 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1306 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1307 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1308 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1309 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1310 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1311
1312typedef
1313enum D3D12_INPUT_CLASSIFICATION
1314 {
1315 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1316 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1317 } D3D12_INPUT_CLASSIFICATION;
1318
1319typedef struct D3D12_INPUT_ELEMENT_DESC
1320 {
1321 LPCSTR SemanticName;
1322 UINT SemanticIndex;
1323 DXGI_FORMAT Format;
1324 UINT InputSlot;
1325 UINT AlignedByteOffset;
1326 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1327 UINT InstanceDataStepRate;
1328 } D3D12_INPUT_ELEMENT_DESC;
1329
1330typedef
1331enum D3D12_FILL_MODE
1332 {
1333 D3D12_FILL_MODE_WIREFRAME = 2,
1334 D3D12_FILL_MODE_SOLID = 3
1335 } D3D12_FILL_MODE;
1336
1337typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1338
1339typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1340
1341typedef
1342enum D3D12_CULL_MODE
1343 {
1344 D3D12_CULL_MODE_NONE = 1,
1345 D3D12_CULL_MODE_FRONT = 2,
1346 D3D12_CULL_MODE_BACK = 3
1347 } D3D12_CULL_MODE;
1348
1349typedef struct D3D12_SO_DECLARATION_ENTRY
1350 {
1351 UINT Stream;
1352 LPCSTR SemanticName;
1353 UINT SemanticIndex;
1354 BYTE StartComponent;
1355 BYTE ComponentCount;
1356 BYTE OutputSlot;
1357 } D3D12_SO_DECLARATION_ENTRY;
1358
1359typedef struct D3D12_VIEWPORT
1360 {
1361 FLOAT TopLeftX;
1362 FLOAT TopLeftY;
1363 FLOAT Width;
1364 FLOAT Height;
1365 FLOAT MinDepth;
1366 FLOAT MaxDepth;
1367 } D3D12_VIEWPORT;
1368
1369typedef RECT D3D12_RECT;
1370
1371typedef struct D3D12_BOX
1372 {
1373 UINT left;
1374 UINT top;
1375 UINT front;
1376 UINT right;
1377 UINT bottom;
1378 UINT back;
1379 } D3D12_BOX;
1380
1381typedef
1382enum D3D12_COMPARISON_FUNC
1383 {
1384 D3D12_COMPARISON_FUNC_NEVER = 1,
1385 D3D12_COMPARISON_FUNC_LESS = 2,
1386 D3D12_COMPARISON_FUNC_EQUAL = 3,
1387 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1388 D3D12_COMPARISON_FUNC_GREATER = 5,
1389 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1390 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1391 D3D12_COMPARISON_FUNC_ALWAYS = 8
1392 } D3D12_COMPARISON_FUNC;
1393
1394typedef
1395enum D3D12_DEPTH_WRITE_MASK
1396 {
1397 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1398 D3D12_DEPTH_WRITE_MASK_ALL = 1
1399 } D3D12_DEPTH_WRITE_MASK;
1400
1401typedef
1402enum D3D12_STENCIL_OP
1403 {
1404 D3D12_STENCIL_OP_KEEP = 1,
1405 D3D12_STENCIL_OP_ZERO = 2,
1406 D3D12_STENCIL_OP_REPLACE = 3,
1407 D3D12_STENCIL_OP_INCR_SAT = 4,
1408 D3D12_STENCIL_OP_DECR_SAT = 5,
1409 D3D12_STENCIL_OP_INVERT = 6,
1410 D3D12_STENCIL_OP_INCR = 7,
1411 D3D12_STENCIL_OP_DECR = 8
1412 } D3D12_STENCIL_OP;
1413
1414typedef struct D3D12_DEPTH_STENCILOP_DESC
1415 {
1416 D3D12_STENCIL_OP StencilFailOp;
1417 D3D12_STENCIL_OP StencilDepthFailOp;
1418 D3D12_STENCIL_OP StencilPassOp;
1419 D3D12_COMPARISON_FUNC StencilFunc;
1420 } D3D12_DEPTH_STENCILOP_DESC;
1421
1422typedef struct D3D12_DEPTH_STENCIL_DESC
1423 {
1424 BOOL DepthEnable;
1425 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1426 D3D12_COMPARISON_FUNC DepthFunc;
1427 BOOL StencilEnable;
1428 UINT8 StencilReadMask;
1429 UINT8 StencilWriteMask;
1430 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1431 D3D12_DEPTH_STENCILOP_DESC BackFace;
1432 } D3D12_DEPTH_STENCIL_DESC;
1433
1434typedef struct D3D12_DEPTH_STENCIL_DESC1
1435 {
1436 BOOL DepthEnable;
1437 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1438 D3D12_COMPARISON_FUNC DepthFunc;
1439 BOOL StencilEnable;
1440 UINT8 StencilReadMask;
1441 UINT8 StencilWriteMask;
1442 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1443 D3D12_DEPTH_STENCILOP_DESC BackFace;
1444 BOOL DepthBoundsTestEnable;
1445 } D3D12_DEPTH_STENCIL_DESC1;
1446
1447typedef
1448enum D3D12_BLEND
1449 {
1450 D3D12_BLEND_ZERO = 1,
1451 D3D12_BLEND_ONE = 2,
1452 D3D12_BLEND_SRC_COLOR = 3,
1453 D3D12_BLEND_INV_SRC_COLOR = 4,
1454 D3D12_BLEND_SRC_ALPHA = 5,
1455 D3D12_BLEND_INV_SRC_ALPHA = 6,
1456 D3D12_BLEND_DEST_ALPHA = 7,
1457 D3D12_BLEND_INV_DEST_ALPHA = 8,
1458 D3D12_BLEND_DEST_COLOR = 9,
1459 D3D12_BLEND_INV_DEST_COLOR = 10,
1460 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1461 D3D12_BLEND_BLEND_FACTOR = 14,
1462 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1463 D3D12_BLEND_SRC1_COLOR = 16,
1464 D3D12_BLEND_INV_SRC1_COLOR = 17,
1465 D3D12_BLEND_SRC1_ALPHA = 18,
1466 D3D12_BLEND_INV_SRC1_ALPHA = 19
1467 } D3D12_BLEND;
1468
1469typedef
1470enum D3D12_BLEND_OP
1471 {
1472 D3D12_BLEND_OP_ADD = 1,
1473 D3D12_BLEND_OP_SUBTRACT = 2,
1474 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1475 D3D12_BLEND_OP_MIN = 4,
1476 D3D12_BLEND_OP_MAX = 5
1477 } D3D12_BLEND_OP;
1478
1479typedef
1480enum D3D12_COLOR_WRITE_ENABLE
1481 {
1482 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1483 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1484 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1485 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1486 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 )
1487 } D3D12_COLOR_WRITE_ENABLE;
1488
1489typedef
1490enum D3D12_LOGIC_OP
1491 {
1492 D3D12_LOGIC_OP_CLEAR = 0,
1493 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1494 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1495 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1496 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1497 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1498 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1499 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1500 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1501 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1502 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1503 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1504 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1505 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1506 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1507 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1508 } D3D12_LOGIC_OP;
1509
1510typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1511 {
1512 BOOL BlendEnable;
1513 BOOL LogicOpEnable;
1514 D3D12_BLEND SrcBlend;
1515 D3D12_BLEND DestBlend;
1516 D3D12_BLEND_OP BlendOp;
1517 D3D12_BLEND SrcBlendAlpha;
1518 D3D12_BLEND DestBlendAlpha;
1519 D3D12_BLEND_OP BlendOpAlpha;
1520 D3D12_LOGIC_OP LogicOp;
1521 UINT8 RenderTargetWriteMask;
1522 } D3D12_RENDER_TARGET_BLEND_DESC;
1523
1524typedef struct D3D12_BLEND_DESC
1525 {
1526 BOOL AlphaToCoverageEnable;
1527 BOOL IndependentBlendEnable;
1528 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1529 } D3D12_BLEND_DESC;
1530
1531/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1532 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1533typedef
1534enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1535 {
1536 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1537 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1538 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1539
1540typedef struct D3D12_RASTERIZER_DESC
1541 {
1542 D3D12_FILL_MODE FillMode;
1543 D3D12_CULL_MODE CullMode;
1544 BOOL FrontCounterClockwise;
1545 INT DepthBias;
1546 FLOAT DepthBiasClamp;
1547 FLOAT SlopeScaledDepthBias;
1548 BOOL DepthClipEnable;
1549 BOOL MultisampleEnable;
1550 BOOL AntialiasedLineEnable;
1551 UINT ForcedSampleCount;
1552 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1553 } D3D12_RASTERIZER_DESC;
1554
1555
1556
1557extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1558extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1559
1560#ifndef __ID3D12Object_INTERFACE_DEFINED__
1561#define __ID3D12Object_INTERFACE_DEFINED__
1562
1563/* interface ID3D12Object */
1564/* [unique][local][object][uuid] */
1565
1566
1567EXTERN_C const IID IID_ID3D12Object;
1568
1569#if defined(__cplusplus) && !defined(CINTERFACE)
1570
1571 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1572 ID3D12Object : public IUnknown
1573 {
1574 public:
1575 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1576 _In_ REFGUID guid,
1577 _Inout_ UINT *pDataSize,
1578 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1579
1580 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1581 _In_ REFGUID guid,
1582 _In_ UINT DataSize,
1583 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1584
1585 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1586 _In_ REFGUID guid,
1587 _In_opt_ const IUnknown *pData) = 0;
1588
1589 virtual HRESULT STDMETHODCALLTYPE SetName(
1590 _In_z_ LPCWSTR Name) = 0;
1591
1592 };
1593
1594
1595#else /* C style interface */
1596
1597 typedef struct ID3D12ObjectVtbl
1598 {
1599 BEGIN_INTERFACE
1600
1601 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1602 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1603 ID3D12Object * This,
1604 REFIID riid,
1605 _COM_Outptr_ void **ppvObject);
1606
1607 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1608 ULONG ( STDMETHODCALLTYPE *AddRef )(
1609 ID3D12Object * This);
1610
1611 DECLSPEC_XFGVIRT(IUnknown, Release)
1612 ULONG ( STDMETHODCALLTYPE *Release )(
1613 ID3D12Object * This);
1614
1615 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1616 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1617 ID3D12Object * This,
1618 _In_ REFGUID guid,
1619 _Inout_ UINT *pDataSize,
1620 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1621
1622 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1623 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1624 ID3D12Object * This,
1625 _In_ REFGUID guid,
1626 _In_ UINT DataSize,
1627 _In_reads_bytes_opt_( DataSize ) const void *pData);
1628
1629 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1630 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1631 ID3D12Object * This,
1632 _In_ REFGUID guid,
1633 _In_opt_ const IUnknown *pData);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1636 HRESULT ( STDMETHODCALLTYPE *SetName )(
1637 ID3D12Object * This,
1638 _In_z_ LPCWSTR Name);
1639
1640 END_INTERFACE
1641 } ID3D12ObjectVtbl;
1642
1643 interface ID3D12Object
1644 {
1645 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1646 };
1647
1648
1649
1650#ifdef COBJMACROS
1651
1652
1653#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1655
1656#define ID3D12Object_AddRef(This) \
1657 ( (This)->lpVtbl -> AddRef(This) )
1658
1659#define ID3D12Object_Release(This) \
1660 ( (This)->lpVtbl -> Release(This) )
1661
1662
1663#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1664 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1665
1666#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1667 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1668
1669#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1670 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1671
1672#define ID3D12Object_SetName(This,Name) \
1673 ( (This)->lpVtbl -> SetName(This,Name) )
1674
1675#endif /* COBJMACROS */
1676
1677
1678#endif /* C style interface */
1679
1680
1681
1682
1683#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1684
1685
1686#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1687#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1688
1689/* interface ID3D12DeviceChild */
1690/* [unique][local][object][uuid] */
1691
1692
1693EXTERN_C const IID IID_ID3D12DeviceChild;
1694
1695#if defined(__cplusplus) && !defined(CINTERFACE)
1696
1697 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
1698 ID3D12DeviceChild : public ID3D12Object
1699 {
1700 public:
1701 virtual HRESULT STDMETHODCALLTYPE GetDevice(
1702 REFIID riid,
1703 _COM_Outptr_opt_ void **ppvDevice) = 0;
1704
1705 };
1706
1707
1708#else /* C style interface */
1709
1710 typedef struct ID3D12DeviceChildVtbl
1711 {
1712 BEGIN_INTERFACE
1713
1714 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1715 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1716 ID3D12DeviceChild * This,
1717 REFIID riid,
1718 _COM_Outptr_ void **ppvObject);
1719
1720 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1721 ULONG ( STDMETHODCALLTYPE *AddRef )(
1722 ID3D12DeviceChild * This);
1723
1724 DECLSPEC_XFGVIRT(IUnknown, Release)
1725 ULONG ( STDMETHODCALLTYPE *Release )(
1726 ID3D12DeviceChild * This);
1727
1728 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1729 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1730 ID3D12DeviceChild * This,
1731 _In_ REFGUID guid,
1732 _Inout_ UINT *pDataSize,
1733 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1734
1735 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1736 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1737 ID3D12DeviceChild * This,
1738 _In_ REFGUID guid,
1739 _In_ UINT DataSize,
1740 _In_reads_bytes_opt_( DataSize ) const void *pData);
1741
1742 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1743 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1744 ID3D12DeviceChild * This,
1745 _In_ REFGUID guid,
1746 _In_opt_ const IUnknown *pData);
1747
1748 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1749 HRESULT ( STDMETHODCALLTYPE *SetName )(
1750 ID3D12DeviceChild * This,
1751 _In_z_ LPCWSTR Name);
1752
1753 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1754 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1755 ID3D12DeviceChild * This,
1756 REFIID riid,
1757 _COM_Outptr_opt_ void **ppvDevice);
1758
1759 END_INTERFACE
1760 } ID3D12DeviceChildVtbl;
1761
1762 interface ID3D12DeviceChild
1763 {
1764 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
1765 };
1766
1767
1768
1769#ifdef COBJMACROS
1770
1771
1772#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
1773 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1774
1775#define ID3D12DeviceChild_AddRef(This) \
1776 ( (This)->lpVtbl -> AddRef(This) )
1777
1778#define ID3D12DeviceChild_Release(This) \
1779 ( (This)->lpVtbl -> Release(This) )
1780
1781
1782#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
1783 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1784
1785#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
1786 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1787
1788#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
1789 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1790
1791#define ID3D12DeviceChild_SetName(This,Name) \
1792 ( (This)->lpVtbl -> SetName(This,Name) )
1793
1794
1795#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
1796 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1797
1798#endif /* COBJMACROS */
1799
1800
1801#endif /* C style interface */
1802
1803
1804
1805
1806#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
1807
1808
1809#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
1810#define __ID3D12RootSignature_INTERFACE_DEFINED__
1811
1812/* interface ID3D12RootSignature */
1813/* [unique][local][object][uuid] */
1814
1815
1816EXTERN_C const IID IID_ID3D12RootSignature;
1817
1818#if defined(__cplusplus) && !defined(CINTERFACE)
1819
1820 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
1821 ID3D12RootSignature : public ID3D12DeviceChild
1822 {
1823 public:
1824 };
1825
1826
1827#else /* C style interface */
1828
1829 typedef struct ID3D12RootSignatureVtbl
1830 {
1831 BEGIN_INTERFACE
1832
1833 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1834 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1835 ID3D12RootSignature * This,
1836 REFIID riid,
1837 _COM_Outptr_ void **ppvObject);
1838
1839 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1840 ULONG ( STDMETHODCALLTYPE *AddRef )(
1841 ID3D12RootSignature * This);
1842
1843 DECLSPEC_XFGVIRT(IUnknown, Release)
1844 ULONG ( STDMETHODCALLTYPE *Release )(
1845 ID3D12RootSignature * This);
1846
1847 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1848 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1849 ID3D12RootSignature * This,
1850 _In_ REFGUID guid,
1851 _Inout_ UINT *pDataSize,
1852 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1853
1854 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1855 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1856 ID3D12RootSignature * This,
1857 _In_ REFGUID guid,
1858 _In_ UINT DataSize,
1859 _In_reads_bytes_opt_( DataSize ) const void *pData);
1860
1861 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1862 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1863 ID3D12RootSignature * This,
1864 _In_ REFGUID guid,
1865 _In_opt_ const IUnknown *pData);
1866
1867 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1868 HRESULT ( STDMETHODCALLTYPE *SetName )(
1869 ID3D12RootSignature * This,
1870 _In_z_ LPCWSTR Name);
1871
1872 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1873 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1874 ID3D12RootSignature * This,
1875 REFIID riid,
1876 _COM_Outptr_opt_ void **ppvDevice);
1877
1878 END_INTERFACE
1879 } ID3D12RootSignatureVtbl;
1880
1881 interface ID3D12RootSignature
1882 {
1883 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
1884 };
1885
1886
1887
1888#ifdef COBJMACROS
1889
1890
1891#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
1892 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1893
1894#define ID3D12RootSignature_AddRef(This) \
1895 ( (This)->lpVtbl -> AddRef(This) )
1896
1897#define ID3D12RootSignature_Release(This) \
1898 ( (This)->lpVtbl -> Release(This) )
1899
1900
1901#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
1902 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1903
1904#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
1905 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1906
1907#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
1908 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1909
1910#define ID3D12RootSignature_SetName(This,Name) \
1911 ( (This)->lpVtbl -> SetName(This,Name) )
1912
1913
1914#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
1915 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1916
1917
1918#endif /* COBJMACROS */
1919
1920
1921#endif /* C style interface */
1922
1923
1924
1925
1926#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
1927
1928
1929/* interface __MIDL_itf_d3d12_0000_0001 */
1930/* [local] */
1931
1932typedef struct D3D12_SHADER_BYTECODE
1933 {
1934 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
1935 SIZE_T BytecodeLength;
1936 } D3D12_SHADER_BYTECODE;
1937
1938typedef struct D3D12_STREAM_OUTPUT_DESC
1939 {
1940 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
1941 UINT NumEntries;
1942 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
1943 UINT NumStrides;
1944 UINT RasterizedStream;
1945 } D3D12_STREAM_OUTPUT_DESC;
1946
1947typedef struct D3D12_INPUT_LAYOUT_DESC
1948 {
1949 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
1950 UINT NumElements;
1951 } D3D12_INPUT_LAYOUT_DESC;
1952
1953typedef
1954enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1955 {
1956 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
1957 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
1958 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
1959 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
1960
1961typedef struct D3D12_CACHED_PIPELINE_STATE
1962 {
1963 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
1964 SIZE_T CachedBlobSizeInBytes;
1965 } D3D12_CACHED_PIPELINE_STATE;
1966
1967typedef
1968enum D3D12_PIPELINE_STATE_FLAGS
1969 {
1970 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
1971 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1
1972 } D3D12_PIPELINE_STATE_FLAGS;
1973
1974DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );
1975typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
1976 {
1977 ID3D12RootSignature *pRootSignature;
1978 D3D12_SHADER_BYTECODE VS;
1979 D3D12_SHADER_BYTECODE PS;
1980 D3D12_SHADER_BYTECODE DS;
1981 D3D12_SHADER_BYTECODE HS;
1982 D3D12_SHADER_BYTECODE GS;
1983 D3D12_STREAM_OUTPUT_DESC StreamOutput;
1984 D3D12_BLEND_DESC BlendState;
1985 UINT SampleMask;
1986 D3D12_RASTERIZER_DESC RasterizerState;
1987 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
1988 D3D12_INPUT_LAYOUT_DESC InputLayout;
1989 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
1990 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
1991 UINT NumRenderTargets;
1992 DXGI_FORMAT RTVFormats[ 8 ];
1993 DXGI_FORMAT DSVFormat;
1994 DXGI_SAMPLE_DESC SampleDesc;
1995 UINT NodeMask;
1996 D3D12_CACHED_PIPELINE_STATE CachedPSO;
1997 D3D12_PIPELINE_STATE_FLAGS Flags;
1998 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
1999
2000typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2001 {
2002 ID3D12RootSignature *pRootSignature;
2003 D3D12_SHADER_BYTECODE CS;
2004 UINT NodeMask;
2005 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2006 D3D12_PIPELINE_STATE_FLAGS Flags;
2007 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2008
2009struct D3D12_RT_FORMAT_ARRAY
2010 {
2011 DXGI_FORMAT RTFormats[ 8 ];
2012 UINT NumRenderTargets;
2013 } ;
2014typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2015 {
2016 _In_ SIZE_T SizeInBytes;
2017 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2018 } D3D12_PIPELINE_STATE_STREAM_DESC;
2019
2020typedef
2021enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2022 {
2023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2028 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2029 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2030 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2031 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2032 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2033 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2034 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2035 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2036 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2037 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2038 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2039 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2040 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2041 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2042 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2043 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2044 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2045 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2046 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2047 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2048 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS + 1 )
2049 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2050
2051typedef
2052enum D3D12_FEATURE
2053 {
2054 D3D12_FEATURE_D3D12_OPTIONS = 0,
2055 D3D12_FEATURE_ARCHITECTURE = 1,
2056 D3D12_FEATURE_FEATURE_LEVELS = 2,
2057 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2058 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2059 D3D12_FEATURE_FORMAT_INFO = 5,
2060 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2061 D3D12_FEATURE_SHADER_MODEL = 7,
2062 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2063 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2064 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2065 D3D12_FEATURE_ARCHITECTURE1 = 16,
2066 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2067 D3D12_FEATURE_SHADER_CACHE = 19,
2068 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2069 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2070 D3D12_FEATURE_EXISTING_HEAPS = 22,
2071 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2072 D3D12_FEATURE_SERIALIZATION = 24,
2073 D3D12_FEATURE_CROSS_NODE = 25,
2074 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2075 D3D12_FEATURE_DISPLAYABLE = 28,
2076 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2077 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2078 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2079 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2080 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2081 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2082 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2083 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2084 D3D12_FEATURE_D3D12_OPTIONS11 = 40
2085 } D3D12_FEATURE;
2086
2087typedef
2088enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2089 {
2090 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2091 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2092 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2093 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2094
2095DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );
2096typedef
2097enum D3D12_TILED_RESOURCES_TIER
2098 {
2099 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2100 D3D12_TILED_RESOURCES_TIER_1 = 1,
2101 D3D12_TILED_RESOURCES_TIER_2 = 2,
2102 D3D12_TILED_RESOURCES_TIER_3 = 3,
2103 D3D12_TILED_RESOURCES_TIER_4 = 4
2104 } D3D12_TILED_RESOURCES_TIER;
2105
2106typedef
2107enum D3D12_RESOURCE_BINDING_TIER
2108 {
2109 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2110 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2111 D3D12_RESOURCE_BINDING_TIER_3 = 3
2112 } D3D12_RESOURCE_BINDING_TIER;
2113
2114typedef
2115enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2116 {
2117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2118 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2119 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2120 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2121 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2122
2123typedef
2124enum D3D12_FORMAT_SUPPORT1
2125 {
2126 D3D12_FORMAT_SUPPORT1_NONE = 0,
2127 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2128 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2129 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2130 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2131 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2132 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2133 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2134 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2135 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2136 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2137 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2138 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2139 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2140 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2141 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2142 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2143 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2144 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2145 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2146 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2147 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2148 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2149 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2150 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2151 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2152 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2153 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2154 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2155 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2156 } D3D12_FORMAT_SUPPORT1;
2157
2158DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );
2159typedef
2160enum D3D12_FORMAT_SUPPORT2
2161 {
2162 D3D12_FORMAT_SUPPORT2_NONE = 0,
2163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2165 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2166 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2167 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2168 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2169 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2170 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2171 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2172 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2173 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2174 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000
2175 } D3D12_FORMAT_SUPPORT2;
2176
2177DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );
2178typedef
2179enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2180 {
2181 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2182 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2183 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2184
2185DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );
2186typedef
2187enum D3D12_CROSS_NODE_SHARING_TIER
2188 {
2189 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2190 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2191 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2192 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2193 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2194 } D3D12_CROSS_NODE_SHARING_TIER;
2195
2196typedef
2197enum D3D12_RESOURCE_HEAP_TIER
2198 {
2199 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2200 D3D12_RESOURCE_HEAP_TIER_2 = 2
2201 } D3D12_RESOURCE_HEAP_TIER;
2202
2203typedef
2204enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2205 {
2206 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2207 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2208 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2209 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2210
2211typedef
2212enum D3D12_VIEW_INSTANCING_TIER
2213 {
2214 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2215 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2216 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2217 D3D12_VIEW_INSTANCING_TIER_3 = 3
2218 } D3D12_VIEW_INSTANCING_TIER;
2219
2220typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2221 {
2222 _Out_ BOOL DoublePrecisionFloatShaderOps;
2223 _Out_ BOOL OutputMergerLogicOp;
2224 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2225 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2226 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2227 _Out_ BOOL PSSpecifiedStencilRefSupported;
2228 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2229 _Out_ BOOL ROVsSupported;
2230 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2231 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2232 _Out_ BOOL StandardSwizzle64KBSupported;
2233 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2234 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2235 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2236 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2237 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2238
2239typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2240 {
2241 _Out_ BOOL WaveOps;
2242 _Out_ UINT WaveLaneCountMin;
2243 _Out_ UINT WaveLaneCountMax;
2244 _Out_ UINT TotalLaneCount;
2245 _Out_ BOOL ExpandedComputeResourceStates;
2246 _Out_ BOOL Int64ShaderOps;
2247 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2248
2249typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2250 {
2251 _Out_ BOOL DepthBoundsTestSupported;
2252 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2253 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2254
2255typedef
2256enum D3D_ROOT_SIGNATURE_VERSION
2257 {
2258 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2259 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2260 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2
2261 } D3D_ROOT_SIGNATURE_VERSION;
2262
2263typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2264 {
2265 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2266 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2267
2268typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2269 {
2270 _In_ UINT NodeIndex;
2271 _Out_ BOOL TileBasedRenderer;
2272 _Out_ BOOL UMA;
2273 _Out_ BOOL CacheCoherentUMA;
2274 } D3D12_FEATURE_DATA_ARCHITECTURE;
2275
2276typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2277 {
2278 _In_ UINT NodeIndex;
2279 _Out_ BOOL TileBasedRenderer;
2280 _Out_ BOOL UMA;
2281 _Out_ BOOL CacheCoherentUMA;
2282 _Out_ BOOL IsolatedMMU;
2283 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2284
2285typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2286 {
2287 _In_ UINT NumFeatureLevels;
2288 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2289 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2290 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2291
2292typedef
2293enum D3D_SHADER_MODEL
2294 {
2295 D3D_SHADER_MODEL_5_1 = 0x51,
2296 D3D_SHADER_MODEL_6_0 = 0x60,
2297 D3D_SHADER_MODEL_6_1 = 0x61,
2298 D3D_SHADER_MODEL_6_2 = 0x62,
2299 D3D_SHADER_MODEL_6_3 = 0x63,
2300 D3D_SHADER_MODEL_6_4 = 0x64,
2301 D3D_SHADER_MODEL_6_5 = 0x65,
2302 D3D_SHADER_MODEL_6_6 = 0x66,
2303 D3D_SHADER_MODEL_6_7 = 0x67
2304 } D3D_SHADER_MODEL;
2305
2306typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2307 {
2308 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2309 } D3D12_FEATURE_DATA_SHADER_MODEL;
2310
2311typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2312 {
2313 _In_ DXGI_FORMAT Format;
2314 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2315 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2316 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2317
2318typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2319 {
2320 _In_ DXGI_FORMAT Format;
2321 _In_ UINT SampleCount;
2322 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2323 _Out_ UINT NumQualityLevels;
2324 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2325
2326typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2327 {
2328 DXGI_FORMAT Format;
2329 UINT8 PlaneCount;
2330 } D3D12_FEATURE_DATA_FORMAT_INFO;
2331
2332typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2333 {
2334 UINT MaxGPUVirtualAddressBitsPerResource;
2335 UINT MaxGPUVirtualAddressBitsPerProcess;
2336 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2337
2338typedef
2339enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2340 {
2341 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2342 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2343 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2344 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2345 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2346 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2347 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2348 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2349 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2350
2351DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );
2352typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2353 {
2354 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2355 } D3D12_FEATURE_DATA_SHADER_CACHE;
2356
2357typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2358 {
2359 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2360 _In_ UINT Priority;
2361 _Out_ BOOL PriorityForTypeIsSupported;
2362 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2363
2364typedef
2365enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2366 {
2367 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2368 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2369 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2370 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2371 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2372 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2373 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2374 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2375 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2376
2377DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );
2378typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2379 {
2380 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2381 _Out_ BOOL CastingFullyTypedFormatSupported;
2382 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2383 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2384 _Out_ BOOL BarycentricsSupported;
2385 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2386
2387typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2388 {
2389 _Out_ BOOL Supported;
2390 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2391
2392typedef
2393enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2394 {
2395 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2396 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2397 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 ) ,
2398 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 + 1 )
2399 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2400
2401typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2402 {
2403 _Out_ BOOL DisplayableTexture;
2404 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2405 } D3D12_FEATURE_DATA_DISPLAYABLE;
2406
2407typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2408 {
2409 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2410 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2411 _Out_ BOOL Native16BitShaderOpsSupported;
2412 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2413
2414typedef
2415enum D3D12_HEAP_SERIALIZATION_TIER
2416 {
2417 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2418 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2419 } D3D12_HEAP_SERIALIZATION_TIER;
2420
2421typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2422 {
2423 _In_ UINT NodeIndex;
2424 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2425 } D3D12_FEATURE_DATA_SERIALIZATION;
2426
2427typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2428 {
2429 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2430 BOOL AtomicShaderInstructions;
2431 } D3D12_FEATURE_DATA_CROSS_NODE;
2432
2433typedef
2434enum D3D12_RENDER_PASS_TIER
2435 {
2436 D3D12_RENDER_PASS_TIER_0 = 0,
2437 D3D12_RENDER_PASS_TIER_1 = 1,
2438 D3D12_RENDER_PASS_TIER_2 = 2
2439 } D3D12_RENDER_PASS_TIER;
2440
2441typedef
2442enum D3D12_RAYTRACING_TIER
2443 {
2444 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2445 D3D12_RAYTRACING_TIER_1_0 = 10,
2446 D3D12_RAYTRACING_TIER_1_1 = 11
2447 } D3D12_RAYTRACING_TIER;
2448
2449typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2450 {
2451 _Out_ BOOL SRVOnlyTiledResourceTier3;
2452 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2453 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2454 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2455
2456typedef
2457enum D3D12_VARIABLE_SHADING_RATE_TIER
2458 {
2459 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2460 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2461 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2462 } D3D12_VARIABLE_SHADING_RATE_TIER;
2463
2464typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2465 {
2466 _Out_ BOOL AdditionalShadingRatesSupported;
2467 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2468 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2469 _Out_ UINT ShadingRateImageTileSize;
2470 _Out_ BOOL BackgroundProcessingSupported;
2471 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2472
2473typedef
2474enum D3D12_MESH_SHADER_TIER
2475 {
2476 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2477 D3D12_MESH_SHADER_TIER_1 = 10
2478 } D3D12_MESH_SHADER_TIER;
2479
2480typedef
2481enum D3D12_SAMPLER_FEEDBACK_TIER
2482 {
2483 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2484 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2485 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2486 } D3D12_SAMPLER_FEEDBACK_TIER;
2487
2488typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2489 {
2490 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2491 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2492 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2493
2494typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2495 {
2496 _In_ GUID CommandId;
2497 _In_ UINT NodeMask;
2498 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2499 _In_ SIZE_T QueryInputDataSizeInBytes;
2500 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2501 _In_ SIZE_T QueryOutputDataSizeInBytes;
2502 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2503
2504typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2505 {
2506 _Out_ BOOL UnalignedBlockTexturesSupported;
2507 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2508
2509typedef
2510enum D3D12_WAVE_MMA_TIER
2511 {
2512 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2513 D3D12_WAVE_MMA_TIER_1_0 = 10
2514 } D3D12_WAVE_MMA_TIER;
2515
2516typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2517 {
2518 _Out_ BOOL MeshShaderPipelineStatsSupported;
2519 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2520 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2521 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2522 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2523 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2524 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2525
2526typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2527 {
2528 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2529 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2530 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2531
2532typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2533 {
2534 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2535 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2536
2537typedef struct D3D12_RESOURCE_ALLOCATION_INFO
2538 {
2539 UINT64 SizeInBytes;
2540 UINT64 Alignment;
2541 } D3D12_RESOURCE_ALLOCATION_INFO;
2542
2543typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
2544 {
2545 UINT64 Offset;
2546 UINT64 Alignment;
2547 UINT64 SizeInBytes;
2548 } D3D12_RESOURCE_ALLOCATION_INFO1;
2549
2550typedef
2551enum D3D12_HEAP_TYPE
2552 {
2553 D3D12_HEAP_TYPE_DEFAULT = 1,
2554 D3D12_HEAP_TYPE_UPLOAD = 2,
2555 D3D12_HEAP_TYPE_READBACK = 3,
2556 D3D12_HEAP_TYPE_CUSTOM = 4
2557 } D3D12_HEAP_TYPE;
2558
2559typedef
2560enum D3D12_CPU_PAGE_PROPERTY
2561 {
2562 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
2563 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
2564 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
2565 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
2566 } D3D12_CPU_PAGE_PROPERTY;
2567
2568typedef
2569enum D3D12_MEMORY_POOL
2570 {
2571 D3D12_MEMORY_POOL_UNKNOWN = 0,
2572 D3D12_MEMORY_POOL_L0 = 1,
2573 D3D12_MEMORY_POOL_L1 = 2
2574 } D3D12_MEMORY_POOL;
2575
2576typedef struct D3D12_HEAP_PROPERTIES
2577 {
2578 D3D12_HEAP_TYPE Type;
2579 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
2580 D3D12_MEMORY_POOL MemoryPoolPreference;
2581 UINT CreationNodeMask;
2582 UINT VisibleNodeMask;
2583 } D3D12_HEAP_PROPERTIES;
2584
2585typedef
2586enum D3D12_HEAP_FLAGS
2587 {
2588 D3D12_HEAP_FLAG_NONE = 0,
2589 D3D12_HEAP_FLAG_SHARED = 0x1,
2590 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
2591 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
2592 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
2593 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
2594 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
2595 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
2596 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
2597 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
2598 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
2599 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
2600 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
2601 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
2602 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
2603 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
2604 } D3D12_HEAP_FLAGS;
2605
2606DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );
2607typedef struct D3D12_HEAP_DESC
2608 {
2609 UINT64 SizeInBytes;
2610 D3D12_HEAP_PROPERTIES Properties;
2611 UINT64 Alignment;
2612 D3D12_HEAP_FLAGS Flags;
2613 } D3D12_HEAP_DESC;
2614
2615typedef
2616enum D3D12_RESOURCE_DIMENSION
2617 {
2618 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
2619 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
2620 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
2621 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
2622 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
2623 } D3D12_RESOURCE_DIMENSION;
2624
2625typedef
2626enum D3D12_TEXTURE_LAYOUT
2627 {
2628 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
2629 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
2630 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
2631 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
2632 } D3D12_TEXTURE_LAYOUT;
2633
2634typedef
2635enum D3D12_RESOURCE_FLAGS
2636 {
2637 D3D12_RESOURCE_FLAG_NONE = 0,
2638 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
2639 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
2640 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
2641 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
2642 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
2643 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
2644 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
2645 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80
2646 } D3D12_RESOURCE_FLAGS;
2647
2648DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );
2649typedef struct D3D12_MIP_REGION
2650 {
2651 UINT Width;
2652 UINT Height;
2653 UINT Depth;
2654 } D3D12_MIP_REGION;
2655
2656typedef struct D3D12_RESOURCE_DESC
2657 {
2658 D3D12_RESOURCE_DIMENSION Dimension;
2659 UINT64 Alignment;
2660 UINT64 Width;
2661 UINT Height;
2662 UINT16 DepthOrArraySize;
2663 UINT16 MipLevels;
2664 DXGI_FORMAT Format;
2665 DXGI_SAMPLE_DESC SampleDesc;
2666 D3D12_TEXTURE_LAYOUT Layout;
2667 D3D12_RESOURCE_FLAGS Flags;
2668 } D3D12_RESOURCE_DESC;
2669
2670typedef struct D3D12_RESOURCE_DESC1
2671 {
2672 D3D12_RESOURCE_DIMENSION Dimension;
2673 UINT64 Alignment;
2674 UINT64 Width;
2675 UINT Height;
2676 UINT16 DepthOrArraySize;
2677 UINT16 MipLevels;
2678 DXGI_FORMAT Format;
2679 DXGI_SAMPLE_DESC SampleDesc;
2680 D3D12_TEXTURE_LAYOUT Layout;
2681 D3D12_RESOURCE_FLAGS Flags;
2682 D3D12_MIP_REGION SamplerFeedbackMipRegion;
2683 } D3D12_RESOURCE_DESC1;
2684
2685typedef struct D3D12_DEPTH_STENCIL_VALUE
2686 {
2687 FLOAT Depth;
2688 UINT8 Stencil;
2689 } D3D12_DEPTH_STENCIL_VALUE;
2690
2691typedef struct D3D12_CLEAR_VALUE
2692 {
2693 DXGI_FORMAT Format;
2694 union
2695 {
2696 FLOAT Color[ 4 ];
2697 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
2698 } ;
2699 } D3D12_CLEAR_VALUE;
2700
2701typedef struct D3D12_RANGE
2702 {
2703 SIZE_T Begin;
2704 SIZE_T End;
2705 } D3D12_RANGE;
2706
2707typedef struct D3D12_RANGE_UINT64
2708 {
2709 UINT64 Begin;
2710 UINT64 End;
2711 } D3D12_RANGE_UINT64;
2712
2713typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
2714 {
2715 UINT Subresource;
2716 D3D12_RANGE_UINT64 Range;
2717 } D3D12_SUBRESOURCE_RANGE_UINT64;
2718
2719typedef struct D3D12_SUBRESOURCE_INFO
2720 {
2721 UINT64 Offset;
2722 UINT RowPitch;
2723 UINT DepthPitch;
2724 } D3D12_SUBRESOURCE_INFO;
2725
2726typedef struct D3D12_TILED_RESOURCE_COORDINATE
2727 {
2728 UINT X;
2729 UINT Y;
2730 UINT Z;
2731 UINT Subresource;
2732 } D3D12_TILED_RESOURCE_COORDINATE;
2733
2734typedef struct D3D12_TILE_REGION_SIZE
2735 {
2736 UINT NumTiles;
2737 BOOL UseBox;
2738 UINT Width;
2739 UINT16 Height;
2740 UINT16 Depth;
2741 } D3D12_TILE_REGION_SIZE;
2742
2743typedef
2744enum D3D12_TILE_RANGE_FLAGS
2745 {
2746 D3D12_TILE_RANGE_FLAG_NONE = 0,
2747 D3D12_TILE_RANGE_FLAG_NULL = 1,
2748 D3D12_TILE_RANGE_FLAG_SKIP = 2,
2749 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
2750 } D3D12_TILE_RANGE_FLAGS;
2751
2752typedef struct D3D12_SUBRESOURCE_TILING
2753 {
2754 UINT WidthInTiles;
2755 UINT16 HeightInTiles;
2756 UINT16 DepthInTiles;
2757 UINT StartTileIndexInOverallResource;
2758 } D3D12_SUBRESOURCE_TILING;
2759
2760typedef struct D3D12_TILE_SHAPE
2761 {
2762 UINT WidthInTexels;
2763 UINT HeightInTexels;
2764 UINT DepthInTexels;
2765 } D3D12_TILE_SHAPE;
2766
2767typedef struct D3D12_PACKED_MIP_INFO
2768 {
2769 UINT8 NumStandardMips;
2770 UINT8 NumPackedMips;
2771 UINT NumTilesForPackedMips;
2772 UINT StartTileIndexInOverallResource;
2773 } D3D12_PACKED_MIP_INFO;
2774
2775typedef
2776enum D3D12_TILE_MAPPING_FLAGS
2777 {
2778 D3D12_TILE_MAPPING_FLAG_NONE = 0,
2779 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
2780 } D3D12_TILE_MAPPING_FLAGS;
2781
2782DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );
2783typedef
2784enum D3D12_TILE_COPY_FLAGS
2785 {
2786 D3D12_TILE_COPY_FLAG_NONE = 0,
2787 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
2788 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
2789 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
2790 } D3D12_TILE_COPY_FLAGS;
2791
2792DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );
2793typedef
2794enum D3D12_RESOURCE_STATES
2795 {
2796 D3D12_RESOURCE_STATE_COMMON = 0,
2797 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
2798 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
2799 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
2800 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
2801 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
2802 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
2803 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
2804 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
2805 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
2806 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
2807 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
2808 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
2809 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
2810 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
2811 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
2812 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
2813 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
2814 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
2815 D3D12_RESOURCE_STATE_PRESENT = 0,
2816 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
2817 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
2818 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
2819 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
2820 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
2821 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
2822 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
2823 } D3D12_RESOURCE_STATES;
2824
2825DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );
2826typedef
2827enum D3D12_RESOURCE_BARRIER_TYPE
2828 {
2829 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
2830 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
2831 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
2832 } D3D12_RESOURCE_BARRIER_TYPE;
2833
2834
2835typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2836 {
2837 ID3D12Resource *pResource;
2838 UINT Subresource;
2839 D3D12_RESOURCE_STATES StateBefore;
2840 D3D12_RESOURCE_STATES StateAfter;
2841 } D3D12_RESOURCE_TRANSITION_BARRIER;
2842
2843typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2844 {
2845 ID3D12Resource *pResourceBefore;
2846 ID3D12Resource *pResourceAfter;
2847 } D3D12_RESOURCE_ALIASING_BARRIER;
2848
2849typedef struct D3D12_RESOURCE_UAV_BARRIER
2850 {
2851 ID3D12Resource *pResource;
2852 } D3D12_RESOURCE_UAV_BARRIER;
2853
2854typedef
2855enum D3D12_RESOURCE_BARRIER_FLAGS
2856 {
2857 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
2858 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2859 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
2860 } D3D12_RESOURCE_BARRIER_FLAGS;
2861
2862DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );
2863typedef struct D3D12_RESOURCE_BARRIER
2864 {
2865 D3D12_RESOURCE_BARRIER_TYPE Type;
2866 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2867 union
2868 {
2869 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2870 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2871 D3D12_RESOURCE_UAV_BARRIER UAV;
2872 } ;
2873 } D3D12_RESOURCE_BARRIER;
2874
2875typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2876 {
2877 DXGI_FORMAT Format;
2878 UINT Width;
2879 UINT Height;
2880 UINT Depth;
2881 UINT RowPitch;
2882 } D3D12_SUBRESOURCE_FOOTPRINT;
2883
2884typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2885 {
2886 UINT64 Offset;
2887 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2888 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2889
2890typedef
2891enum D3D12_TEXTURE_COPY_TYPE
2892 {
2893 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2894 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
2895 } D3D12_TEXTURE_COPY_TYPE;
2896
2897typedef struct D3D12_TEXTURE_COPY_LOCATION
2898 {
2899 ID3D12Resource *pResource;
2900 D3D12_TEXTURE_COPY_TYPE Type;
2901 union
2902 {
2903 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2904 UINT SubresourceIndex;
2905 } ;
2906 } D3D12_TEXTURE_COPY_LOCATION;
2907
2908typedef
2909enum D3D12_RESOLVE_MODE
2910 {
2911 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2912 D3D12_RESOLVE_MODE_MIN = 1,
2913 D3D12_RESOLVE_MODE_MAX = 2,
2914 D3D12_RESOLVE_MODE_AVERAGE = 3,
2915 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2916 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2917 } D3D12_RESOLVE_MODE;
2918
2919typedef struct D3D12_SAMPLE_POSITION
2920 {
2921 INT8 X;
2922 INT8 Y;
2923 } D3D12_SAMPLE_POSITION;
2924
2925typedef struct D3D12_VIEW_INSTANCE_LOCATION
2926 {
2927 UINT ViewportArrayIndex;
2928 UINT RenderTargetArrayIndex;
2929 } D3D12_VIEW_INSTANCE_LOCATION;
2930
2931typedef
2932enum D3D12_VIEW_INSTANCING_FLAGS
2933 {
2934 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
2935 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
2936 } D3D12_VIEW_INSTANCING_FLAGS;
2937
2938DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );
2939typedef struct D3D12_VIEW_INSTANCING_DESC
2940 {
2941 UINT ViewInstanceCount;
2942 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
2943 D3D12_VIEW_INSTANCING_FLAGS Flags;
2944 } D3D12_VIEW_INSTANCING_DESC;
2945
2946typedef
2947enum D3D12_SHADER_COMPONENT_MAPPING
2948 {
2949 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2950 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2951 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2952 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2953 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2954 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
2955 } D3D12_SHADER_COMPONENT_MAPPING;
2956
2957#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
2958#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
2959#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
2960#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
2961 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
2962 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
2963 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
2964 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
2965#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))
2966#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
2967typedef
2968enum D3D12_BUFFER_SRV_FLAGS
2969 {
2970 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2971 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
2972 } D3D12_BUFFER_SRV_FLAGS;
2973
2974DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );
2975typedef struct D3D12_BUFFER_SRV
2976 {
2977 UINT64 FirstElement;
2978 UINT NumElements;
2979 UINT StructureByteStride;
2980 D3D12_BUFFER_SRV_FLAGS Flags;
2981 } D3D12_BUFFER_SRV;
2982
2983typedef struct D3D12_TEX1D_SRV
2984 {
2985 UINT MostDetailedMip;
2986 UINT MipLevels;
2987 FLOAT ResourceMinLODClamp;
2988 } D3D12_TEX1D_SRV;
2989
2990typedef struct D3D12_TEX1D_ARRAY_SRV
2991 {
2992 UINT MostDetailedMip;
2993 UINT MipLevels;
2994 UINT FirstArraySlice;
2995 UINT ArraySize;
2996 FLOAT ResourceMinLODClamp;
2997 } D3D12_TEX1D_ARRAY_SRV;
2998
2999typedef struct D3D12_TEX2D_SRV
3000 {
3001 UINT MostDetailedMip;
3002 UINT MipLevels;
3003 UINT PlaneSlice;
3004 FLOAT ResourceMinLODClamp;
3005 } D3D12_TEX2D_SRV;
3006
3007typedef struct D3D12_TEX2D_ARRAY_SRV
3008 {
3009 UINT MostDetailedMip;
3010 UINT MipLevels;
3011 UINT FirstArraySlice;
3012 UINT ArraySize;
3013 UINT PlaneSlice;
3014 FLOAT ResourceMinLODClamp;
3015 } D3D12_TEX2D_ARRAY_SRV;
3016
3017typedef struct D3D12_TEX3D_SRV
3018 {
3019 UINT MostDetailedMip;
3020 UINT MipLevels;
3021 FLOAT ResourceMinLODClamp;
3022 } D3D12_TEX3D_SRV;
3023
3024typedef struct D3D12_TEXCUBE_SRV
3025 {
3026 UINT MostDetailedMip;
3027 UINT MipLevels;
3028 FLOAT ResourceMinLODClamp;
3029 } D3D12_TEXCUBE_SRV;
3030
3031typedef struct D3D12_TEXCUBE_ARRAY_SRV
3032 {
3033 UINT MostDetailedMip;
3034 UINT MipLevels;
3035 UINT First2DArrayFace;
3036 UINT NumCubes;
3037 FLOAT ResourceMinLODClamp;
3038 } D3D12_TEXCUBE_ARRAY_SRV;
3039
3040typedef struct D3D12_TEX2DMS_SRV
3041 {
3042 UINT UnusedField_NothingToDefine;
3043 } D3D12_TEX2DMS_SRV;
3044
3045typedef struct D3D12_TEX2DMS_ARRAY_SRV
3046 {
3047 UINT FirstArraySlice;
3048 UINT ArraySize;
3049 } D3D12_TEX2DMS_ARRAY_SRV;
3050
3051typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3052 {
3053 D3D12_GPU_VIRTUAL_ADDRESS Location;
3054 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3055
3056typedef
3057enum D3D12_SRV_DIMENSION
3058 {
3059 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3060 D3D12_SRV_DIMENSION_BUFFER = 1,
3061 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3062 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3063 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3064 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3065 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3066 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3067 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3068 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3069 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3070 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3071 } D3D12_SRV_DIMENSION;
3072
3073typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3074 {
3075 DXGI_FORMAT Format;
3076 D3D12_SRV_DIMENSION ViewDimension;
3077 UINT Shader4ComponentMapping;
3078 union
3079 {
3080 D3D12_BUFFER_SRV Buffer;
3081 D3D12_TEX1D_SRV Texture1D;
3082 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3083 D3D12_TEX2D_SRV Texture2D;
3084 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3085 D3D12_TEX2DMS_SRV Texture2DMS;
3086 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3087 D3D12_TEX3D_SRV Texture3D;
3088 D3D12_TEXCUBE_SRV TextureCube;
3089 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3090 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3091 } ;
3092 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3093
3094typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3095 {
3096 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3097 UINT SizeInBytes;
3098 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3099
3100typedef
3101enum D3D12_FILTER
3102 {
3103 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3104 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3105 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3106 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3107 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3108 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3109 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3110 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3111 D3D12_FILTER_ANISOTROPIC = 0x55,
3112 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3113 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3114 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3115 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3116 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3117 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3118 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3119 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3120 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3121 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3122 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3123 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3124 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3125 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3126 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3127 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3128 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3129 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3130 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3131 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3132 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3133 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3134 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3135 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3136 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3137 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3138 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3139 } D3D12_FILTER;
3140
3141typedef
3142enum D3D12_FILTER_TYPE
3143 {
3144 D3D12_FILTER_TYPE_POINT = 0,
3145 D3D12_FILTER_TYPE_LINEAR = 1
3146 } D3D12_FILTER_TYPE;
3147
3148typedef
3149enum D3D12_FILTER_REDUCTION_TYPE
3150 {
3151 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3152 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3153 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3154 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3155 } D3D12_FILTER_REDUCTION_TYPE;
3156
3157#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3158
3159#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3160
3161#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3162
3163#define D3D12_MIN_FILTER_SHIFT ( 4 )
3164
3165#define D3D12_MAG_FILTER_SHIFT ( 2 )
3166
3167#define D3D12_MIP_FILTER_SHIFT ( 0 )
3168
3169#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3170
3171#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3172 ( ( D3D12_FILTER ) ( \
3173 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3174 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3175 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3176 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3177#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3178 ( ( D3D12_FILTER ) ( \
3179 D3D12_ANISOTROPIC_FILTERING_BIT | \
3180 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3181 D3D12_FILTER_TYPE_LINEAR, \
3182 D3D12_FILTER_TYPE_LINEAR, \
3183 reduction ) ) )
3184#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3185 ( ( D3D12_FILTER_TYPE ) \
3186 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3187#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3188 ( ( D3D12_FILTER_TYPE ) \
3189 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3190#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3191 ( ( D3D12_FILTER_TYPE ) \
3192 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3193#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3194 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3195 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3196#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3197 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3198#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3199 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3200 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3201 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \
3202 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )
3203typedef
3204enum D3D12_TEXTURE_ADDRESS_MODE
3205 {
3206 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3207 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3208 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3209 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3210 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3211 } D3D12_TEXTURE_ADDRESS_MODE;
3212
3213typedef struct D3D12_SAMPLER_DESC
3214 {
3215 D3D12_FILTER Filter;
3216 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3217 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3218 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3219 FLOAT MipLODBias;
3220 UINT MaxAnisotropy;
3221 D3D12_COMPARISON_FUNC ComparisonFunc;
3222 FLOAT BorderColor[ 4 ];
3223 FLOAT MinLOD;
3224 FLOAT MaxLOD;
3225 } D3D12_SAMPLER_DESC;
3226
3227typedef
3228enum D3D12_BUFFER_UAV_FLAGS
3229 {
3230 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3231 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3232 } D3D12_BUFFER_UAV_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );
3235typedef struct D3D12_BUFFER_UAV
3236 {
3237 UINT64 FirstElement;
3238 UINT NumElements;
3239 UINT StructureByteStride;
3240 UINT64 CounterOffsetInBytes;
3241 D3D12_BUFFER_UAV_FLAGS Flags;
3242 } D3D12_BUFFER_UAV;
3243
3244typedef struct D3D12_TEX1D_UAV
3245 {
3246 UINT MipSlice;
3247 } D3D12_TEX1D_UAV;
3248
3249typedef struct D3D12_TEX1D_ARRAY_UAV
3250 {
3251 UINT MipSlice;
3252 UINT FirstArraySlice;
3253 UINT ArraySize;
3254 } D3D12_TEX1D_ARRAY_UAV;
3255
3256typedef struct D3D12_TEX2D_UAV
3257 {
3258 UINT MipSlice;
3259 UINT PlaneSlice;
3260 } D3D12_TEX2D_UAV;
3261
3262typedef struct D3D12_TEX2D_ARRAY_UAV
3263 {
3264 UINT MipSlice;
3265 UINT FirstArraySlice;
3266 UINT ArraySize;
3267 UINT PlaneSlice;
3268 } D3D12_TEX2D_ARRAY_UAV;
3269
3270typedef struct D3D12_TEX3D_UAV
3271 {
3272 UINT MipSlice;
3273 UINT FirstWSlice;
3274 UINT WSize;
3275 } D3D12_TEX3D_UAV;
3276
3277typedef
3278enum D3D12_UAV_DIMENSION
3279 {
3280 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3281 D3D12_UAV_DIMENSION_BUFFER = 1,
3282 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3283 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3284 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3285 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3286 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3287 } D3D12_UAV_DIMENSION;
3288
3289typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3290 {
3291 DXGI_FORMAT Format;
3292 D3D12_UAV_DIMENSION ViewDimension;
3293 union
3294 {
3295 D3D12_BUFFER_UAV Buffer;
3296 D3D12_TEX1D_UAV Texture1D;
3297 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3298 D3D12_TEX2D_UAV Texture2D;
3299 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3300 D3D12_TEX3D_UAV Texture3D;
3301 } ;
3302 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3303
3304typedef struct D3D12_BUFFER_RTV
3305 {
3306 UINT64 FirstElement;
3307 UINT NumElements;
3308 } D3D12_BUFFER_RTV;
3309
3310typedef struct D3D12_TEX1D_RTV
3311 {
3312 UINT MipSlice;
3313 } D3D12_TEX1D_RTV;
3314
3315typedef struct D3D12_TEX1D_ARRAY_RTV
3316 {
3317 UINT MipSlice;
3318 UINT FirstArraySlice;
3319 UINT ArraySize;
3320 } D3D12_TEX1D_ARRAY_RTV;
3321
3322typedef struct D3D12_TEX2D_RTV
3323 {
3324 UINT MipSlice;
3325 UINT PlaneSlice;
3326 } D3D12_TEX2D_RTV;
3327
3328typedef struct D3D12_TEX2DMS_RTV
3329 {
3330 UINT UnusedField_NothingToDefine;
3331 } D3D12_TEX2DMS_RTV;
3332
3333typedef struct D3D12_TEX2D_ARRAY_RTV
3334 {
3335 UINT MipSlice;
3336 UINT FirstArraySlice;
3337 UINT ArraySize;
3338 UINT PlaneSlice;
3339 } D3D12_TEX2D_ARRAY_RTV;
3340
3341typedef struct D3D12_TEX2DMS_ARRAY_RTV
3342 {
3343 UINT FirstArraySlice;
3344 UINT ArraySize;
3345 } D3D12_TEX2DMS_ARRAY_RTV;
3346
3347typedef struct D3D12_TEX3D_RTV
3348 {
3349 UINT MipSlice;
3350 UINT FirstWSlice;
3351 UINT WSize;
3352 } D3D12_TEX3D_RTV;
3353
3354typedef
3355enum D3D12_RTV_DIMENSION
3356 {
3357 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3358 D3D12_RTV_DIMENSION_BUFFER = 1,
3359 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3360 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3361 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3362 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3363 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3364 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3365 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3366 } D3D12_RTV_DIMENSION;
3367
3368typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3369 {
3370 DXGI_FORMAT Format;
3371 D3D12_RTV_DIMENSION ViewDimension;
3372 union
3373 {
3374 D3D12_BUFFER_RTV Buffer;
3375 D3D12_TEX1D_RTV Texture1D;
3376 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3377 D3D12_TEX2D_RTV Texture2D;
3378 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3379 D3D12_TEX2DMS_RTV Texture2DMS;
3380 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3381 D3D12_TEX3D_RTV Texture3D;
3382 } ;
3383 } D3D12_RENDER_TARGET_VIEW_DESC;
3384
3385typedef struct D3D12_TEX1D_DSV
3386 {
3387 UINT MipSlice;
3388 } D3D12_TEX1D_DSV;
3389
3390typedef struct D3D12_TEX1D_ARRAY_DSV
3391 {
3392 UINT MipSlice;
3393 UINT FirstArraySlice;
3394 UINT ArraySize;
3395 } D3D12_TEX1D_ARRAY_DSV;
3396
3397typedef struct D3D12_TEX2D_DSV
3398 {
3399 UINT MipSlice;
3400 } D3D12_TEX2D_DSV;
3401
3402typedef struct D3D12_TEX2D_ARRAY_DSV
3403 {
3404 UINT MipSlice;
3405 UINT FirstArraySlice;
3406 UINT ArraySize;
3407 } D3D12_TEX2D_ARRAY_DSV;
3408
3409typedef struct D3D12_TEX2DMS_DSV
3410 {
3411 UINT UnusedField_NothingToDefine;
3412 } D3D12_TEX2DMS_DSV;
3413
3414typedef struct D3D12_TEX2DMS_ARRAY_DSV
3415 {
3416 UINT FirstArraySlice;
3417 UINT ArraySize;
3418 } D3D12_TEX2DMS_ARRAY_DSV;
3419
3420typedef
3421enum D3D12_DSV_FLAGS
3422 {
3423 D3D12_DSV_FLAG_NONE = 0,
3424 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3425 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3426 } D3D12_DSV_FLAGS;
3427
3428DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );
3429typedef
3430enum D3D12_DSV_DIMENSION
3431 {
3432 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3433 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
3434 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
3435 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
3436 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
3437 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
3438 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
3439 } D3D12_DSV_DIMENSION;
3440
3441typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
3442 {
3443 DXGI_FORMAT Format;
3444 D3D12_DSV_DIMENSION ViewDimension;
3445 D3D12_DSV_FLAGS Flags;
3446 union
3447 {
3448 D3D12_TEX1D_DSV Texture1D;
3449 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
3450 D3D12_TEX2D_DSV Texture2D;
3451 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
3452 D3D12_TEX2DMS_DSV Texture2DMS;
3453 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
3454 } ;
3455 } D3D12_DEPTH_STENCIL_VIEW_DESC;
3456
3457typedef
3458enum D3D12_CLEAR_FLAGS
3459 {
3460 D3D12_CLEAR_FLAG_DEPTH = 0x1,
3461 D3D12_CLEAR_FLAG_STENCIL = 0x2
3462 } D3D12_CLEAR_FLAGS;
3463
3464DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );
3465typedef
3466enum D3D12_FENCE_FLAGS
3467 {
3468 D3D12_FENCE_FLAG_NONE = 0,
3469 D3D12_FENCE_FLAG_SHARED = 0x1,
3470 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
3471 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
3472 } D3D12_FENCE_FLAGS;
3473
3474DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );
3475typedef
3476enum D3D12_DESCRIPTOR_HEAP_TYPE
3477 {
3478 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
3479 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
3480 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
3481 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
3482 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
3483 } D3D12_DESCRIPTOR_HEAP_TYPE;
3484
3485typedef
3486enum D3D12_DESCRIPTOR_HEAP_FLAGS
3487 {
3488 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
3489 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
3490 } D3D12_DESCRIPTOR_HEAP_FLAGS;
3491
3492DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );
3493typedef struct D3D12_DESCRIPTOR_HEAP_DESC
3494 {
3495 D3D12_DESCRIPTOR_HEAP_TYPE Type;
3496 UINT NumDescriptors;
3497 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
3498 UINT NodeMask;
3499 } D3D12_DESCRIPTOR_HEAP_DESC;
3500
3501typedef
3502enum D3D12_DESCRIPTOR_RANGE_TYPE
3503 {
3504 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
3505 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
3506 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
3507 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
3508 } D3D12_DESCRIPTOR_RANGE_TYPE;
3509
3510typedef struct D3D12_DESCRIPTOR_RANGE
3511 {
3512 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3513 UINT NumDescriptors;
3514 UINT BaseShaderRegister;
3515 UINT RegisterSpace;
3516 UINT OffsetInDescriptorsFromTableStart;
3517 } D3D12_DESCRIPTOR_RANGE;
3518
3519typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
3520 {
3521 UINT NumDescriptorRanges;
3522 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
3523 } D3D12_ROOT_DESCRIPTOR_TABLE;
3524
3525typedef struct D3D12_ROOT_CONSTANTS
3526 {
3527 UINT ShaderRegister;
3528 UINT RegisterSpace;
3529 UINT Num32BitValues;
3530 } D3D12_ROOT_CONSTANTS;
3531
3532typedef struct D3D12_ROOT_DESCRIPTOR
3533 {
3534 UINT ShaderRegister;
3535 UINT RegisterSpace;
3536 } D3D12_ROOT_DESCRIPTOR;
3537
3538typedef
3539enum D3D12_SHADER_VISIBILITY
3540 {
3541 D3D12_SHADER_VISIBILITY_ALL = 0,
3542 D3D12_SHADER_VISIBILITY_VERTEX = 1,
3543 D3D12_SHADER_VISIBILITY_HULL = 2,
3544 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
3545 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
3546 D3D12_SHADER_VISIBILITY_PIXEL = 5,
3547 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
3548 D3D12_SHADER_VISIBILITY_MESH = 7
3549 } D3D12_SHADER_VISIBILITY;
3550
3551typedef
3552enum D3D12_ROOT_PARAMETER_TYPE
3553 {
3554 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
3555 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
3556 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
3557 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
3558 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
3559 } D3D12_ROOT_PARAMETER_TYPE;
3560
3561typedef struct D3D12_ROOT_PARAMETER
3562 {
3563 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3564 union
3565 {
3566 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
3567 D3D12_ROOT_CONSTANTS Constants;
3568 D3D12_ROOT_DESCRIPTOR Descriptor;
3569 } ;
3570 D3D12_SHADER_VISIBILITY ShaderVisibility;
3571 } D3D12_ROOT_PARAMETER;
3572
3573typedef
3574enum D3D12_ROOT_SIGNATURE_FLAGS
3575 {
3576 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
3577 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
3578 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
3579 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
3580 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
3581 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
3582 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
3583 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
3584 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
3585 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
3586 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
3587 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
3588 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
3589 } D3D12_ROOT_SIGNATURE_FLAGS;
3590
3591DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );
3592typedef
3593enum D3D12_STATIC_BORDER_COLOR
3594 {
3595 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
3596 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
3597 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 )
3598 } D3D12_STATIC_BORDER_COLOR;
3599
3600typedef struct D3D12_STATIC_SAMPLER_DESC
3601 {
3602 D3D12_FILTER Filter;
3603 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3604 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3605 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3606 FLOAT MipLODBias;
3607 UINT MaxAnisotropy;
3608 D3D12_COMPARISON_FUNC ComparisonFunc;
3609 D3D12_STATIC_BORDER_COLOR BorderColor;
3610 FLOAT MinLOD;
3611 FLOAT MaxLOD;
3612 UINT ShaderRegister;
3613 UINT RegisterSpace;
3614 D3D12_SHADER_VISIBILITY ShaderVisibility;
3615 } D3D12_STATIC_SAMPLER_DESC;
3616
3617typedef struct D3D12_ROOT_SIGNATURE_DESC
3618 {
3619 UINT NumParameters;
3620 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
3621 UINT NumStaticSamplers;
3622 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3623 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3624 } D3D12_ROOT_SIGNATURE_DESC;
3625
3626typedef
3627enum D3D12_DESCRIPTOR_RANGE_FLAGS
3628 {
3629 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
3630 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
3631 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
3632 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3633 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
3634 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
3635 } D3D12_DESCRIPTOR_RANGE_FLAGS;
3636
3637DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );
3638typedef struct D3D12_DESCRIPTOR_RANGE1
3639 {
3640 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3641 UINT NumDescriptors;
3642 UINT BaseShaderRegister;
3643 UINT RegisterSpace;
3644 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
3645 UINT OffsetInDescriptorsFromTableStart;
3646 } D3D12_DESCRIPTOR_RANGE1;
3647
3648typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
3649 {
3650 UINT NumDescriptorRanges;
3651 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
3652 } D3D12_ROOT_DESCRIPTOR_TABLE1;
3653
3654typedef
3655enum D3D12_ROOT_DESCRIPTOR_FLAGS
3656 {
3657 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
3658 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
3659 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3660 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
3661 } D3D12_ROOT_DESCRIPTOR_FLAGS;
3662
3663DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );
3664typedef struct D3D12_ROOT_DESCRIPTOR1
3665 {
3666 UINT ShaderRegister;
3667 UINT RegisterSpace;
3668 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
3669 } D3D12_ROOT_DESCRIPTOR1;
3670
3671typedef struct D3D12_ROOT_PARAMETER1
3672 {
3673 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3674 union
3675 {
3676 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
3677 D3D12_ROOT_CONSTANTS Constants;
3678 D3D12_ROOT_DESCRIPTOR1 Descriptor;
3679 } ;
3680 D3D12_SHADER_VISIBILITY ShaderVisibility;
3681 } D3D12_ROOT_PARAMETER1;
3682
3683typedef struct D3D12_ROOT_SIGNATURE_DESC1
3684 {
3685 UINT NumParameters;
3686 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
3687 UINT NumStaticSamplers;
3688 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3689 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3690 } D3D12_ROOT_SIGNATURE_DESC1;
3691
3692typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
3693 {
3694 D3D_ROOT_SIGNATURE_VERSION Version;
3695 union
3696 {
3697 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
3698 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
3699 } ;
3700 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
3701
3702
3703
3704extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
3705extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
3706
3707#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3708#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3709
3710/* interface ID3D12RootSignatureDeserializer */
3711/* [unique][local][object][uuid] */
3712
3713
3714EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
3715
3716#if defined(__cplusplus) && !defined(CINTERFACE)
3717
3718 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
3719 ID3D12RootSignatureDeserializer : public IUnknown
3720 {
3721 public:
3722 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
3723
3724 };
3725
3726
3727#else /* C style interface */
3728
3729 typedef struct ID3D12RootSignatureDeserializerVtbl
3730 {
3731 BEGIN_INTERFACE
3732
3733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3735 ID3D12RootSignatureDeserializer * This,
3736 REFIID riid,
3737 _COM_Outptr_ void **ppvObject);
3738
3739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3740 ULONG ( STDMETHODCALLTYPE *AddRef )(
3741 ID3D12RootSignatureDeserializer * This);
3742
3743 DECLSPEC_XFGVIRT(IUnknown, Release)
3744 ULONG ( STDMETHODCALLTYPE *Release )(
3745 ID3D12RootSignatureDeserializer * This);
3746
3747 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
3748 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
3749 ID3D12RootSignatureDeserializer * This);
3750
3751 END_INTERFACE
3752 } ID3D12RootSignatureDeserializerVtbl;
3753
3754 interface ID3D12RootSignatureDeserializer
3755 {
3756 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
3757 };
3758
3759
3760
3761#ifdef COBJMACROS
3762
3763
3764#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3765 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3766
3767#define ID3D12RootSignatureDeserializer_AddRef(This) \
3768 ( (This)->lpVtbl -> AddRef(This) )
3769
3770#define ID3D12RootSignatureDeserializer_Release(This) \
3771 ( (This)->lpVtbl -> Release(This) )
3772
3773
3774#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
3775 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
3776
3777#endif /* COBJMACROS */
3778
3779
3780#endif /* C style interface */
3781
3782
3783
3784
3785#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
3786
3787
3788#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3789#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3790
3791/* interface ID3D12VersionedRootSignatureDeserializer */
3792/* [unique][local][object][uuid] */
3793
3794
3795EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
3796
3797#if defined(__cplusplus) && !defined(CINTERFACE)
3798
3799 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
3800 ID3D12VersionedRootSignatureDeserializer : public IUnknown
3801 {
3802 public:
3803 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
3804 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3805 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
3806
3807 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
3808
3809 };
3810
3811
3812#else /* C style interface */
3813
3814 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
3815 {
3816 BEGIN_INTERFACE
3817
3818 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3819 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3820 ID3D12VersionedRootSignatureDeserializer * This,
3821 REFIID riid,
3822 _COM_Outptr_ void **ppvObject);
3823
3824 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3825 ULONG ( STDMETHODCALLTYPE *AddRef )(
3826 ID3D12VersionedRootSignatureDeserializer * This);
3827
3828 DECLSPEC_XFGVIRT(IUnknown, Release)
3829 ULONG ( STDMETHODCALLTYPE *Release )(
3830 ID3D12VersionedRootSignatureDeserializer * This);
3831
3832 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
3833 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
3834 ID3D12VersionedRootSignatureDeserializer * This,
3835 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3836 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
3837
3838 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
3839 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
3840 ID3D12VersionedRootSignatureDeserializer * This);
3841
3842 END_INTERFACE
3843 } ID3D12VersionedRootSignatureDeserializerVtbl;
3844
3845 interface ID3D12VersionedRootSignatureDeserializer
3846 {
3847 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
3848 };
3849
3850
3851
3852#ifdef COBJMACROS
3853
3854
3855#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3856 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3857
3858#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
3859 ( (This)->lpVtbl -> AddRef(This) )
3860
3861#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
3862 ( (This)->lpVtbl -> Release(This) )
3863
3864
3865#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
3866 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
3867
3868#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
3869 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
3870
3871#endif /* COBJMACROS */
3872
3873
3874#endif /* C style interface */
3875
3876
3877
3878
3879#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
3880
3881
3882/* interface __MIDL_itf_d3d12_0000_0003 */
3883/* [local] */
3884
3885typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
3886 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3887 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3888 _Out_ ID3DBlob** ppBlob,
3889 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3890
3891HRESULT WINAPI D3D12SerializeRootSignature(
3892 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3893 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3894 _Out_ ID3DBlob** ppBlob,
3895 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3896
3897typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
3898 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3899 _In_ SIZE_T SrcDataSizeInBytes,
3900 _In_ REFIID pRootSignatureDeserializerInterface,
3901 _Out_ void** ppRootSignatureDeserializer);
3902
3903HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
3904 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3905 _In_ SIZE_T SrcDataSizeInBytes,
3906 _In_ REFIID pRootSignatureDeserializerInterface,
3907 _Out_ void** ppRootSignatureDeserializer);
3908
3909typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
3910 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3911 _Out_ ID3DBlob** ppBlob,
3912 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3913
3914HRESULT WINAPI D3D12SerializeVersionedRootSignature(
3915 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3916 _Out_ ID3DBlob** ppBlob,
3917 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3918
3919typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
3920 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3921 _In_ SIZE_T SrcDataSizeInBytes,
3922 _In_ REFIID pRootSignatureDeserializerInterface,
3923 _Out_ void** ppRootSignatureDeserializer);
3924
3925HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
3926 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3927 _In_ SIZE_T SrcDataSizeInBytes,
3928 _In_ REFIID pRootSignatureDeserializerInterface,
3929 _Out_ void** ppRootSignatureDeserializer);
3930
3931typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3932 {
3933 SIZE_T ptr;
3934 } D3D12_CPU_DESCRIPTOR_HANDLE;
3935
3936typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3937 {
3938 UINT64 ptr;
3939 } D3D12_GPU_DESCRIPTOR_HANDLE;
3940
3941// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
3942// must have 2D subresources with all specified subresources the same dimension.
3943typedef struct D3D12_DISCARD_REGION
3944 {
3945 UINT NumRects;
3946 _In_reads_(NumRects) const D3D12_RECT *pRects;
3947 UINT FirstSubresource;
3948 UINT NumSubresources;
3949 } D3D12_DISCARD_REGION;
3950
3951typedef
3952enum D3D12_QUERY_HEAP_TYPE
3953 {
3954 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3955 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3956 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3957 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3958 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3959 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3960 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
3961 } D3D12_QUERY_HEAP_TYPE;
3962
3963typedef struct D3D12_QUERY_HEAP_DESC
3964 {
3965 D3D12_QUERY_HEAP_TYPE Type;
3966 UINT Count;
3967 UINT NodeMask;
3968 } D3D12_QUERY_HEAP_DESC;
3969
3970typedef
3971enum D3D12_QUERY_TYPE
3972 {
3973 D3D12_QUERY_TYPE_OCCLUSION = 0,
3974 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3975 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3976 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3977 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3978 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3979 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3980 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3981 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3982 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
3983 } D3D12_QUERY_TYPE;
3984
3985typedef
3986enum D3D12_PREDICATION_OP
3987 {
3988 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3989 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
3990 } D3D12_PREDICATION_OP;
3991
3992typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3993 {
3994 UINT64 IAVertices;
3995 UINT64 IAPrimitives;
3996 UINT64 VSInvocations;
3997 UINT64 GSInvocations;
3998 UINT64 GSPrimitives;
3999 UINT64 CInvocations;
4000 UINT64 CPrimitives;
4001 UINT64 PSInvocations;
4002 UINT64 HSInvocations;
4003 UINT64 DSInvocations;
4004 UINT64 CSInvocations;
4005 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4006
4007typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4008 {
4009 UINT64 IAVertices;
4010 UINT64 IAPrimitives;
4011 UINT64 VSInvocations;
4012 UINT64 GSInvocations;
4013 UINT64 GSPrimitives;
4014 UINT64 CInvocations;
4015 UINT64 CPrimitives;
4016 UINT64 PSInvocations;
4017 UINT64 HSInvocations;
4018 UINT64 DSInvocations;
4019 UINT64 CSInvocations;
4020 UINT64 ASInvocations;
4021 UINT64 MSInvocations;
4022 UINT64 MSPrimitives;
4023 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4024
4025typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4026 {
4027 UINT64 NumPrimitivesWritten;
4028 UINT64 PrimitivesStorageNeeded;
4029 } D3D12_QUERY_DATA_SO_STATISTICS;
4030
4031typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4032 {
4033 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4034 UINT64 SizeInBytes;
4035 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4036 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4037
4038typedef struct D3D12_DRAW_ARGUMENTS
4039 {
4040 UINT VertexCountPerInstance;
4041 UINT InstanceCount;
4042 UINT StartVertexLocation;
4043 UINT StartInstanceLocation;
4044 } D3D12_DRAW_ARGUMENTS;
4045
4046typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4047 {
4048 UINT IndexCountPerInstance;
4049 UINT InstanceCount;
4050 UINT StartIndexLocation;
4051 INT BaseVertexLocation;
4052 UINT StartInstanceLocation;
4053 } D3D12_DRAW_INDEXED_ARGUMENTS;
4054
4055typedef struct D3D12_DISPATCH_ARGUMENTS
4056 {
4057 UINT ThreadGroupCountX;
4058 UINT ThreadGroupCountY;
4059 UINT ThreadGroupCountZ;
4060 } D3D12_DISPATCH_ARGUMENTS;
4061
4062typedef struct D3D12_VERTEX_BUFFER_VIEW
4063 {
4064 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4065 UINT SizeInBytes;
4066 UINT StrideInBytes;
4067 } D3D12_VERTEX_BUFFER_VIEW;
4068
4069typedef struct D3D12_INDEX_BUFFER_VIEW
4070 {
4071 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4072 UINT SizeInBytes;
4073 DXGI_FORMAT Format;
4074 } D3D12_INDEX_BUFFER_VIEW;
4075
4076typedef
4077enum D3D12_INDIRECT_ARGUMENT_TYPE
4078 {
4079 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4080 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4081 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4082 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4083 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4084 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4085 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4086 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4087 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4088 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4089 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 )
4090 } D3D12_INDIRECT_ARGUMENT_TYPE;
4091
4092typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4093 {
4094 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4095 union
4096 {
4097 struct
4098 {
4099 UINT Slot;
4100 } VertexBuffer;
4101 struct
4102 {
4103 UINT RootParameterIndex;
4104 UINT DestOffsetIn32BitValues;
4105 UINT Num32BitValuesToSet;
4106 } Constant;
4107 struct
4108 {
4109 UINT RootParameterIndex;
4110 } ConstantBufferView;
4111 struct
4112 {
4113 UINT RootParameterIndex;
4114 } ShaderResourceView;
4115 struct
4116 {
4117 UINT RootParameterIndex;
4118 } UnorderedAccessView;
4119 } ;
4120 } D3D12_INDIRECT_ARGUMENT_DESC;
4121
4122typedef struct D3D12_COMMAND_SIGNATURE_DESC
4123 {
4124 UINT ByteStride;
4125 UINT NumArgumentDescs;
4126 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4127 UINT NodeMask;
4128 } D3D12_COMMAND_SIGNATURE_DESC;
4129
4130
4131
4132
4133extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4134extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4135
4136#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4137#define __ID3D12Pageable_INTERFACE_DEFINED__
4138
4139/* interface ID3D12Pageable */
4140/* [unique][local][object][uuid] */
4141
4142
4143EXTERN_C const IID IID_ID3D12Pageable;
4144
4145#if defined(__cplusplus) && !defined(CINTERFACE)
4146
4147 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4148 ID3D12Pageable : public ID3D12DeviceChild
4149 {
4150 public:
4151 };
4152
4153
4154#else /* C style interface */
4155
4156 typedef struct ID3D12PageableVtbl
4157 {
4158 BEGIN_INTERFACE
4159
4160 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4161 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4162 ID3D12Pageable * This,
4163 REFIID riid,
4164 _COM_Outptr_ void **ppvObject);
4165
4166 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4167 ULONG ( STDMETHODCALLTYPE *AddRef )(
4168 ID3D12Pageable * This);
4169
4170 DECLSPEC_XFGVIRT(IUnknown, Release)
4171 ULONG ( STDMETHODCALLTYPE *Release )(
4172 ID3D12Pageable * This);
4173
4174 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4175 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4176 ID3D12Pageable * This,
4177 _In_ REFGUID guid,
4178 _Inout_ UINT *pDataSize,
4179 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4180
4181 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4182 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4183 ID3D12Pageable * This,
4184 _In_ REFGUID guid,
4185 _In_ UINT DataSize,
4186 _In_reads_bytes_opt_( DataSize ) const void *pData);
4187
4188 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4189 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4190 ID3D12Pageable * This,
4191 _In_ REFGUID guid,
4192 _In_opt_ const IUnknown *pData);
4193
4194 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4195 HRESULT ( STDMETHODCALLTYPE *SetName )(
4196 ID3D12Pageable * This,
4197 _In_z_ LPCWSTR Name);
4198
4199 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4200 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4201 ID3D12Pageable * This,
4202 REFIID riid,
4203 _COM_Outptr_opt_ void **ppvDevice);
4204
4205 END_INTERFACE
4206 } ID3D12PageableVtbl;
4207
4208 interface ID3D12Pageable
4209 {
4210 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4211 };
4212
4213
4214
4215#ifdef COBJMACROS
4216
4217
4218#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4219 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4220
4221#define ID3D12Pageable_AddRef(This) \
4222 ( (This)->lpVtbl -> AddRef(This) )
4223
4224#define ID3D12Pageable_Release(This) \
4225 ( (This)->lpVtbl -> Release(This) )
4226
4227
4228#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4229 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4230
4231#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4232 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4233
4234#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4235 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4236
4237#define ID3D12Pageable_SetName(This,Name) \
4238 ( (This)->lpVtbl -> SetName(This,Name) )
4239
4240
4241#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4242 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4243
4244
4245#endif /* COBJMACROS */
4246
4247
4248#endif /* C style interface */
4249
4250
4251
4252
4253#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4254
4255
4256#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4257#define __ID3D12Heap_INTERFACE_DEFINED__
4258
4259/* interface ID3D12Heap */
4260/* [unique][local][object][uuid] */
4261
4262
4263EXTERN_C const IID IID_ID3D12Heap;
4264
4265#if defined(__cplusplus) && !defined(CINTERFACE)
4266
4267 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4268 ID3D12Heap : public ID3D12Pageable
4269 {
4270 public:
4271 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4272
4273 };
4274
4275
4276#else /* C style interface */
4277
4278 typedef struct ID3D12HeapVtbl
4279 {
4280 BEGIN_INTERFACE
4281
4282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4284 ID3D12Heap * This,
4285 REFIID riid,
4286 _COM_Outptr_ void **ppvObject);
4287
4288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4289 ULONG ( STDMETHODCALLTYPE *AddRef )(
4290 ID3D12Heap * This);
4291
4292 DECLSPEC_XFGVIRT(IUnknown, Release)
4293 ULONG ( STDMETHODCALLTYPE *Release )(
4294 ID3D12Heap * This);
4295
4296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4298 ID3D12Heap * This,
4299 _In_ REFGUID guid,
4300 _Inout_ UINT *pDataSize,
4301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4302
4303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4305 ID3D12Heap * This,
4306 _In_ REFGUID guid,
4307 _In_ UINT DataSize,
4308 _In_reads_bytes_opt_( DataSize ) const void *pData);
4309
4310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4312 ID3D12Heap * This,
4313 _In_ REFGUID guid,
4314 _In_opt_ const IUnknown *pData);
4315
4316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4317 HRESULT ( STDMETHODCALLTYPE *SetName )(
4318 ID3D12Heap * This,
4319 _In_z_ LPCWSTR Name);
4320
4321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4323 ID3D12Heap * This,
4324 REFIID riid,
4325 _COM_Outptr_opt_ void **ppvDevice);
4326
4327 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4328 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4329 ID3D12Heap * This,
4330 D3D12_HEAP_DESC * RetVal);
4331
4332 END_INTERFACE
4333 } ID3D12HeapVtbl;
4334
4335 interface ID3D12Heap
4336 {
4337 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4338 };
4339
4340
4341
4342#ifdef COBJMACROS
4343
4344
4345#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4347
4348#define ID3D12Heap_AddRef(This) \
4349 ( (This)->lpVtbl -> AddRef(This) )
4350
4351#define ID3D12Heap_Release(This) \
4352 ( (This)->lpVtbl -> Release(This) )
4353
4354
4355#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4356 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4357
4358#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4359 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4360
4361#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4362 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4363
4364#define ID3D12Heap_SetName(This,Name) \
4365 ( (This)->lpVtbl -> SetName(This,Name) )
4366
4367
4368#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4369 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4370
4371
4372
4373#define ID3D12Heap_GetDesc(This,RetVal) \
4374 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4375
4376#endif /* COBJMACROS */
4377
4378
4379#endif /* C style interface */
4380
4381
4382
4383
4384#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
4385
4386
4387#ifndef __ID3D12Resource_INTERFACE_DEFINED__
4388#define __ID3D12Resource_INTERFACE_DEFINED__
4389
4390/* interface ID3D12Resource */
4391/* [unique][local][object][uuid] */
4392
4393
4394EXTERN_C const IID IID_ID3D12Resource;
4395
4396#if defined(__cplusplus) && !defined(CINTERFACE)
4397
4398 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
4399 ID3D12Resource : public ID3D12Pageable
4400 {
4401 public:
4402 virtual HRESULT STDMETHODCALLTYPE Map(
4403 UINT Subresource,
4404 _In_opt_ const D3D12_RANGE *pReadRange,
4405 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
4406
4407 virtual void STDMETHODCALLTYPE Unmap(
4408 UINT Subresource,
4409 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
4410
4411 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4412
4413 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
4414
4415 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
4416 UINT DstSubresource,
4417 _In_opt_ const D3D12_BOX *pDstBox,
4418 _In_ const void *pSrcData,
4419 UINT SrcRowPitch,
4420 UINT SrcDepthPitch) = 0;
4421
4422 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
4423 _Out_ void *pDstData,
4424 UINT DstRowPitch,
4425 UINT DstDepthPitch,
4426 UINT SrcSubresource,
4427 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
4428
4429 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
4430 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4431 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
4432
4433 };
4434
4435
4436#else /* C style interface */
4437
4438 typedef struct ID3D12ResourceVtbl
4439 {
4440 BEGIN_INTERFACE
4441
4442 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4443 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4444 ID3D12Resource * This,
4445 REFIID riid,
4446 _COM_Outptr_ void **ppvObject);
4447
4448 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4449 ULONG ( STDMETHODCALLTYPE *AddRef )(
4450 ID3D12Resource * This);
4451
4452 DECLSPEC_XFGVIRT(IUnknown, Release)
4453 ULONG ( STDMETHODCALLTYPE *Release )(
4454 ID3D12Resource * This);
4455
4456 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4457 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4458 ID3D12Resource * This,
4459 _In_ REFGUID guid,
4460 _Inout_ UINT *pDataSize,
4461 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4462
4463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4464 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4465 ID3D12Resource * This,
4466 _In_ REFGUID guid,
4467 _In_ UINT DataSize,
4468 _In_reads_bytes_opt_( DataSize ) const void *pData);
4469
4470 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4471 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4472 ID3D12Resource * This,
4473 _In_ REFGUID guid,
4474 _In_opt_ const IUnknown *pData);
4475
4476 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4477 HRESULT ( STDMETHODCALLTYPE *SetName )(
4478 ID3D12Resource * This,
4479 _In_z_ LPCWSTR Name);
4480
4481 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4482 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4483 ID3D12Resource * This,
4484 REFIID riid,
4485 _COM_Outptr_opt_ void **ppvDevice);
4486
4487 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
4488 HRESULT ( STDMETHODCALLTYPE *Map )(
4489 ID3D12Resource * This,
4490 UINT Subresource,
4491 _In_opt_ const D3D12_RANGE *pReadRange,
4492 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
4493
4494 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
4495 void ( STDMETHODCALLTYPE *Unmap )(
4496 ID3D12Resource * This,
4497 UINT Subresource,
4498 _In_opt_ const D3D12_RANGE *pWrittenRange);
4499
4500 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
4501 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
4502 ID3D12Resource * This,
4503 D3D12_RESOURCE_DESC * RetVal);
4504
4505 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
4506 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
4507 ID3D12Resource * This);
4508
4509 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
4510 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
4511 ID3D12Resource * This,
4512 UINT DstSubresource,
4513 _In_opt_ const D3D12_BOX *pDstBox,
4514 _In_ const void *pSrcData,
4515 UINT SrcRowPitch,
4516 UINT SrcDepthPitch);
4517
4518 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
4519 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
4520 ID3D12Resource * This,
4521 _Out_ void *pDstData,
4522 UINT DstRowPitch,
4523 UINT DstDepthPitch,
4524 UINT SrcSubresource,
4525 _In_opt_ const D3D12_BOX *pSrcBox);
4526
4527 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
4528 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
4529 ID3D12Resource * This,
4530 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4531 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
4532
4533 END_INTERFACE
4534 } ID3D12ResourceVtbl;
4535
4536 interface ID3D12Resource
4537 {
4538 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
4539 };
4540
4541
4542
4543#ifdef COBJMACROS
4544
4545
4546#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
4547 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4548
4549#define ID3D12Resource_AddRef(This) \
4550 ( (This)->lpVtbl -> AddRef(This) )
4551
4552#define ID3D12Resource_Release(This) \
4553 ( (This)->lpVtbl -> Release(This) )
4554
4555
4556#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
4557 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4558
4559#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
4560 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4561
4562#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
4563 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4564
4565#define ID3D12Resource_SetName(This,Name) \
4566 ( (This)->lpVtbl -> SetName(This,Name) )
4567
4568
4569#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
4570 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4571
4572
4573
4574#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
4575 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
4576
4577#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
4578 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
4579
4580#define ID3D12Resource_GetDesc(This,RetVal) \
4581 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4582
4583#define ID3D12Resource_GetGPUVirtualAddress(This) \
4584 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
4585
4586#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
4587 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
4588
4589#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
4590 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
4591
4592#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
4593 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
4594
4595#endif /* COBJMACROS */
4596
4597
4598#endif /* C style interface */
4599
4600
4601
4602
4603#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
4604
4605
4606#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
4607#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
4608
4609/* interface ID3D12CommandAllocator */
4610/* [unique][local][object][uuid] */
4611
4612
4613EXTERN_C const IID IID_ID3D12CommandAllocator;
4614
4615#if defined(__cplusplus) && !defined(CINTERFACE)
4616
4617 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
4618 ID3D12CommandAllocator : public ID3D12Pageable
4619 {
4620 public:
4621 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
4622
4623 };
4624
4625
4626#else /* C style interface */
4627
4628 typedef struct ID3D12CommandAllocatorVtbl
4629 {
4630 BEGIN_INTERFACE
4631
4632 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4633 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4634 ID3D12CommandAllocator * This,
4635 REFIID riid,
4636 _COM_Outptr_ void **ppvObject);
4637
4638 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4639 ULONG ( STDMETHODCALLTYPE *AddRef )(
4640 ID3D12CommandAllocator * This);
4641
4642 DECLSPEC_XFGVIRT(IUnknown, Release)
4643 ULONG ( STDMETHODCALLTYPE *Release )(
4644 ID3D12CommandAllocator * This);
4645
4646 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4647 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4648 ID3D12CommandAllocator * This,
4649 _In_ REFGUID guid,
4650 _Inout_ UINT *pDataSize,
4651 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4652
4653 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4654 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4655 ID3D12CommandAllocator * This,
4656 _In_ REFGUID guid,
4657 _In_ UINT DataSize,
4658 _In_reads_bytes_opt_( DataSize ) const void *pData);
4659
4660 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4661 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4662 ID3D12CommandAllocator * This,
4663 _In_ REFGUID guid,
4664 _In_opt_ const IUnknown *pData);
4665
4666 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4667 HRESULT ( STDMETHODCALLTYPE *SetName )(
4668 ID3D12CommandAllocator * This,
4669 _In_z_ LPCWSTR Name);
4670
4671 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4672 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4673 ID3D12CommandAllocator * This,
4674 REFIID riid,
4675 _COM_Outptr_opt_ void **ppvDevice);
4676
4677 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
4678 HRESULT ( STDMETHODCALLTYPE *Reset )(
4679 ID3D12CommandAllocator * This);
4680
4681 END_INTERFACE
4682 } ID3D12CommandAllocatorVtbl;
4683
4684 interface ID3D12CommandAllocator
4685 {
4686 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
4687 };
4688
4689
4690
4691#ifdef COBJMACROS
4692
4693
4694#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
4695 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4696
4697#define ID3D12CommandAllocator_AddRef(This) \
4698 ( (This)->lpVtbl -> AddRef(This) )
4699
4700#define ID3D12CommandAllocator_Release(This) \
4701 ( (This)->lpVtbl -> Release(This) )
4702
4703
4704#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
4705 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4706
4707#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
4708 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4709
4710#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
4711 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4712
4713#define ID3D12CommandAllocator_SetName(This,Name) \
4714 ( (This)->lpVtbl -> SetName(This,Name) )
4715
4716
4717#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
4718 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4719
4720
4721
4722#define ID3D12CommandAllocator_Reset(This) \
4723 ( (This)->lpVtbl -> Reset(This) )
4724
4725#endif /* COBJMACROS */
4726
4727
4728#endif /* C style interface */
4729
4730
4731
4732
4733#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
4734
4735
4736#ifndef __ID3D12Fence_INTERFACE_DEFINED__
4737#define __ID3D12Fence_INTERFACE_DEFINED__
4738
4739/* interface ID3D12Fence */
4740/* [unique][local][object][uuid] */
4741
4742
4743EXTERN_C const IID IID_ID3D12Fence;
4744
4745#if defined(__cplusplus) && !defined(CINTERFACE)
4746
4747 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
4748 ID3D12Fence : public ID3D12Pageable
4749 {
4750 public:
4751 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
4752
4753 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
4754 UINT64 Value,
4755 HANDLE hEvent) = 0;
4756
4757 virtual HRESULT STDMETHODCALLTYPE Signal(
4758 UINT64 Value) = 0;
4759
4760 };
4761
4762
4763#else /* C style interface */
4764
4765 typedef struct ID3D12FenceVtbl
4766 {
4767 BEGIN_INTERFACE
4768
4769 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4770 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4771 ID3D12Fence * This,
4772 REFIID riid,
4773 _COM_Outptr_ void **ppvObject);
4774
4775 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4776 ULONG ( STDMETHODCALLTYPE *AddRef )(
4777 ID3D12Fence * This);
4778
4779 DECLSPEC_XFGVIRT(IUnknown, Release)
4780 ULONG ( STDMETHODCALLTYPE *Release )(
4781 ID3D12Fence * This);
4782
4783 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4784 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4785 ID3D12Fence * This,
4786 _In_ REFGUID guid,
4787 _Inout_ UINT *pDataSize,
4788 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4789
4790 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4791 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4792 ID3D12Fence * This,
4793 _In_ REFGUID guid,
4794 _In_ UINT DataSize,
4795 _In_reads_bytes_opt_( DataSize ) const void *pData);
4796
4797 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4798 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4799 ID3D12Fence * This,
4800 _In_ REFGUID guid,
4801 _In_opt_ const IUnknown *pData);
4802
4803 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4804 HRESULT ( STDMETHODCALLTYPE *SetName )(
4805 ID3D12Fence * This,
4806 _In_z_ LPCWSTR Name);
4807
4808 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4809 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4810 ID3D12Fence * This,
4811 REFIID riid,
4812 _COM_Outptr_opt_ void **ppvDevice);
4813
4814 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4815 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4816 ID3D12Fence * This);
4817
4818 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4819 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4820 ID3D12Fence * This,
4821 UINT64 Value,
4822 HANDLE hEvent);
4823
4824 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4825 HRESULT ( STDMETHODCALLTYPE *Signal )(
4826 ID3D12Fence * This,
4827 UINT64 Value);
4828
4829 END_INTERFACE
4830 } ID3D12FenceVtbl;
4831
4832 interface ID3D12Fence
4833 {
4834 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
4835 };
4836
4837
4838
4839#ifdef COBJMACROS
4840
4841
4842#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
4843 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4844
4845#define ID3D12Fence_AddRef(This) \
4846 ( (This)->lpVtbl -> AddRef(This) )
4847
4848#define ID3D12Fence_Release(This) \
4849 ( (This)->lpVtbl -> Release(This) )
4850
4851
4852#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
4853 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4854
4855#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
4856 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4857
4858#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
4859 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4860
4861#define ID3D12Fence_SetName(This,Name) \
4862 ( (This)->lpVtbl -> SetName(This,Name) )
4863
4864
4865#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
4866 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4867
4868
4869
4870#define ID3D12Fence_GetCompletedValue(This) \
4871 ( (This)->lpVtbl -> GetCompletedValue(This) )
4872
4873#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
4874 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
4875
4876#define ID3D12Fence_Signal(This,Value) \
4877 ( (This)->lpVtbl -> Signal(This,Value) )
4878
4879#endif /* COBJMACROS */
4880
4881
4882#endif /* C style interface */
4883
4884
4885
4886
4887#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
4888
4889
4890#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
4891#define __ID3D12Fence1_INTERFACE_DEFINED__
4892
4893/* interface ID3D12Fence1 */
4894/* [unique][local][object][uuid] */
4895
4896
4897EXTERN_C const IID IID_ID3D12Fence1;
4898
4899#if defined(__cplusplus) && !defined(CINTERFACE)
4900
4901 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
4902 ID3D12Fence1 : public ID3D12Fence
4903 {
4904 public:
4905 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
4906
4907 };
4908
4909
4910#else /* C style interface */
4911
4912 typedef struct ID3D12Fence1Vtbl
4913 {
4914 BEGIN_INTERFACE
4915
4916 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4917 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4918 ID3D12Fence1 * This,
4919 REFIID riid,
4920 _COM_Outptr_ void **ppvObject);
4921
4922 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4923 ULONG ( STDMETHODCALLTYPE *AddRef )(
4924 ID3D12Fence1 * This);
4925
4926 DECLSPEC_XFGVIRT(IUnknown, Release)
4927 ULONG ( STDMETHODCALLTYPE *Release )(
4928 ID3D12Fence1 * This);
4929
4930 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4931 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4932 ID3D12Fence1 * This,
4933 _In_ REFGUID guid,
4934 _Inout_ UINT *pDataSize,
4935 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4936
4937 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4938 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4939 ID3D12Fence1 * This,
4940 _In_ REFGUID guid,
4941 _In_ UINT DataSize,
4942 _In_reads_bytes_opt_( DataSize ) const void *pData);
4943
4944 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4945 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4946 ID3D12Fence1 * This,
4947 _In_ REFGUID guid,
4948 _In_opt_ const IUnknown *pData);
4949
4950 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4951 HRESULT ( STDMETHODCALLTYPE *SetName )(
4952 ID3D12Fence1 * This,
4953 _In_z_ LPCWSTR Name);
4954
4955 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4956 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4957 ID3D12Fence1 * This,
4958 REFIID riid,
4959 _COM_Outptr_opt_ void **ppvDevice);
4960
4961 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4962 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4963 ID3D12Fence1 * This);
4964
4965 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4966 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4967 ID3D12Fence1 * This,
4968 UINT64 Value,
4969 HANDLE hEvent);
4970
4971 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4972 HRESULT ( STDMETHODCALLTYPE *Signal )(
4973 ID3D12Fence1 * This,
4974 UINT64 Value);
4975
4976 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
4977 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
4978 ID3D12Fence1 * This);
4979
4980 END_INTERFACE
4981 } ID3D12Fence1Vtbl;
4982
4983 interface ID3D12Fence1
4984 {
4985 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
4986 };
4987
4988
4989
4990#ifdef COBJMACROS
4991
4992
4993#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
4994 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4995
4996#define ID3D12Fence1_AddRef(This) \
4997 ( (This)->lpVtbl -> AddRef(This) )
4998
4999#define ID3D12Fence1_Release(This) \
5000 ( (This)->lpVtbl -> Release(This) )
5001
5002
5003#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5004 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5005
5006#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5007 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5008
5009#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5010 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5011
5012#define ID3D12Fence1_SetName(This,Name) \
5013 ( (This)->lpVtbl -> SetName(This,Name) )
5014
5015
5016#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5017 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5018
5019
5020
5021#define ID3D12Fence1_GetCompletedValue(This) \
5022 ( (This)->lpVtbl -> GetCompletedValue(This) )
5023
5024#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5025 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5026
5027#define ID3D12Fence1_Signal(This,Value) \
5028 ( (This)->lpVtbl -> Signal(This,Value) )
5029
5030
5031#define ID3D12Fence1_GetCreationFlags(This) \
5032 ( (This)->lpVtbl -> GetCreationFlags(This) )
5033
5034#endif /* COBJMACROS */
5035
5036
5037#endif /* C style interface */
5038
5039
5040
5041
5042#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5043
5044
5045#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5046#define __ID3D12PipelineState_INTERFACE_DEFINED__
5047
5048/* interface ID3D12PipelineState */
5049/* [unique][local][object][uuid] */
5050
5051
5052EXTERN_C const IID IID_ID3D12PipelineState;
5053
5054#if defined(__cplusplus) && !defined(CINTERFACE)
5055
5056 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5057 ID3D12PipelineState : public ID3D12Pageable
5058 {
5059 public:
5060 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5061 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5062
5063 };
5064
5065
5066#else /* C style interface */
5067
5068 typedef struct ID3D12PipelineStateVtbl
5069 {
5070 BEGIN_INTERFACE
5071
5072 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5073 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5074 ID3D12PipelineState * This,
5075 REFIID riid,
5076 _COM_Outptr_ void **ppvObject);
5077
5078 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5079 ULONG ( STDMETHODCALLTYPE *AddRef )(
5080 ID3D12PipelineState * This);
5081
5082 DECLSPEC_XFGVIRT(IUnknown, Release)
5083 ULONG ( STDMETHODCALLTYPE *Release )(
5084 ID3D12PipelineState * This);
5085
5086 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5087 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5088 ID3D12PipelineState * This,
5089 _In_ REFGUID guid,
5090 _Inout_ UINT *pDataSize,
5091 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5092
5093 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5094 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5095 ID3D12PipelineState * This,
5096 _In_ REFGUID guid,
5097 _In_ UINT DataSize,
5098 _In_reads_bytes_opt_( DataSize ) const void *pData);
5099
5100 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5101 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5102 ID3D12PipelineState * This,
5103 _In_ REFGUID guid,
5104 _In_opt_ const IUnknown *pData);
5105
5106 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5107 HRESULT ( STDMETHODCALLTYPE *SetName )(
5108 ID3D12PipelineState * This,
5109 _In_z_ LPCWSTR Name);
5110
5111 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5112 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5113 ID3D12PipelineState * This,
5114 REFIID riid,
5115 _COM_Outptr_opt_ void **ppvDevice);
5116
5117 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5118 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5119 ID3D12PipelineState * This,
5120 _COM_Outptr_ ID3DBlob **ppBlob);
5121
5122 END_INTERFACE
5123 } ID3D12PipelineStateVtbl;
5124
5125 interface ID3D12PipelineState
5126 {
5127 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5128 };
5129
5130
5131
5132#ifdef COBJMACROS
5133
5134
5135#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5136 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5137
5138#define ID3D12PipelineState_AddRef(This) \
5139 ( (This)->lpVtbl -> AddRef(This) )
5140
5141#define ID3D12PipelineState_Release(This) \
5142 ( (This)->lpVtbl -> Release(This) )
5143
5144
5145#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5146 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5147
5148#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5149 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5150
5151#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5152 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5153
5154#define ID3D12PipelineState_SetName(This,Name) \
5155 ( (This)->lpVtbl -> SetName(This,Name) )
5156
5157
5158#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5159 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5160
5161
5162
5163#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5164 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5165
5166#endif /* COBJMACROS */
5167
5168
5169#endif /* C style interface */
5170
5171
5172
5173
5174#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5175
5176
5177#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5178#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5179
5180/* interface ID3D12DescriptorHeap */
5181/* [unique][local][object][uuid] */
5182
5183
5184EXTERN_C const IID IID_ID3D12DescriptorHeap;
5185
5186#if defined(__cplusplus) && !defined(CINTERFACE)
5187
5188 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5189 ID3D12DescriptorHeap : public ID3D12Pageable
5190 {
5191 public:
5192 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5193
5194 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5195
5196 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
5197
5198 };
5199
5200
5201#else /* C style interface */
5202
5203 typedef struct ID3D12DescriptorHeapVtbl
5204 {
5205 BEGIN_INTERFACE
5206
5207 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5208 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5209 ID3D12DescriptorHeap * This,
5210 REFIID riid,
5211 _COM_Outptr_ void **ppvObject);
5212
5213 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5214 ULONG ( STDMETHODCALLTYPE *AddRef )(
5215 ID3D12DescriptorHeap * This);
5216
5217 DECLSPEC_XFGVIRT(IUnknown, Release)
5218 ULONG ( STDMETHODCALLTYPE *Release )(
5219 ID3D12DescriptorHeap * This);
5220
5221 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5222 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5223 ID3D12DescriptorHeap * This,
5224 _In_ REFGUID guid,
5225 _Inout_ UINT *pDataSize,
5226 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5227
5228 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5229 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5230 ID3D12DescriptorHeap * This,
5231 _In_ REFGUID guid,
5232 _In_ UINT DataSize,
5233 _In_reads_bytes_opt_( DataSize ) const void *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5236 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5237 ID3D12DescriptorHeap * This,
5238 _In_ REFGUID guid,
5239 _In_opt_ const IUnknown *pData);
5240
5241 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5242 HRESULT ( STDMETHODCALLTYPE *SetName )(
5243 ID3D12DescriptorHeap * This,
5244 _In_z_ LPCWSTR Name);
5245
5246 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5247 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5248 ID3D12DescriptorHeap * This,
5249 REFIID riid,
5250 _COM_Outptr_opt_ void **ppvDevice);
5251
5252 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
5253 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
5254 ID3D12DescriptorHeap * This,
5255 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
5256
5257 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
5258 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
5259 ID3D12DescriptorHeap * This,
5260 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
5261
5262 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
5263 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
5264 ID3D12DescriptorHeap * This,
5265 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
5266
5267 END_INTERFACE
5268 } ID3D12DescriptorHeapVtbl;
5269
5270 interface ID3D12DescriptorHeap
5271 {
5272 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
5273 };
5274
5275
5276
5277#ifdef COBJMACROS
5278
5279
5280#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
5281 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5282
5283#define ID3D12DescriptorHeap_AddRef(This) \
5284 ( (This)->lpVtbl -> AddRef(This) )
5285
5286#define ID3D12DescriptorHeap_Release(This) \
5287 ( (This)->lpVtbl -> Release(This) )
5288
5289
5290#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
5291 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5292
5293#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
5294 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5295
5296#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
5297 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5298
5299#define ID3D12DescriptorHeap_SetName(This,Name) \
5300 ( (This)->lpVtbl -> SetName(This,Name) )
5301
5302
5303#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
5304 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5305
5306
5307
5308#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
5309 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5310
5311#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
5312 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
5313
5314#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
5315 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
5316
5317#endif /* COBJMACROS */
5318
5319
5320#endif /* C style interface */
5321
5322
5323
5324
5325#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
5326
5327
5328#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
5329#define __ID3D12QueryHeap_INTERFACE_DEFINED__
5330
5331/* interface ID3D12QueryHeap */
5332/* [unique][local][object][uuid] */
5333
5334
5335EXTERN_C const IID IID_ID3D12QueryHeap;
5336
5337#if defined(__cplusplus) && !defined(CINTERFACE)
5338
5339 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
5340 ID3D12QueryHeap : public ID3D12Pageable
5341 {
5342 public:
5343 };
5344
5345
5346#else /* C style interface */
5347
5348 typedef struct ID3D12QueryHeapVtbl
5349 {
5350 BEGIN_INTERFACE
5351
5352 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5353 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5354 ID3D12QueryHeap * This,
5355 REFIID riid,
5356 _COM_Outptr_ void **ppvObject);
5357
5358 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5359 ULONG ( STDMETHODCALLTYPE *AddRef )(
5360 ID3D12QueryHeap * This);
5361
5362 DECLSPEC_XFGVIRT(IUnknown, Release)
5363 ULONG ( STDMETHODCALLTYPE *Release )(
5364 ID3D12QueryHeap * This);
5365
5366 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5367 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5368 ID3D12QueryHeap * This,
5369 _In_ REFGUID guid,
5370 _Inout_ UINT *pDataSize,
5371 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5372
5373 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5374 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5375 ID3D12QueryHeap * This,
5376 _In_ REFGUID guid,
5377 _In_ UINT DataSize,
5378 _In_reads_bytes_opt_( DataSize ) const void *pData);
5379
5380 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5381 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5382 ID3D12QueryHeap * This,
5383 _In_ REFGUID guid,
5384 _In_opt_ const IUnknown *pData);
5385
5386 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5387 HRESULT ( STDMETHODCALLTYPE *SetName )(
5388 ID3D12QueryHeap * This,
5389 _In_z_ LPCWSTR Name);
5390
5391 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5392 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5393 ID3D12QueryHeap * This,
5394 REFIID riid,
5395 _COM_Outptr_opt_ void **ppvDevice);
5396
5397 END_INTERFACE
5398 } ID3D12QueryHeapVtbl;
5399
5400 interface ID3D12QueryHeap
5401 {
5402 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
5403 };
5404
5405
5406
5407#ifdef COBJMACROS
5408
5409
5410#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
5411 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5412
5413#define ID3D12QueryHeap_AddRef(This) \
5414 ( (This)->lpVtbl -> AddRef(This) )
5415
5416#define ID3D12QueryHeap_Release(This) \
5417 ( (This)->lpVtbl -> Release(This) )
5418
5419
5420#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
5421 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5422
5423#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
5424 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5425
5426#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
5427 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5428
5429#define ID3D12QueryHeap_SetName(This,Name) \
5430 ( (This)->lpVtbl -> SetName(This,Name) )
5431
5432
5433#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
5434 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5435
5436
5437
5438#endif /* COBJMACROS */
5439
5440
5441#endif /* C style interface */
5442
5443
5444
5445
5446#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
5447
5448
5449#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
5450#define __ID3D12CommandSignature_INTERFACE_DEFINED__
5451
5452/* interface ID3D12CommandSignature */
5453/* [unique][local][object][uuid] */
5454
5455
5456EXTERN_C const IID IID_ID3D12CommandSignature;
5457
5458#if defined(__cplusplus) && !defined(CINTERFACE)
5459
5460 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
5461 ID3D12CommandSignature : public ID3D12Pageable
5462 {
5463 public:
5464 };
5465
5466
5467#else /* C style interface */
5468
5469 typedef struct ID3D12CommandSignatureVtbl
5470 {
5471 BEGIN_INTERFACE
5472
5473 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5474 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5475 ID3D12CommandSignature * This,
5476 REFIID riid,
5477 _COM_Outptr_ void **ppvObject);
5478
5479 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5480 ULONG ( STDMETHODCALLTYPE *AddRef )(
5481 ID3D12CommandSignature * This);
5482
5483 DECLSPEC_XFGVIRT(IUnknown, Release)
5484 ULONG ( STDMETHODCALLTYPE *Release )(
5485 ID3D12CommandSignature * This);
5486
5487 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5488 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5489 ID3D12CommandSignature * This,
5490 _In_ REFGUID guid,
5491 _Inout_ UINT *pDataSize,
5492 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5493
5494 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5495 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5496 ID3D12CommandSignature * This,
5497 _In_ REFGUID guid,
5498 _In_ UINT DataSize,
5499 _In_reads_bytes_opt_( DataSize ) const void *pData);
5500
5501 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5502 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5503 ID3D12CommandSignature * This,
5504 _In_ REFGUID guid,
5505 _In_opt_ const IUnknown *pData);
5506
5507 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5508 HRESULT ( STDMETHODCALLTYPE *SetName )(
5509 ID3D12CommandSignature * This,
5510 _In_z_ LPCWSTR Name);
5511
5512 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5513 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5514 ID3D12CommandSignature * This,
5515 REFIID riid,
5516 _COM_Outptr_opt_ void **ppvDevice);
5517
5518 END_INTERFACE
5519 } ID3D12CommandSignatureVtbl;
5520
5521 interface ID3D12CommandSignature
5522 {
5523 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
5524 };
5525
5526
5527
5528#ifdef COBJMACROS
5529
5530
5531#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
5532 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5533
5534#define ID3D12CommandSignature_AddRef(This) \
5535 ( (This)->lpVtbl -> AddRef(This) )
5536
5537#define ID3D12CommandSignature_Release(This) \
5538 ( (This)->lpVtbl -> Release(This) )
5539
5540
5541#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
5542 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5543
5544#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
5545 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5546
5547#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
5548 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5549
5550#define ID3D12CommandSignature_SetName(This,Name) \
5551 ( (This)->lpVtbl -> SetName(This,Name) )
5552
5553
5554#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
5555 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5556
5557
5558
5559#endif /* COBJMACROS */
5560
5561
5562#endif /* C style interface */
5563
5564
5565
5566
5567#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
5568
5569
5570#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
5571#define __ID3D12CommandList_INTERFACE_DEFINED__
5572
5573/* interface ID3D12CommandList */
5574/* [unique][local][object][uuid] */
5575
5576
5577EXTERN_C const IID IID_ID3D12CommandList;
5578
5579#if defined(__cplusplus) && !defined(CINTERFACE)
5580
5581 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
5582 ID3D12CommandList : public ID3D12DeviceChild
5583 {
5584 public:
5585 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
5586
5587 };
5588
5589
5590#else /* C style interface */
5591
5592 typedef struct ID3D12CommandListVtbl
5593 {
5594 BEGIN_INTERFACE
5595
5596 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5597 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5598 ID3D12CommandList * This,
5599 REFIID riid,
5600 _COM_Outptr_ void **ppvObject);
5601
5602 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5603 ULONG ( STDMETHODCALLTYPE *AddRef )(
5604 ID3D12CommandList * This);
5605
5606 DECLSPEC_XFGVIRT(IUnknown, Release)
5607 ULONG ( STDMETHODCALLTYPE *Release )(
5608 ID3D12CommandList * This);
5609
5610 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5611 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5612 ID3D12CommandList * This,
5613 _In_ REFGUID guid,
5614 _Inout_ UINT *pDataSize,
5615 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5616
5617 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5618 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5619 ID3D12CommandList * This,
5620 _In_ REFGUID guid,
5621 _In_ UINT DataSize,
5622 _In_reads_bytes_opt_( DataSize ) const void *pData);
5623
5624 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5625 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5626 ID3D12CommandList * This,
5627 _In_ REFGUID guid,
5628 _In_opt_ const IUnknown *pData);
5629
5630 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5631 HRESULT ( STDMETHODCALLTYPE *SetName )(
5632 ID3D12CommandList * This,
5633 _In_z_ LPCWSTR Name);
5634
5635 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5636 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5637 ID3D12CommandList * This,
5638 REFIID riid,
5639 _COM_Outptr_opt_ void **ppvDevice);
5640
5641 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5642 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5643 ID3D12CommandList * This);
5644
5645 END_INTERFACE
5646 } ID3D12CommandListVtbl;
5647
5648 interface ID3D12CommandList
5649 {
5650 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
5651 };
5652
5653
5654
5655#ifdef COBJMACROS
5656
5657
5658#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
5659 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5660
5661#define ID3D12CommandList_AddRef(This) \
5662 ( (This)->lpVtbl -> AddRef(This) )
5663
5664#define ID3D12CommandList_Release(This) \
5665 ( (This)->lpVtbl -> Release(This) )
5666
5667
5668#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
5669 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5670
5671#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
5672 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5673
5674#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
5675 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5676
5677#define ID3D12CommandList_SetName(This,Name) \
5678 ( (This)->lpVtbl -> SetName(This,Name) )
5679
5680
5681#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
5682 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5683
5684
5685#define ID3D12CommandList_GetType(This) \
5686 ( (This)->lpVtbl -> GetType(This) )
5687
5688#endif /* COBJMACROS */
5689
5690
5691#endif /* C style interface */
5692
5693
5694
5695
5696#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
5697
5698
5699#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5700#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5701
5702/* interface ID3D12GraphicsCommandList */
5703/* [unique][local][object][uuid] */
5704
5705
5706EXTERN_C const IID IID_ID3D12GraphicsCommandList;
5707
5708#if defined(__cplusplus) && !defined(CINTERFACE)
5709
5710 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
5711 ID3D12GraphicsCommandList : public ID3D12CommandList
5712 {
5713 public:
5714 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
5715
5716 virtual HRESULT STDMETHODCALLTYPE Reset(
5717 _In_ ID3D12CommandAllocator *pAllocator,
5718 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
5719
5720 virtual void STDMETHODCALLTYPE ClearState(
5721 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
5722
5723 virtual void STDMETHODCALLTYPE DrawInstanced(
5724 _In_ UINT VertexCountPerInstance,
5725 _In_ UINT InstanceCount,
5726 _In_ UINT StartVertexLocation,
5727 _In_ UINT StartInstanceLocation) = 0;
5728
5729 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
5730 _In_ UINT IndexCountPerInstance,
5731 _In_ UINT InstanceCount,
5732 _In_ UINT StartIndexLocation,
5733 _In_ INT BaseVertexLocation,
5734 _In_ UINT StartInstanceLocation) = 0;
5735
5736 virtual void STDMETHODCALLTYPE Dispatch(
5737 _In_ UINT ThreadGroupCountX,
5738 _In_ UINT ThreadGroupCountY,
5739 _In_ UINT ThreadGroupCountZ) = 0;
5740
5741 virtual void STDMETHODCALLTYPE CopyBufferRegion(
5742 _In_ ID3D12Resource *pDstBuffer,
5743 UINT64 DstOffset,
5744 _In_ ID3D12Resource *pSrcBuffer,
5745 UINT64 SrcOffset,
5746 UINT64 NumBytes) = 0;
5747
5748 virtual void STDMETHODCALLTYPE CopyTextureRegion(
5749 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
5750 UINT DstX,
5751 UINT DstY,
5752 UINT DstZ,
5753 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
5754 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5755
5756 virtual void STDMETHODCALLTYPE CopyResource(
5757 _In_ ID3D12Resource *pDstResource,
5758 _In_ ID3D12Resource *pSrcResource) = 0;
5759
5760 virtual void STDMETHODCALLTYPE CopyTiles(
5761 _In_ ID3D12Resource *pTiledResource,
5762 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
5763 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
5764 _In_ ID3D12Resource *pBuffer,
5765 UINT64 BufferStartOffsetInBytes,
5766 D3D12_TILE_COPY_FLAGS Flags) = 0;
5767
5768 virtual void STDMETHODCALLTYPE ResolveSubresource(
5769 _In_ ID3D12Resource *pDstResource,
5770 _In_ UINT DstSubresource,
5771 _In_ ID3D12Resource *pSrcResource,
5772 _In_ UINT SrcSubresource,
5773 _In_ DXGI_FORMAT Format) = 0;
5774
5775 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
5776 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
5777
5778 virtual void STDMETHODCALLTYPE RSSetViewports(
5779 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
5780 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
5781
5782 virtual void STDMETHODCALLTYPE RSSetScissorRects(
5783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
5784 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
5785
5786 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
5787 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
5788
5789 virtual void STDMETHODCALLTYPE OMSetStencilRef(
5790 _In_ UINT StencilRef) = 0;
5791
5792 virtual void STDMETHODCALLTYPE SetPipelineState(
5793 _In_ ID3D12PipelineState *pPipelineState) = 0;
5794
5795 virtual void STDMETHODCALLTYPE ResourceBarrier(
5796 _In_ UINT NumBarriers,
5797 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
5798
5799 virtual void STDMETHODCALLTYPE ExecuteBundle(
5800 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
5801
5802 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
5803 _In_ UINT NumDescriptorHeaps,
5804 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
5805
5806 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
5807 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5808
5809 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
5810 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5811
5812 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
5813 _In_ UINT RootParameterIndex,
5814 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5815
5816 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
5817 _In_ UINT RootParameterIndex,
5818 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5819
5820 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
5821 _In_ UINT RootParameterIndex,
5822 _In_ UINT SrcData,
5823 _In_ UINT DestOffsetIn32BitValues) = 0;
5824
5825 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
5826 _In_ UINT RootParameterIndex,
5827 _In_ UINT SrcData,
5828 _In_ UINT DestOffsetIn32BitValues) = 0;
5829
5830 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
5831 _In_ UINT RootParameterIndex,
5832 _In_ UINT Num32BitValuesToSet,
5833 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5834 _In_ UINT DestOffsetIn32BitValues) = 0;
5835
5836 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
5837 _In_ UINT RootParameterIndex,
5838 _In_ UINT Num32BitValuesToSet,
5839 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5840 _In_ UINT DestOffsetIn32BitValues) = 0;
5841
5842 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
5843 _In_ UINT RootParameterIndex,
5844 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5845
5846 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
5847 _In_ UINT RootParameterIndex,
5848 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5849
5850 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
5851 _In_ UINT RootParameterIndex,
5852 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5853
5854 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
5855 _In_ UINT RootParameterIndex,
5856 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5857
5858 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
5859 _In_ UINT RootParameterIndex,
5860 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5861
5862 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
5863 _In_ UINT RootParameterIndex,
5864 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5865
5866 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
5867 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
5868
5869 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
5870 _In_ UINT StartSlot,
5871 _In_ UINT NumViews,
5872 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
5873
5874 virtual void STDMETHODCALLTYPE SOSetTargets(
5875 _In_ UINT StartSlot,
5876 _In_ UINT NumViews,
5877 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
5878
5879 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
5880 _In_ UINT NumRenderTargetDescriptors,
5881 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
5882 _In_ BOOL RTsSingleHandleToDescriptorRange,
5883 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
5884
5885 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
5886 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
5887 _In_ D3D12_CLEAR_FLAGS ClearFlags,
5888 _In_ FLOAT Depth,
5889 _In_ UINT8 Stencil,
5890 _In_ UINT NumRects,
5891 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5892
5893 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
5894 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
5895 _In_ const FLOAT ColorRGBA[ 4 ],
5896 _In_ UINT NumRects,
5897 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5898
5899 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
5900 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5901 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5902 _In_ ID3D12Resource *pResource,
5903 _In_ const UINT Values[ 4 ],
5904 _In_ UINT NumRects,
5905 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5906
5907 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
5908 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5909 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5910 _In_ ID3D12Resource *pResource,
5911 _In_ const FLOAT Values[ 4 ],
5912 _In_ UINT NumRects,
5913 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5914
5915 virtual void STDMETHODCALLTYPE DiscardResource(
5916 _In_ ID3D12Resource *pResource,
5917 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
5918
5919 virtual void STDMETHODCALLTYPE BeginQuery(
5920 _In_ ID3D12QueryHeap *pQueryHeap,
5921 _In_ D3D12_QUERY_TYPE Type,
5922 _In_ UINT Index) = 0;
5923
5924 virtual void STDMETHODCALLTYPE EndQuery(
5925 _In_ ID3D12QueryHeap *pQueryHeap,
5926 _In_ D3D12_QUERY_TYPE Type,
5927 _In_ UINT Index) = 0;
5928
5929 virtual void STDMETHODCALLTYPE ResolveQueryData(
5930 _In_ ID3D12QueryHeap *pQueryHeap,
5931 _In_ D3D12_QUERY_TYPE Type,
5932 _In_ UINT StartIndex,
5933 _In_ UINT NumQueries,
5934 _In_ ID3D12Resource *pDestinationBuffer,
5935 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
5936
5937 virtual void STDMETHODCALLTYPE SetPredication(
5938 _In_opt_ ID3D12Resource *pBuffer,
5939 _In_ UINT64 AlignedBufferOffset,
5940 _In_ D3D12_PREDICATION_OP Operation) = 0;
5941
5942 virtual void STDMETHODCALLTYPE SetMarker(
5943 UINT Metadata,
5944 _In_reads_bytes_opt_(Size) const void *pData,
5945 UINT Size) = 0;
5946
5947 virtual void STDMETHODCALLTYPE BeginEvent(
5948 UINT Metadata,
5949 _In_reads_bytes_opt_(Size) const void *pData,
5950 UINT Size) = 0;
5951
5952 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
5953
5954 virtual void STDMETHODCALLTYPE ExecuteIndirect(
5955 _In_ ID3D12CommandSignature *pCommandSignature,
5956 _In_ UINT MaxCommandCount,
5957 _In_ ID3D12Resource *pArgumentBuffer,
5958 _In_ UINT64 ArgumentBufferOffset,
5959 _In_opt_ ID3D12Resource *pCountBuffer,
5960 _In_ UINT64 CountBufferOffset) = 0;
5961
5962 };
5963
5964
5965#else /* C style interface */
5966
5967 typedef struct ID3D12GraphicsCommandListVtbl
5968 {
5969 BEGIN_INTERFACE
5970
5971 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5972 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5973 ID3D12GraphicsCommandList * This,
5974 REFIID riid,
5975 _COM_Outptr_ void **ppvObject);
5976
5977 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5978 ULONG ( STDMETHODCALLTYPE *AddRef )(
5979 ID3D12GraphicsCommandList * This);
5980
5981 DECLSPEC_XFGVIRT(IUnknown, Release)
5982 ULONG ( STDMETHODCALLTYPE *Release )(
5983 ID3D12GraphicsCommandList * This);
5984
5985 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5986 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5987 ID3D12GraphicsCommandList * This,
5988 _In_ REFGUID guid,
5989 _Inout_ UINT *pDataSize,
5990 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5991
5992 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5993 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5994 ID3D12GraphicsCommandList * This,
5995 _In_ REFGUID guid,
5996 _In_ UINT DataSize,
5997 _In_reads_bytes_opt_( DataSize ) const void *pData);
5998
5999 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6000 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6001 ID3D12GraphicsCommandList * This,
6002 _In_ REFGUID guid,
6003 _In_opt_ const IUnknown *pData);
6004
6005 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6006 HRESULT ( STDMETHODCALLTYPE *SetName )(
6007 ID3D12GraphicsCommandList * This,
6008 _In_z_ LPCWSTR Name);
6009
6010 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6011 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6012 ID3D12GraphicsCommandList * This,
6013 REFIID riid,
6014 _COM_Outptr_opt_ void **ppvDevice);
6015
6016 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6017 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6018 ID3D12GraphicsCommandList * This);
6019
6020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6021 HRESULT ( STDMETHODCALLTYPE *Close )(
6022 ID3D12GraphicsCommandList * This);
6023
6024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6025 HRESULT ( STDMETHODCALLTYPE *Reset )(
6026 ID3D12GraphicsCommandList * This,
6027 _In_ ID3D12CommandAllocator *pAllocator,
6028 _In_opt_ ID3D12PipelineState *pInitialState);
6029
6030 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6031 void ( STDMETHODCALLTYPE *ClearState )(
6032 ID3D12GraphicsCommandList * This,
6033 _In_opt_ ID3D12PipelineState *pPipelineState);
6034
6035 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6036 void ( STDMETHODCALLTYPE *DrawInstanced )(
6037 ID3D12GraphicsCommandList * This,
6038 _In_ UINT VertexCountPerInstance,
6039 _In_ UINT InstanceCount,
6040 _In_ UINT StartVertexLocation,
6041 _In_ UINT StartInstanceLocation);
6042
6043 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6044 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6045 ID3D12GraphicsCommandList * This,
6046 _In_ UINT IndexCountPerInstance,
6047 _In_ UINT InstanceCount,
6048 _In_ UINT StartIndexLocation,
6049 _In_ INT BaseVertexLocation,
6050 _In_ UINT StartInstanceLocation);
6051
6052 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6053 void ( STDMETHODCALLTYPE *Dispatch )(
6054 ID3D12GraphicsCommandList * This,
6055 _In_ UINT ThreadGroupCountX,
6056 _In_ UINT ThreadGroupCountY,
6057 _In_ UINT ThreadGroupCountZ);
6058
6059 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6060 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6061 ID3D12GraphicsCommandList * This,
6062 _In_ ID3D12Resource *pDstBuffer,
6063 UINT64 DstOffset,
6064 _In_ ID3D12Resource *pSrcBuffer,
6065 UINT64 SrcOffset,
6066 UINT64 NumBytes);
6067
6068 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6069 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6070 ID3D12GraphicsCommandList * This,
6071 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6072 UINT DstX,
6073 UINT DstY,
6074 UINT DstZ,
6075 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6076 _In_opt_ const D3D12_BOX *pSrcBox);
6077
6078 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6079 void ( STDMETHODCALLTYPE *CopyResource )(
6080 ID3D12GraphicsCommandList * This,
6081 _In_ ID3D12Resource *pDstResource,
6082 _In_ ID3D12Resource *pSrcResource);
6083
6084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6085 void ( STDMETHODCALLTYPE *CopyTiles )(
6086 ID3D12GraphicsCommandList * This,
6087 _In_ ID3D12Resource *pTiledResource,
6088 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6089 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6090 _In_ ID3D12Resource *pBuffer,
6091 UINT64 BufferStartOffsetInBytes,
6092 D3D12_TILE_COPY_FLAGS Flags);
6093
6094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6095 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6096 ID3D12GraphicsCommandList * This,
6097 _In_ ID3D12Resource *pDstResource,
6098 _In_ UINT DstSubresource,
6099 _In_ ID3D12Resource *pSrcResource,
6100 _In_ UINT SrcSubresource,
6101 _In_ DXGI_FORMAT Format);
6102
6103 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6104 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6105 ID3D12GraphicsCommandList * This,
6106 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6107
6108 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6109 void ( STDMETHODCALLTYPE *RSSetViewports )(
6110 ID3D12GraphicsCommandList * This,
6111 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6112 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6113
6114 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6115 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6116 ID3D12GraphicsCommandList * This,
6117 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6118 _In_reads_( NumRects) const D3D12_RECT *pRects);
6119
6120 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6121 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6122 ID3D12GraphicsCommandList * This,
6123 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6124
6125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6126 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6127 ID3D12GraphicsCommandList * This,
6128 _In_ UINT StencilRef);
6129
6130 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6131 void ( STDMETHODCALLTYPE *SetPipelineState )(
6132 ID3D12GraphicsCommandList * This,
6133 _In_ ID3D12PipelineState *pPipelineState);
6134
6135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6136 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6137 ID3D12GraphicsCommandList * This,
6138 _In_ UINT NumBarriers,
6139 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6140
6141 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6142 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6143 ID3D12GraphicsCommandList * This,
6144 _In_ ID3D12GraphicsCommandList *pCommandList);
6145
6146 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6147 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6148 ID3D12GraphicsCommandList * This,
6149 _In_ UINT NumDescriptorHeaps,
6150 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6151
6152 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6153 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6154 ID3D12GraphicsCommandList * This,
6155 _In_opt_ ID3D12RootSignature *pRootSignature);
6156
6157 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6158 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6159 ID3D12GraphicsCommandList * This,
6160 _In_opt_ ID3D12RootSignature *pRootSignature);
6161
6162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6163 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6164 ID3D12GraphicsCommandList * This,
6165 _In_ UINT RootParameterIndex,
6166 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6167
6168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6169 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6170 ID3D12GraphicsCommandList * This,
6171 _In_ UINT RootParameterIndex,
6172 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6173
6174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6175 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6176 ID3D12GraphicsCommandList * This,
6177 _In_ UINT RootParameterIndex,
6178 _In_ UINT SrcData,
6179 _In_ UINT DestOffsetIn32BitValues);
6180
6181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6182 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6183 ID3D12GraphicsCommandList * This,
6184 _In_ UINT RootParameterIndex,
6185 _In_ UINT SrcData,
6186 _In_ UINT DestOffsetIn32BitValues);
6187
6188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6189 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6190 ID3D12GraphicsCommandList * This,
6191 _In_ UINT RootParameterIndex,
6192 _In_ UINT Num32BitValuesToSet,
6193 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6194 _In_ UINT DestOffsetIn32BitValues);
6195
6196 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6197 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6198 ID3D12GraphicsCommandList * This,
6199 _In_ UINT RootParameterIndex,
6200 _In_ UINT Num32BitValuesToSet,
6201 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6202 _In_ UINT DestOffsetIn32BitValues);
6203
6204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6205 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6206 ID3D12GraphicsCommandList * This,
6207 _In_ UINT RootParameterIndex,
6208 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6209
6210 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6211 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6212 ID3D12GraphicsCommandList * This,
6213 _In_ UINT RootParameterIndex,
6214 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6215
6216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6217 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6218 ID3D12GraphicsCommandList * This,
6219 _In_ UINT RootParameterIndex,
6220 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6221
6222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6223 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6224 ID3D12GraphicsCommandList * This,
6225 _In_ UINT RootParameterIndex,
6226 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6227
6228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6229 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6230 ID3D12GraphicsCommandList * This,
6231 _In_ UINT RootParameterIndex,
6232 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6233
6234 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6235 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6236 ID3D12GraphicsCommandList * This,
6237 _In_ UINT RootParameterIndex,
6238 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6239
6240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6241 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6242 ID3D12GraphicsCommandList * This,
6243 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6244
6245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6246 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6247 ID3D12GraphicsCommandList * This,
6248 _In_ UINT StartSlot,
6249 _In_ UINT NumViews,
6250 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6251
6252 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6253 void ( STDMETHODCALLTYPE *SOSetTargets )(
6254 ID3D12GraphicsCommandList * This,
6255 _In_ UINT StartSlot,
6256 _In_ UINT NumViews,
6257 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6258
6259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6260 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6261 ID3D12GraphicsCommandList * This,
6262 _In_ UINT NumRenderTargetDescriptors,
6263 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6264 _In_ BOOL RTsSingleHandleToDescriptorRange,
6265 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6266
6267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6268 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6269 ID3D12GraphicsCommandList * This,
6270 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6271 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6272 _In_ FLOAT Depth,
6273 _In_ UINT8 Stencil,
6274 _In_ UINT NumRects,
6275 _In_reads_(NumRects) const D3D12_RECT *pRects);
6276
6277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6278 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6279 ID3D12GraphicsCommandList * This,
6280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6281 _In_ const FLOAT ColorRGBA[ 4 ],
6282 _In_ UINT NumRects,
6283 _In_reads_(NumRects) const D3D12_RECT *pRects);
6284
6285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6286 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6287 ID3D12GraphicsCommandList * This,
6288 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6289 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6290 _In_ ID3D12Resource *pResource,
6291 _In_ const UINT Values[ 4 ],
6292 _In_ UINT NumRects,
6293 _In_reads_(NumRects) const D3D12_RECT *pRects);
6294
6295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6296 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6297 ID3D12GraphicsCommandList * This,
6298 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6299 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6300 _In_ ID3D12Resource *pResource,
6301 _In_ const FLOAT Values[ 4 ],
6302 _In_ UINT NumRects,
6303 _In_reads_(NumRects) const D3D12_RECT *pRects);
6304
6305 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6306 void ( STDMETHODCALLTYPE *DiscardResource )(
6307 ID3D12GraphicsCommandList * This,
6308 _In_ ID3D12Resource *pResource,
6309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6310
6311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6312 void ( STDMETHODCALLTYPE *BeginQuery )(
6313 ID3D12GraphicsCommandList * This,
6314 _In_ ID3D12QueryHeap *pQueryHeap,
6315 _In_ D3D12_QUERY_TYPE Type,
6316 _In_ UINT Index);
6317
6318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6319 void ( STDMETHODCALLTYPE *EndQuery )(
6320 ID3D12GraphicsCommandList * This,
6321 _In_ ID3D12QueryHeap *pQueryHeap,
6322 _In_ D3D12_QUERY_TYPE Type,
6323 _In_ UINT Index);
6324
6325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6327 ID3D12GraphicsCommandList * This,
6328 _In_ ID3D12QueryHeap *pQueryHeap,
6329 _In_ D3D12_QUERY_TYPE Type,
6330 _In_ UINT StartIndex,
6331 _In_ UINT NumQueries,
6332 _In_ ID3D12Resource *pDestinationBuffer,
6333 _In_ UINT64 AlignedDestinationBufferOffset);
6334
6335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
6336 void ( STDMETHODCALLTYPE *SetPredication )(
6337 ID3D12GraphicsCommandList * This,
6338 _In_opt_ ID3D12Resource *pBuffer,
6339 _In_ UINT64 AlignedBufferOffset,
6340 _In_ D3D12_PREDICATION_OP Operation);
6341
6342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
6343 void ( STDMETHODCALLTYPE *SetMarker )(
6344 ID3D12GraphicsCommandList * This,
6345 UINT Metadata,
6346 _In_reads_bytes_opt_(Size) const void *pData,
6347 UINT Size);
6348
6349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
6350 void ( STDMETHODCALLTYPE *BeginEvent )(
6351 ID3D12GraphicsCommandList * This,
6352 UINT Metadata,
6353 _In_reads_bytes_opt_(Size) const void *pData,
6354 UINT Size);
6355
6356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
6357 void ( STDMETHODCALLTYPE *EndEvent )(
6358 ID3D12GraphicsCommandList * This);
6359
6360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
6361 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
6362 ID3D12GraphicsCommandList * This,
6363 _In_ ID3D12CommandSignature *pCommandSignature,
6364 _In_ UINT MaxCommandCount,
6365 _In_ ID3D12Resource *pArgumentBuffer,
6366 _In_ UINT64 ArgumentBufferOffset,
6367 _In_opt_ ID3D12Resource *pCountBuffer,
6368 _In_ UINT64 CountBufferOffset);
6369
6370 END_INTERFACE
6371 } ID3D12GraphicsCommandListVtbl;
6372
6373 interface ID3D12GraphicsCommandList
6374 {
6375 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
6376 };
6377
6378
6379
6380#ifdef COBJMACROS
6381
6382
6383#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
6384 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6385
6386#define ID3D12GraphicsCommandList_AddRef(This) \
6387 ( (This)->lpVtbl -> AddRef(This) )
6388
6389#define ID3D12GraphicsCommandList_Release(This) \
6390 ( (This)->lpVtbl -> Release(This) )
6391
6392
6393#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
6394 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6395
6396#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
6397 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6398
6399#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
6400 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6401
6402#define ID3D12GraphicsCommandList_SetName(This,Name) \
6403 ( (This)->lpVtbl -> SetName(This,Name) )
6404
6405
6406#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
6407 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6408
6409
6410#define ID3D12GraphicsCommandList_GetType(This) \
6411 ( (This)->lpVtbl -> GetType(This) )
6412
6413
6414#define ID3D12GraphicsCommandList_Close(This) \
6415 ( (This)->lpVtbl -> Close(This) )
6416
6417#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
6418 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
6419
6420#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
6421 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
6422
6423#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
6424 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
6425
6426#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
6427 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
6428
6429#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
6430 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
6431
6432#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
6433 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
6434
6435#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
6436 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
6437
6438#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
6439 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
6440
6441#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
6442 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
6443
6444#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
6445 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
6446
6447#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
6448 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
6449
6450#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
6451 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
6452
6453#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
6454 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
6455
6456#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
6457 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
6458
6459#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
6460 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
6461
6462#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
6463 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
6464
6465#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
6466 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6467
6468#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
6469 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
6470
6471#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
6472 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
6473
6474#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
6475 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
6476
6477#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
6478 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
6479
6480#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6481 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6482
6483#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6484 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6485
6486#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6487 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6488
6489#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6490 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6491
6492#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6493 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6494
6495#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6496 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6497
6498#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6499 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6500
6501#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6502 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6503
6504#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6505 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6506
6507#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6508 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6509
6510#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6511 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6512
6513#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6514 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6515
6516#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
6517 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
6518
6519#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
6520 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
6521
6522#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
6523 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
6524
6525#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
6526 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
6527
6528#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
6529 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
6530
6531#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
6532 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
6533
6534#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6535 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6536
6537#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6538 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6539
6540#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
6541 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6542
6543#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
6544 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6545
6546#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
6547 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6548
6549#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6550 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6551
6552#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6553 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6554
6555#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
6556 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6557
6558#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
6559 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6560
6561#define ID3D12GraphicsCommandList_EndEvent(This) \
6562 ( (This)->lpVtbl -> EndEvent(This) )
6563
6564#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
6565 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
6566
6567#endif /* COBJMACROS */
6568
6569
6570#endif /* C style interface */
6571
6572
6573
6574
6575#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
6576
6577
6578#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6579#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6580
6581/* interface ID3D12GraphicsCommandList1 */
6582/* [unique][local][object][uuid] */
6583
6584
6585EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
6586
6587#if defined(__cplusplus) && !defined(CINTERFACE)
6588
6589 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
6590 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
6591 {
6592 public:
6593 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
6594 _In_ ID3D12Resource *pDstBuffer,
6595 UINT64 DstOffset,
6596 _In_ ID3D12Resource *pSrcBuffer,
6597 UINT64 SrcOffset,
6598 UINT Dependencies,
6599 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6600 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6601
6602 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
6603 _In_ ID3D12Resource *pDstBuffer,
6604 UINT64 DstOffset,
6605 _In_ ID3D12Resource *pSrcBuffer,
6606 UINT64 SrcOffset,
6607 UINT Dependencies,
6608 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6609 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6610
6611 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
6612 _In_ FLOAT Min,
6613 _In_ FLOAT Max) = 0;
6614
6615 virtual void STDMETHODCALLTYPE SetSamplePositions(
6616 _In_ UINT NumSamplesPerPixel,
6617 _In_ UINT NumPixels,
6618 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
6619
6620 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
6621 _In_ ID3D12Resource *pDstResource,
6622 _In_ UINT DstSubresource,
6623 _In_ UINT DstX,
6624 _In_ UINT DstY,
6625 _In_ ID3D12Resource *pSrcResource,
6626 _In_ UINT SrcSubresource,
6627 _In_opt_ D3D12_RECT *pSrcRect,
6628 _In_ DXGI_FORMAT Format,
6629 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
6630
6631 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
6632 _In_ UINT Mask) = 0;
6633
6634 };
6635
6636
6637#else /* C style interface */
6638
6639 typedef struct ID3D12GraphicsCommandList1Vtbl
6640 {
6641 BEGIN_INTERFACE
6642
6643 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6644 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6645 ID3D12GraphicsCommandList1 * This,
6646 REFIID riid,
6647 _COM_Outptr_ void **ppvObject);
6648
6649 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6650 ULONG ( STDMETHODCALLTYPE *AddRef )(
6651 ID3D12GraphicsCommandList1 * This);
6652
6653 DECLSPEC_XFGVIRT(IUnknown, Release)
6654 ULONG ( STDMETHODCALLTYPE *Release )(
6655 ID3D12GraphicsCommandList1 * This);
6656
6657 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6658 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6659 ID3D12GraphicsCommandList1 * This,
6660 _In_ REFGUID guid,
6661 _Inout_ UINT *pDataSize,
6662 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6663
6664 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6665 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6666 ID3D12GraphicsCommandList1 * This,
6667 _In_ REFGUID guid,
6668 _In_ UINT DataSize,
6669 _In_reads_bytes_opt_( DataSize ) const void *pData);
6670
6671 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6672 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6673 ID3D12GraphicsCommandList1 * This,
6674 _In_ REFGUID guid,
6675 _In_opt_ const IUnknown *pData);
6676
6677 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6678 HRESULT ( STDMETHODCALLTYPE *SetName )(
6679 ID3D12GraphicsCommandList1 * This,
6680 _In_z_ LPCWSTR Name);
6681
6682 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6683 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6684 ID3D12GraphicsCommandList1 * This,
6685 REFIID riid,
6686 _COM_Outptr_opt_ void **ppvDevice);
6687
6688 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6689 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6690 ID3D12GraphicsCommandList1 * This);
6691
6692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6693 HRESULT ( STDMETHODCALLTYPE *Close )(
6694 ID3D12GraphicsCommandList1 * This);
6695
6696 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6697 HRESULT ( STDMETHODCALLTYPE *Reset )(
6698 ID3D12GraphicsCommandList1 * This,
6699 _In_ ID3D12CommandAllocator *pAllocator,
6700 _In_opt_ ID3D12PipelineState *pInitialState);
6701
6702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6703 void ( STDMETHODCALLTYPE *ClearState )(
6704 ID3D12GraphicsCommandList1 * This,
6705 _In_opt_ ID3D12PipelineState *pPipelineState);
6706
6707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6708 void ( STDMETHODCALLTYPE *DrawInstanced )(
6709 ID3D12GraphicsCommandList1 * This,
6710 _In_ UINT VertexCountPerInstance,
6711 _In_ UINT InstanceCount,
6712 _In_ UINT StartVertexLocation,
6713 _In_ UINT StartInstanceLocation);
6714
6715 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6716 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6717 ID3D12GraphicsCommandList1 * This,
6718 _In_ UINT IndexCountPerInstance,
6719 _In_ UINT InstanceCount,
6720 _In_ UINT StartIndexLocation,
6721 _In_ INT BaseVertexLocation,
6722 _In_ UINT StartInstanceLocation);
6723
6724 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6725 void ( STDMETHODCALLTYPE *Dispatch )(
6726 ID3D12GraphicsCommandList1 * This,
6727 _In_ UINT ThreadGroupCountX,
6728 _In_ UINT ThreadGroupCountY,
6729 _In_ UINT ThreadGroupCountZ);
6730
6731 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6732 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6733 ID3D12GraphicsCommandList1 * This,
6734 _In_ ID3D12Resource *pDstBuffer,
6735 UINT64 DstOffset,
6736 _In_ ID3D12Resource *pSrcBuffer,
6737 UINT64 SrcOffset,
6738 UINT64 NumBytes);
6739
6740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6741 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6742 ID3D12GraphicsCommandList1 * This,
6743 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6744 UINT DstX,
6745 UINT DstY,
6746 UINT DstZ,
6747 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6748 _In_opt_ const D3D12_BOX *pSrcBox);
6749
6750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6751 void ( STDMETHODCALLTYPE *CopyResource )(
6752 ID3D12GraphicsCommandList1 * This,
6753 _In_ ID3D12Resource *pDstResource,
6754 _In_ ID3D12Resource *pSrcResource);
6755
6756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6757 void ( STDMETHODCALLTYPE *CopyTiles )(
6758 ID3D12GraphicsCommandList1 * This,
6759 _In_ ID3D12Resource *pTiledResource,
6760 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6761 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6762 _In_ ID3D12Resource *pBuffer,
6763 UINT64 BufferStartOffsetInBytes,
6764 D3D12_TILE_COPY_FLAGS Flags);
6765
6766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6767 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6768 ID3D12GraphicsCommandList1 * This,
6769 _In_ ID3D12Resource *pDstResource,
6770 _In_ UINT DstSubresource,
6771 _In_ ID3D12Resource *pSrcResource,
6772 _In_ UINT SrcSubresource,
6773 _In_ DXGI_FORMAT Format);
6774
6775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6776 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6777 ID3D12GraphicsCommandList1 * This,
6778 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6779
6780 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6781 void ( STDMETHODCALLTYPE *RSSetViewports )(
6782 ID3D12GraphicsCommandList1 * This,
6783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6784 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6785
6786 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6787 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6788 ID3D12GraphicsCommandList1 * This,
6789 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6790 _In_reads_( NumRects) const D3D12_RECT *pRects);
6791
6792 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6793 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6794 ID3D12GraphicsCommandList1 * This,
6795 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6796
6797 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6798 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6799 ID3D12GraphicsCommandList1 * This,
6800 _In_ UINT StencilRef);
6801
6802 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6803 void ( STDMETHODCALLTYPE *SetPipelineState )(
6804 ID3D12GraphicsCommandList1 * This,
6805 _In_ ID3D12PipelineState *pPipelineState);
6806
6807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6808 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6809 ID3D12GraphicsCommandList1 * This,
6810 _In_ UINT NumBarriers,
6811 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6812
6813 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6814 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6815 ID3D12GraphicsCommandList1 * This,
6816 _In_ ID3D12GraphicsCommandList *pCommandList);
6817
6818 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6819 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6820 ID3D12GraphicsCommandList1 * This,
6821 _In_ UINT NumDescriptorHeaps,
6822 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6823
6824 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6825 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6826 ID3D12GraphicsCommandList1 * This,
6827 _In_opt_ ID3D12RootSignature *pRootSignature);
6828
6829 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6830 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6831 ID3D12GraphicsCommandList1 * This,
6832 _In_opt_ ID3D12RootSignature *pRootSignature);
6833
6834 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6835 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6836 ID3D12GraphicsCommandList1 * This,
6837 _In_ UINT RootParameterIndex,
6838 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6839
6840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6841 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6842 ID3D12GraphicsCommandList1 * This,
6843 _In_ UINT RootParameterIndex,
6844 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6845
6846 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6847 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6848 ID3D12GraphicsCommandList1 * This,
6849 _In_ UINT RootParameterIndex,
6850 _In_ UINT SrcData,
6851 _In_ UINT DestOffsetIn32BitValues);
6852
6853 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6854 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6855 ID3D12GraphicsCommandList1 * This,
6856 _In_ UINT RootParameterIndex,
6857 _In_ UINT SrcData,
6858 _In_ UINT DestOffsetIn32BitValues);
6859
6860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6861 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6862 ID3D12GraphicsCommandList1 * This,
6863 _In_ UINT RootParameterIndex,
6864 _In_ UINT Num32BitValuesToSet,
6865 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6866 _In_ UINT DestOffsetIn32BitValues);
6867
6868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6869 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6870 ID3D12GraphicsCommandList1 * This,
6871 _In_ UINT RootParameterIndex,
6872 _In_ UINT Num32BitValuesToSet,
6873 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6874 _In_ UINT DestOffsetIn32BitValues);
6875
6876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6877 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6878 ID3D12GraphicsCommandList1 * This,
6879 _In_ UINT RootParameterIndex,
6880 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6881
6882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6883 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6884 ID3D12GraphicsCommandList1 * This,
6885 _In_ UINT RootParameterIndex,
6886 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6887
6888 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6889 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6890 ID3D12GraphicsCommandList1 * This,
6891 _In_ UINT RootParameterIndex,
6892 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6893
6894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6895 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6896 ID3D12GraphicsCommandList1 * This,
6897 _In_ UINT RootParameterIndex,
6898 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6899
6900 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6901 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6902 ID3D12GraphicsCommandList1 * This,
6903 _In_ UINT RootParameterIndex,
6904 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6905
6906 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6907 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6908 ID3D12GraphicsCommandList1 * This,
6909 _In_ UINT RootParameterIndex,
6910 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6911
6912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6913 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6914 ID3D12GraphicsCommandList1 * This,
6915 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6916
6917 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6918 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6919 ID3D12GraphicsCommandList1 * This,
6920 _In_ UINT StartSlot,
6921 _In_ UINT NumViews,
6922 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6923
6924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6925 void ( STDMETHODCALLTYPE *SOSetTargets )(
6926 ID3D12GraphicsCommandList1 * This,
6927 _In_ UINT StartSlot,
6928 _In_ UINT NumViews,
6929 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6930
6931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6932 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6933 ID3D12GraphicsCommandList1 * This,
6934 _In_ UINT NumRenderTargetDescriptors,
6935 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6936 _In_ BOOL RTsSingleHandleToDescriptorRange,
6937 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6938
6939 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6940 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6941 ID3D12GraphicsCommandList1 * This,
6942 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6943 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6944 _In_ FLOAT Depth,
6945 _In_ UINT8 Stencil,
6946 _In_ UINT NumRects,
6947 _In_reads_(NumRects) const D3D12_RECT *pRects);
6948
6949 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6950 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6951 ID3D12GraphicsCommandList1 * This,
6952 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6953 _In_ const FLOAT ColorRGBA[ 4 ],
6954 _In_ UINT NumRects,
6955 _In_reads_(NumRects) const D3D12_RECT *pRects);
6956
6957 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6958 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6959 ID3D12GraphicsCommandList1 * This,
6960 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6961 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6962 _In_ ID3D12Resource *pResource,
6963 _In_ const UINT Values[ 4 ],
6964 _In_ UINT NumRects,
6965 _In_reads_(NumRects) const D3D12_RECT *pRects);
6966
6967 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6968 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6969 ID3D12GraphicsCommandList1 * This,
6970 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6971 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6972 _In_ ID3D12Resource *pResource,
6973 _In_ const FLOAT Values[ 4 ],
6974 _In_ UINT NumRects,
6975 _In_reads_(NumRects) const D3D12_RECT *pRects);
6976
6977 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6978 void ( STDMETHODCALLTYPE *DiscardResource )(
6979 ID3D12GraphicsCommandList1 * This,
6980 _In_ ID3D12Resource *pResource,
6981 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6982
6983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6984 void ( STDMETHODCALLTYPE *BeginQuery )(
6985 ID3D12GraphicsCommandList1 * This,
6986 _In_ ID3D12QueryHeap *pQueryHeap,
6987 _In_ D3D12_QUERY_TYPE Type,
6988 _In_ UINT Index);
6989
6990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6991 void ( STDMETHODCALLTYPE *EndQuery )(
6992 ID3D12GraphicsCommandList1 * This,
6993 _In_ ID3D12QueryHeap *pQueryHeap,
6994 _In_ D3D12_QUERY_TYPE Type,
6995 _In_ UINT Index);
6996
6997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6998 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6999 ID3D12GraphicsCommandList1 * This,
7000 _In_ ID3D12QueryHeap *pQueryHeap,
7001 _In_ D3D12_QUERY_TYPE Type,
7002 _In_ UINT StartIndex,
7003 _In_ UINT NumQueries,
7004 _In_ ID3D12Resource *pDestinationBuffer,
7005 _In_ UINT64 AlignedDestinationBufferOffset);
7006
7007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7008 void ( STDMETHODCALLTYPE *SetPredication )(
7009 ID3D12GraphicsCommandList1 * This,
7010 _In_opt_ ID3D12Resource *pBuffer,
7011 _In_ UINT64 AlignedBufferOffset,
7012 _In_ D3D12_PREDICATION_OP Operation);
7013
7014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7015 void ( STDMETHODCALLTYPE *SetMarker )(
7016 ID3D12GraphicsCommandList1 * This,
7017 UINT Metadata,
7018 _In_reads_bytes_opt_(Size) const void *pData,
7019 UINT Size);
7020
7021 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7022 void ( STDMETHODCALLTYPE *BeginEvent )(
7023 ID3D12GraphicsCommandList1 * This,
7024 UINT Metadata,
7025 _In_reads_bytes_opt_(Size) const void *pData,
7026 UINT Size);
7027
7028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7029 void ( STDMETHODCALLTYPE *EndEvent )(
7030 ID3D12GraphicsCommandList1 * This);
7031
7032 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7033 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7034 ID3D12GraphicsCommandList1 * This,
7035 _In_ ID3D12CommandSignature *pCommandSignature,
7036 _In_ UINT MaxCommandCount,
7037 _In_ ID3D12Resource *pArgumentBuffer,
7038 _In_ UINT64 ArgumentBufferOffset,
7039 _In_opt_ ID3D12Resource *pCountBuffer,
7040 _In_ UINT64 CountBufferOffset);
7041
7042 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7043 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7044 ID3D12GraphicsCommandList1 * This,
7045 _In_ ID3D12Resource *pDstBuffer,
7046 UINT64 DstOffset,
7047 _In_ ID3D12Resource *pSrcBuffer,
7048 UINT64 SrcOffset,
7049 UINT Dependencies,
7050 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7051 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7052
7053 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7054 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7055 ID3D12GraphicsCommandList1 * This,
7056 _In_ ID3D12Resource *pDstBuffer,
7057 UINT64 DstOffset,
7058 _In_ ID3D12Resource *pSrcBuffer,
7059 UINT64 SrcOffset,
7060 UINT Dependencies,
7061 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7062 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7063
7064 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7065 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7066 ID3D12GraphicsCommandList1 * This,
7067 _In_ FLOAT Min,
7068 _In_ FLOAT Max);
7069
7070 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7071 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7072 ID3D12GraphicsCommandList1 * This,
7073 _In_ UINT NumSamplesPerPixel,
7074 _In_ UINT NumPixels,
7075 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7076
7077 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7078 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7079 ID3D12GraphicsCommandList1 * This,
7080 _In_ ID3D12Resource *pDstResource,
7081 _In_ UINT DstSubresource,
7082 _In_ UINT DstX,
7083 _In_ UINT DstY,
7084 _In_ ID3D12Resource *pSrcResource,
7085 _In_ UINT SrcSubresource,
7086 _In_opt_ D3D12_RECT *pSrcRect,
7087 _In_ DXGI_FORMAT Format,
7088 _In_ D3D12_RESOLVE_MODE ResolveMode);
7089
7090 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7091 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7092 ID3D12GraphicsCommandList1 * This,
7093 _In_ UINT Mask);
7094
7095 END_INTERFACE
7096 } ID3D12GraphicsCommandList1Vtbl;
7097
7098 interface ID3D12GraphicsCommandList1
7099 {
7100 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7101 };
7102
7103
7104
7105#ifdef COBJMACROS
7106
7107
7108#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7110
7111#define ID3D12GraphicsCommandList1_AddRef(This) \
7112 ( (This)->lpVtbl -> AddRef(This) )
7113
7114#define ID3D12GraphicsCommandList1_Release(This) \
7115 ( (This)->lpVtbl -> Release(This) )
7116
7117
7118#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7120
7121#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7123
7124#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7126
7127#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7128 ( (This)->lpVtbl -> SetName(This,Name) )
7129
7130
7131#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7133
7134
7135#define ID3D12GraphicsCommandList1_GetType(This) \
7136 ( (This)->lpVtbl -> GetType(This) )
7137
7138
7139#define ID3D12GraphicsCommandList1_Close(This) \
7140 ( (This)->lpVtbl -> Close(This) )
7141
7142#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7143 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7144
7145#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7146 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7147
7148#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7149 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7150
7151#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7152 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7153
7154#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7155 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7156
7157#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7158 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7159
7160#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7161 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7162
7163#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
7164 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7165
7166#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7167 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7168
7169#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7170 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7171
7172#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
7173 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7174
7175#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
7176 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7177
7178#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
7179 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7180
7181#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
7182 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7183
7184#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
7185 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7186
7187#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
7188 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7189
7190#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
7191 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7192
7193#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
7194 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7195
7196#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7197 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7198
7199#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
7200 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7201
7202#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
7203 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7204
7205#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7206 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7207
7208#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7209 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7210
7211#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7212 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7213
7214#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7215 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7216
7217#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7218 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7219
7220#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7221 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7222
7223#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7224 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7225
7226#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7227 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7228
7229#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7230 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7231
7232#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7233 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7234
7235#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7236 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7237
7238#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7239 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7240
7241#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
7242 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7243
7244#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7245 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7246
7247#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
7248 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7249
7250#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7251 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7252
7253#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7254 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7255
7256#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7257 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7258
7259#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7260 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7261
7262#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7263 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7264
7265#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
7266 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7267
7268#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
7269 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7270
7271#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
7272 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7273
7274#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7275 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7276
7277#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7278 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7279
7280#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
7281 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7282
7283#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
7284 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7285
7286#define ID3D12GraphicsCommandList1_EndEvent(This) \
7287 ( (This)->lpVtbl -> EndEvent(This) )
7288
7289#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7290 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7291
7292
7293#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7294 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7295
7296#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7297 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7298
7299#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
7300 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
7301
7302#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
7303 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
7304
7305#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
7306 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
7307
7308#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
7309 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
7310
7311#endif /* COBJMACROS */
7312
7313
7314#endif /* C style interface */
7315
7316
7317
7318
7319#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
7320
7321
7322/* interface __MIDL_itf_d3d12_0000_0018 */
7323/* [local] */
7324
7325typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
7326 {
7327 D3D12_GPU_VIRTUAL_ADDRESS Dest;
7328 UINT32 Value;
7329 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
7330
7331typedef
7332enum D3D12_WRITEBUFFERIMMEDIATE_MODE
7333 {
7334 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
7335 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
7336 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
7337 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
7338
7339
7340
7341extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec;
7342extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec;
7343
7344#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7345#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7346
7347/* interface ID3D12GraphicsCommandList2 */
7348/* [unique][local][object][uuid] */
7349
7350
7351EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
7352
7353#if defined(__cplusplus) && !defined(CINTERFACE)
7354
7355 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
7356 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
7357 {
7358 public:
7359 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
7360 UINT Count,
7361 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7362 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
7363
7364 };
7365
7366
7367#else /* C style interface */
7368
7369 typedef struct ID3D12GraphicsCommandList2Vtbl
7370 {
7371 BEGIN_INTERFACE
7372
7373 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7374 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7375 ID3D12GraphicsCommandList2 * This,
7376 REFIID riid,
7377 _COM_Outptr_ void **ppvObject);
7378
7379 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7380 ULONG ( STDMETHODCALLTYPE *AddRef )(
7381 ID3D12GraphicsCommandList2 * This);
7382
7383 DECLSPEC_XFGVIRT(IUnknown, Release)
7384 ULONG ( STDMETHODCALLTYPE *Release )(
7385 ID3D12GraphicsCommandList2 * This);
7386
7387 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7388 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7389 ID3D12GraphicsCommandList2 * This,
7390 _In_ REFGUID guid,
7391 _Inout_ UINT *pDataSize,
7392 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7393
7394 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7395 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7396 ID3D12GraphicsCommandList2 * This,
7397 _In_ REFGUID guid,
7398 _In_ UINT DataSize,
7399 _In_reads_bytes_opt_( DataSize ) const void *pData);
7400
7401 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7402 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7403 ID3D12GraphicsCommandList2 * This,
7404 _In_ REFGUID guid,
7405 _In_opt_ const IUnknown *pData);
7406
7407 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7408 HRESULT ( STDMETHODCALLTYPE *SetName )(
7409 ID3D12GraphicsCommandList2 * This,
7410 _In_z_ LPCWSTR Name);
7411
7412 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7413 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7414 ID3D12GraphicsCommandList2 * This,
7415 REFIID riid,
7416 _COM_Outptr_opt_ void **ppvDevice);
7417
7418 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7419 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7420 ID3D12GraphicsCommandList2 * This);
7421
7422 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7423 HRESULT ( STDMETHODCALLTYPE *Close )(
7424 ID3D12GraphicsCommandList2 * This);
7425
7426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7427 HRESULT ( STDMETHODCALLTYPE *Reset )(
7428 ID3D12GraphicsCommandList2 * This,
7429 _In_ ID3D12CommandAllocator *pAllocator,
7430 _In_opt_ ID3D12PipelineState *pInitialState);
7431
7432 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7433 void ( STDMETHODCALLTYPE *ClearState )(
7434 ID3D12GraphicsCommandList2 * This,
7435 _In_opt_ ID3D12PipelineState *pPipelineState);
7436
7437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7438 void ( STDMETHODCALLTYPE *DrawInstanced )(
7439 ID3D12GraphicsCommandList2 * This,
7440 _In_ UINT VertexCountPerInstance,
7441 _In_ UINT InstanceCount,
7442 _In_ UINT StartVertexLocation,
7443 _In_ UINT StartInstanceLocation);
7444
7445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7446 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7447 ID3D12GraphicsCommandList2 * This,
7448 _In_ UINT IndexCountPerInstance,
7449 _In_ UINT InstanceCount,
7450 _In_ UINT StartIndexLocation,
7451 _In_ INT BaseVertexLocation,
7452 _In_ UINT StartInstanceLocation);
7453
7454 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7455 void ( STDMETHODCALLTYPE *Dispatch )(
7456 ID3D12GraphicsCommandList2 * This,
7457 _In_ UINT ThreadGroupCountX,
7458 _In_ UINT ThreadGroupCountY,
7459 _In_ UINT ThreadGroupCountZ);
7460
7461 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7462 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7463 ID3D12GraphicsCommandList2 * This,
7464 _In_ ID3D12Resource *pDstBuffer,
7465 UINT64 DstOffset,
7466 _In_ ID3D12Resource *pSrcBuffer,
7467 UINT64 SrcOffset,
7468 UINT64 NumBytes);
7469
7470 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7471 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7472 ID3D12GraphicsCommandList2 * This,
7473 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7474 UINT DstX,
7475 UINT DstY,
7476 UINT DstZ,
7477 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7478 _In_opt_ const D3D12_BOX *pSrcBox);
7479
7480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7481 void ( STDMETHODCALLTYPE *CopyResource )(
7482 ID3D12GraphicsCommandList2 * This,
7483 _In_ ID3D12Resource *pDstResource,
7484 _In_ ID3D12Resource *pSrcResource);
7485
7486 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7487 void ( STDMETHODCALLTYPE *CopyTiles )(
7488 ID3D12GraphicsCommandList2 * This,
7489 _In_ ID3D12Resource *pTiledResource,
7490 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7491 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7492 _In_ ID3D12Resource *pBuffer,
7493 UINT64 BufferStartOffsetInBytes,
7494 D3D12_TILE_COPY_FLAGS Flags);
7495
7496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7497 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7498 ID3D12GraphicsCommandList2 * This,
7499 _In_ ID3D12Resource *pDstResource,
7500 _In_ UINT DstSubresource,
7501 _In_ ID3D12Resource *pSrcResource,
7502 _In_ UINT SrcSubresource,
7503 _In_ DXGI_FORMAT Format);
7504
7505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7506 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7507 ID3D12GraphicsCommandList2 * This,
7508 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7509
7510 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7511 void ( STDMETHODCALLTYPE *RSSetViewports )(
7512 ID3D12GraphicsCommandList2 * This,
7513 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7514 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7515
7516 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7517 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7518 ID3D12GraphicsCommandList2 * This,
7519 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7520 _In_reads_( NumRects) const D3D12_RECT *pRects);
7521
7522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7523 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7524 ID3D12GraphicsCommandList2 * This,
7525 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7526
7527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7528 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7529 ID3D12GraphicsCommandList2 * This,
7530 _In_ UINT StencilRef);
7531
7532 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7533 void ( STDMETHODCALLTYPE *SetPipelineState )(
7534 ID3D12GraphicsCommandList2 * This,
7535 _In_ ID3D12PipelineState *pPipelineState);
7536
7537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7538 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7539 ID3D12GraphicsCommandList2 * This,
7540 _In_ UINT NumBarriers,
7541 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7542
7543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7544 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7545 ID3D12GraphicsCommandList2 * This,
7546 _In_ ID3D12GraphicsCommandList *pCommandList);
7547
7548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7549 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7550 ID3D12GraphicsCommandList2 * This,
7551 _In_ UINT NumDescriptorHeaps,
7552 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7553
7554 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7555 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7556 ID3D12GraphicsCommandList2 * This,
7557 _In_opt_ ID3D12RootSignature *pRootSignature);
7558
7559 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7560 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7561 ID3D12GraphicsCommandList2 * This,
7562 _In_opt_ ID3D12RootSignature *pRootSignature);
7563
7564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7565 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7566 ID3D12GraphicsCommandList2 * This,
7567 _In_ UINT RootParameterIndex,
7568 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7569
7570 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7571 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7572 ID3D12GraphicsCommandList2 * This,
7573 _In_ UINT RootParameterIndex,
7574 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7575
7576 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7577 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7578 ID3D12GraphicsCommandList2 * This,
7579 _In_ UINT RootParameterIndex,
7580 _In_ UINT SrcData,
7581 _In_ UINT DestOffsetIn32BitValues);
7582
7583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7584 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7585 ID3D12GraphicsCommandList2 * This,
7586 _In_ UINT RootParameterIndex,
7587 _In_ UINT SrcData,
7588 _In_ UINT DestOffsetIn32BitValues);
7589
7590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7591 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7592 ID3D12GraphicsCommandList2 * This,
7593 _In_ UINT RootParameterIndex,
7594 _In_ UINT Num32BitValuesToSet,
7595 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7596 _In_ UINT DestOffsetIn32BitValues);
7597
7598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7599 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7600 ID3D12GraphicsCommandList2 * This,
7601 _In_ UINT RootParameterIndex,
7602 _In_ UINT Num32BitValuesToSet,
7603 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7604 _In_ UINT DestOffsetIn32BitValues);
7605
7606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7607 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7608 ID3D12GraphicsCommandList2 * This,
7609 _In_ UINT RootParameterIndex,
7610 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7611
7612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7613 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7614 ID3D12GraphicsCommandList2 * This,
7615 _In_ UINT RootParameterIndex,
7616 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7617
7618 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7619 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7620 ID3D12GraphicsCommandList2 * This,
7621 _In_ UINT RootParameterIndex,
7622 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7623
7624 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7625 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7626 ID3D12GraphicsCommandList2 * This,
7627 _In_ UINT RootParameterIndex,
7628 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7629
7630 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7631 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7632 ID3D12GraphicsCommandList2 * This,
7633 _In_ UINT RootParameterIndex,
7634 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7635
7636 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7637 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7638 ID3D12GraphicsCommandList2 * This,
7639 _In_ UINT RootParameterIndex,
7640 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7641
7642 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7643 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7644 ID3D12GraphicsCommandList2 * This,
7645 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7646
7647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7648 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7649 ID3D12GraphicsCommandList2 * This,
7650 _In_ UINT StartSlot,
7651 _In_ UINT NumViews,
7652 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7653
7654 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7655 void ( STDMETHODCALLTYPE *SOSetTargets )(
7656 ID3D12GraphicsCommandList2 * This,
7657 _In_ UINT StartSlot,
7658 _In_ UINT NumViews,
7659 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7660
7661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7662 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7663 ID3D12GraphicsCommandList2 * This,
7664 _In_ UINT NumRenderTargetDescriptors,
7665 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7666 _In_ BOOL RTsSingleHandleToDescriptorRange,
7667 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7668
7669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7670 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7671 ID3D12GraphicsCommandList2 * This,
7672 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7673 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7674 _In_ FLOAT Depth,
7675 _In_ UINT8 Stencil,
7676 _In_ UINT NumRects,
7677 _In_reads_(NumRects) const D3D12_RECT *pRects);
7678
7679 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7680 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7681 ID3D12GraphicsCommandList2 * This,
7682 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7683 _In_ const FLOAT ColorRGBA[ 4 ],
7684 _In_ UINT NumRects,
7685 _In_reads_(NumRects) const D3D12_RECT *pRects);
7686
7687 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7688 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7689 ID3D12GraphicsCommandList2 * This,
7690 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7691 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7692 _In_ ID3D12Resource *pResource,
7693 _In_ const UINT Values[ 4 ],
7694 _In_ UINT NumRects,
7695 _In_reads_(NumRects) const D3D12_RECT *pRects);
7696
7697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7698 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7699 ID3D12GraphicsCommandList2 * This,
7700 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7701 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7702 _In_ ID3D12Resource *pResource,
7703 _In_ const FLOAT Values[ 4 ],
7704 _In_ UINT NumRects,
7705 _In_reads_(NumRects) const D3D12_RECT *pRects);
7706
7707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7708 void ( STDMETHODCALLTYPE *DiscardResource )(
7709 ID3D12GraphicsCommandList2 * This,
7710 _In_ ID3D12Resource *pResource,
7711 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7712
7713 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7714 void ( STDMETHODCALLTYPE *BeginQuery )(
7715 ID3D12GraphicsCommandList2 * This,
7716 _In_ ID3D12QueryHeap *pQueryHeap,
7717 _In_ D3D12_QUERY_TYPE Type,
7718 _In_ UINT Index);
7719
7720 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7721 void ( STDMETHODCALLTYPE *EndQuery )(
7722 ID3D12GraphicsCommandList2 * This,
7723 _In_ ID3D12QueryHeap *pQueryHeap,
7724 _In_ D3D12_QUERY_TYPE Type,
7725 _In_ UINT Index);
7726
7727 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7728 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7729 ID3D12GraphicsCommandList2 * This,
7730 _In_ ID3D12QueryHeap *pQueryHeap,
7731 _In_ D3D12_QUERY_TYPE Type,
7732 _In_ UINT StartIndex,
7733 _In_ UINT NumQueries,
7734 _In_ ID3D12Resource *pDestinationBuffer,
7735 _In_ UINT64 AlignedDestinationBufferOffset);
7736
7737 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7738 void ( STDMETHODCALLTYPE *SetPredication )(
7739 ID3D12GraphicsCommandList2 * This,
7740 _In_opt_ ID3D12Resource *pBuffer,
7741 _In_ UINT64 AlignedBufferOffset,
7742 _In_ D3D12_PREDICATION_OP Operation);
7743
7744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7745 void ( STDMETHODCALLTYPE *SetMarker )(
7746 ID3D12GraphicsCommandList2 * This,
7747 UINT Metadata,
7748 _In_reads_bytes_opt_(Size) const void *pData,
7749 UINT Size);
7750
7751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7752 void ( STDMETHODCALLTYPE *BeginEvent )(
7753 ID3D12GraphicsCommandList2 * This,
7754 UINT Metadata,
7755 _In_reads_bytes_opt_(Size) const void *pData,
7756 UINT Size);
7757
7758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7759 void ( STDMETHODCALLTYPE *EndEvent )(
7760 ID3D12GraphicsCommandList2 * This);
7761
7762 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7763 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7764 ID3D12GraphicsCommandList2 * This,
7765 _In_ ID3D12CommandSignature *pCommandSignature,
7766 _In_ UINT MaxCommandCount,
7767 _In_ ID3D12Resource *pArgumentBuffer,
7768 _In_ UINT64 ArgumentBufferOffset,
7769 _In_opt_ ID3D12Resource *pCountBuffer,
7770 _In_ UINT64 CountBufferOffset);
7771
7772 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7773 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7774 ID3D12GraphicsCommandList2 * This,
7775 _In_ ID3D12Resource *pDstBuffer,
7776 UINT64 DstOffset,
7777 _In_ ID3D12Resource *pSrcBuffer,
7778 UINT64 SrcOffset,
7779 UINT Dependencies,
7780 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7781 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7782
7783 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7784 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7785 ID3D12GraphicsCommandList2 * This,
7786 _In_ ID3D12Resource *pDstBuffer,
7787 UINT64 DstOffset,
7788 _In_ ID3D12Resource *pSrcBuffer,
7789 UINT64 SrcOffset,
7790 UINT Dependencies,
7791 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7792 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7793
7794 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7795 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7796 ID3D12GraphicsCommandList2 * This,
7797 _In_ FLOAT Min,
7798 _In_ FLOAT Max);
7799
7800 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7801 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7802 ID3D12GraphicsCommandList2 * This,
7803 _In_ UINT NumSamplesPerPixel,
7804 _In_ UINT NumPixels,
7805 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7806
7807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7808 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7809 ID3D12GraphicsCommandList2 * This,
7810 _In_ ID3D12Resource *pDstResource,
7811 _In_ UINT DstSubresource,
7812 _In_ UINT DstX,
7813 _In_ UINT DstY,
7814 _In_ ID3D12Resource *pSrcResource,
7815 _In_ UINT SrcSubresource,
7816 _In_opt_ D3D12_RECT *pSrcRect,
7817 _In_ DXGI_FORMAT Format,
7818 _In_ D3D12_RESOLVE_MODE ResolveMode);
7819
7820 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7821 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7822 ID3D12GraphicsCommandList2 * This,
7823 _In_ UINT Mask);
7824
7825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
7826 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
7827 ID3D12GraphicsCommandList2 * This,
7828 UINT Count,
7829 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7830 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
7831
7832 END_INTERFACE
7833 } ID3D12GraphicsCommandList2Vtbl;
7834
7835 interface ID3D12GraphicsCommandList2
7836 {
7837 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
7838 };
7839
7840
7841
7842#ifdef COBJMACROS
7843
7844
7845#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
7846 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7847
7848#define ID3D12GraphicsCommandList2_AddRef(This) \
7849 ( (This)->lpVtbl -> AddRef(This) )
7850
7851#define ID3D12GraphicsCommandList2_Release(This) \
7852 ( (This)->lpVtbl -> Release(This) )
7853
7854
7855#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
7856 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7857
7858#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
7859 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7860
7861#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
7862 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7863
7864#define ID3D12GraphicsCommandList2_SetName(This,Name) \
7865 ( (This)->lpVtbl -> SetName(This,Name) )
7866
7867
7868#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
7869 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7870
7871
7872#define ID3D12GraphicsCommandList2_GetType(This) \
7873 ( (This)->lpVtbl -> GetType(This) )
7874
7875
7876#define ID3D12GraphicsCommandList2_Close(This) \
7877 ( (This)->lpVtbl -> Close(This) )
7878
7879#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
7880 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7881
7882#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
7883 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7884
7885#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7886 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7887
7888#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7889 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7890
7891#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7892 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7893
7894#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7895 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7896
7897#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7898 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7899
7900#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
7901 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7902
7903#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7904 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7905
7906#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7907 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7908
7909#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
7910 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7911
7912#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
7913 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7914
7915#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
7916 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7917
7918#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
7919 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7920
7921#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
7922 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7923
7924#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
7925 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7926
7927#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
7928 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7929
7930#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
7931 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7932
7933#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7934 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7935
7936#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
7937 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7938
7939#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
7940 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7941
7942#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7943 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7944
7945#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7946 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7947
7948#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7949 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7950
7951#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7952 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7953
7954#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7955 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7956
7957#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7958 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7959
7960#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7961 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7962
7963#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7964 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7965
7966#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7967 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7968
7969#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7970 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7971
7972#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7973 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7974
7975#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7976 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7977
7978#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
7979 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7980
7981#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7982 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7983
7984#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
7985 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7986
7987#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7988 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7989
7990#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7991 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7992
7993#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7994 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7995
7996#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7997 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7998
7999#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8000 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8001
8002#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8003 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8004
8005#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8006 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8007
8008#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8009 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8010
8011#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8012 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8013
8014#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8015 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8016
8017#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8018 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8019
8020#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8021 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8022
8023#define ID3D12GraphicsCommandList2_EndEvent(This) \
8024 ( (This)->lpVtbl -> EndEvent(This) )
8025
8026#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8027 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8028
8029
8030#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8031 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8032
8033#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8034 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8035
8036#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8037 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8038
8039#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8040 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8041
8042#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8043 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8044
8045#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8046 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8047
8048
8049#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8050 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8051
8052#endif /* COBJMACROS */
8053
8054
8055#endif /* C style interface */
8056
8057
8058
8059
8060#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8061
8062
8063#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8064#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8065
8066/* interface ID3D12CommandQueue */
8067/* [unique][local][object][uuid] */
8068
8069
8070EXTERN_C const IID IID_ID3D12CommandQueue;
8071
8072#if defined(__cplusplus) && !defined(CINTERFACE)
8073
8074 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8075 ID3D12CommandQueue : public ID3D12Pageable
8076 {
8077 public:
8078 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8079 _In_ ID3D12Resource *pResource,
8080 UINT NumResourceRegions,
8081 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8082 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8083 _In_opt_ ID3D12Heap *pHeap,
8084 UINT NumRanges,
8085 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8086 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8087 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8088 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8089
8090 virtual void STDMETHODCALLTYPE CopyTileMappings(
8091 _In_ ID3D12Resource *pDstResource,
8092 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8093 _In_ ID3D12Resource *pSrcResource,
8094 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8095 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8096 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8097
8098 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8099 _In_ UINT NumCommandLists,
8100 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8101
8102 virtual void STDMETHODCALLTYPE SetMarker(
8103 UINT Metadata,
8104 _In_reads_bytes_opt_(Size) const void *pData,
8105 UINT Size) = 0;
8106
8107 virtual void STDMETHODCALLTYPE BeginEvent(
8108 UINT Metadata,
8109 _In_reads_bytes_opt_(Size) const void *pData,
8110 UINT Size) = 0;
8111
8112 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8113
8114 virtual HRESULT STDMETHODCALLTYPE Signal(
8115 ID3D12Fence *pFence,
8116 UINT64 Value) = 0;
8117
8118 virtual HRESULT STDMETHODCALLTYPE Wait(
8119 ID3D12Fence *pFence,
8120 UINT64 Value) = 0;
8121
8122 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8123 _Out_ UINT64 *pFrequency) = 0;
8124
8125 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8126 _Out_ UINT64 *pGpuTimestamp,
8127 _Out_ UINT64 *pCpuTimestamp) = 0;
8128
8129 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8130
8131 };
8132
8133
8134#else /* C style interface */
8135
8136 typedef struct ID3D12CommandQueueVtbl
8137 {
8138 BEGIN_INTERFACE
8139
8140 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8141 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8142 ID3D12CommandQueue * This,
8143 REFIID riid,
8144 _COM_Outptr_ void **ppvObject);
8145
8146 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8147 ULONG ( STDMETHODCALLTYPE *AddRef )(
8148 ID3D12CommandQueue * This);
8149
8150 DECLSPEC_XFGVIRT(IUnknown, Release)
8151 ULONG ( STDMETHODCALLTYPE *Release )(
8152 ID3D12CommandQueue * This);
8153
8154 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8155 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8156 ID3D12CommandQueue * This,
8157 _In_ REFGUID guid,
8158 _Inout_ UINT *pDataSize,
8159 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8160
8161 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8162 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8163 ID3D12CommandQueue * This,
8164 _In_ REFGUID guid,
8165 _In_ UINT DataSize,
8166 _In_reads_bytes_opt_( DataSize ) const void *pData);
8167
8168 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8169 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8170 ID3D12CommandQueue * This,
8171 _In_ REFGUID guid,
8172 _In_opt_ const IUnknown *pData);
8173
8174 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8175 HRESULT ( STDMETHODCALLTYPE *SetName )(
8176 ID3D12CommandQueue * This,
8177 _In_z_ LPCWSTR Name);
8178
8179 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8180 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8181 ID3D12CommandQueue * This,
8182 REFIID riid,
8183 _COM_Outptr_opt_ void **ppvDevice);
8184
8185 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
8186 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
8187 ID3D12CommandQueue * This,
8188 _In_ ID3D12Resource *pResource,
8189 UINT NumResourceRegions,
8190 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8191 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8192 _In_opt_ ID3D12Heap *pHeap,
8193 UINT NumRanges,
8194 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8195 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8196 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8197 D3D12_TILE_MAPPING_FLAGS Flags);
8198
8199 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
8200 void ( STDMETHODCALLTYPE *CopyTileMappings )(
8201 ID3D12CommandQueue * This,
8202 _In_ ID3D12Resource *pDstResource,
8203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8204 _In_ ID3D12Resource *pSrcResource,
8205 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8206 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8207 D3D12_TILE_MAPPING_FLAGS Flags);
8208
8209 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
8210 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
8211 ID3D12CommandQueue * This,
8212 _In_ UINT NumCommandLists,
8213 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
8214
8215 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
8216 void ( STDMETHODCALLTYPE *SetMarker )(
8217 ID3D12CommandQueue * This,
8218 UINT Metadata,
8219 _In_reads_bytes_opt_(Size) const void *pData,
8220 UINT Size);
8221
8222 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
8223 void ( STDMETHODCALLTYPE *BeginEvent )(
8224 ID3D12CommandQueue * This,
8225 UINT Metadata,
8226 _In_reads_bytes_opt_(Size) const void *pData,
8227 UINT Size);
8228
8229 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
8230 void ( STDMETHODCALLTYPE *EndEvent )(
8231 ID3D12CommandQueue * This);
8232
8233 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
8234 HRESULT ( STDMETHODCALLTYPE *Signal )(
8235 ID3D12CommandQueue * This,
8236 ID3D12Fence *pFence,
8237 UINT64 Value);
8238
8239 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
8240 HRESULT ( STDMETHODCALLTYPE *Wait )(
8241 ID3D12CommandQueue * This,
8242 ID3D12Fence *pFence,
8243 UINT64 Value);
8244
8245 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
8246 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
8247 ID3D12CommandQueue * This,
8248 _Out_ UINT64 *pFrequency);
8249
8250 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
8251 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
8252 ID3D12CommandQueue * This,
8253 _Out_ UINT64 *pGpuTimestamp,
8254 _Out_ UINT64 *pCpuTimestamp);
8255
8256 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
8257 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
8258 ID3D12CommandQueue * This,
8259 D3D12_COMMAND_QUEUE_DESC * RetVal);
8260
8261 END_INTERFACE
8262 } ID3D12CommandQueueVtbl;
8263
8264 interface ID3D12CommandQueue
8265 {
8266 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
8267 };
8268
8269
8270
8271#ifdef COBJMACROS
8272
8273
8274#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
8275 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8276
8277#define ID3D12CommandQueue_AddRef(This) \
8278 ( (This)->lpVtbl -> AddRef(This) )
8279
8280#define ID3D12CommandQueue_Release(This) \
8281 ( (This)->lpVtbl -> Release(This) )
8282
8283
8284#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
8285 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8286
8287#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
8288 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8289
8290#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
8291 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8292
8293#define ID3D12CommandQueue_SetName(This,Name) \
8294 ( (This)->lpVtbl -> SetName(This,Name) )
8295
8296
8297#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
8298 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8299
8300
8301
8302#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
8303 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
8304
8305#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
8306 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
8307
8308#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
8309 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
8310
8311#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
8312 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8313
8314#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
8315 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8316
8317#define ID3D12CommandQueue_EndEvent(This) \
8318 ( (This)->lpVtbl -> EndEvent(This) )
8319
8320#define ID3D12CommandQueue_Signal(This,pFence,Value) \
8321 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
8322
8323#define ID3D12CommandQueue_Wait(This,pFence,Value) \
8324 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
8325
8326#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
8327 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
8328
8329#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
8330 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
8331
8332#define ID3D12CommandQueue_GetDesc(This,RetVal) \
8333 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
8334
8335#endif /* COBJMACROS */
8336
8337
8338#endif /* C style interface */
8339
8340
8341
8342
8343#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
8344
8345
8346/* interface __MIDL_itf_d3d12_0000_0020 */
8347/* [local] */
8348
8349#ifdef __midl
8350#ifndef LUID_DEFINED
8351#define LUID_DEFINED 1
8352typedef struct __LUID
8353 {
8354 DWORD LowPart;
8355 LONG HighPart;
8356 } LUID;
8357
8358typedef struct __LUID *PLUID;
8359
8360#endif
8361#endif
8362
8363
8364extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec;
8365extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec;
8366
8367#ifndef __ID3D12Device_INTERFACE_DEFINED__
8368#define __ID3D12Device_INTERFACE_DEFINED__
8369
8370/* interface ID3D12Device */
8371/* [unique][local][object][uuid] */
8372
8373
8374EXTERN_C const IID IID_ID3D12Device;
8375
8376#if defined(__cplusplus) && !defined(CINTERFACE)
8377
8378 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
8379 ID3D12Device : public ID3D12Object
8380 {
8381 public:
8382 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
8383
8384 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
8385 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8386 REFIID riid,
8387 _COM_Outptr_ void **ppCommandQueue) = 0;
8388
8389 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
8390 _In_ D3D12_COMMAND_LIST_TYPE type,
8391 REFIID riid,
8392 _COM_Outptr_ void **ppCommandAllocator) = 0;
8393
8394 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
8395 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8396 REFIID riid,
8397 _COM_Outptr_ void **ppPipelineState) = 0;
8398
8399 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
8400 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8401 REFIID riid,
8402 _COM_Outptr_ void **ppPipelineState) = 0;
8403
8404 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
8405 _In_ UINT nodeMask,
8406 _In_ D3D12_COMMAND_LIST_TYPE type,
8407 _In_ ID3D12CommandAllocator *pCommandAllocator,
8408 _In_opt_ ID3D12PipelineState *pInitialState,
8409 REFIID riid,
8410 _COM_Outptr_ void **ppCommandList) = 0;
8411
8412 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
8413 D3D12_FEATURE Feature,
8414 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8415 UINT FeatureSupportDataSize) = 0;
8416
8417 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
8418 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8419 REFIID riid,
8420 _COM_Outptr_ void **ppvHeap) = 0;
8421
8422 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
8423 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
8424
8425 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
8426 _In_ UINT nodeMask,
8427 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8428 _In_ SIZE_T blobLengthInBytes,
8429 REFIID riid,
8430 _COM_Outptr_ void **ppvRootSignature) = 0;
8431
8432 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
8433 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8434 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8435
8436 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
8437 _In_opt_ ID3D12Resource *pResource,
8438 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8440
8441 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
8442 _In_opt_ ID3D12Resource *pResource,
8443 _In_opt_ ID3D12Resource *pCounterResource,
8444 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8445 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8446
8447 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
8448 _In_opt_ ID3D12Resource *pResource,
8449 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8451
8452 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
8453 _In_opt_ ID3D12Resource *pResource,
8454 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8455 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8456
8457 virtual void STDMETHODCALLTYPE CreateSampler(
8458 _In_ const D3D12_SAMPLER_DESC *pDesc,
8459 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8460
8461 virtual void STDMETHODCALLTYPE CopyDescriptors(
8462 _In_ UINT NumDestDescriptorRanges,
8463 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8464 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8465 _In_ UINT NumSrcDescriptorRanges,
8466 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8467 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8468 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8469
8470 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
8471 _In_ UINT NumDescriptors,
8472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8473 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8474 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8475
8476 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
8477 _In_ UINT visibleMask,
8478 _In_ UINT numResourceDescs,
8479 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
8480
8481 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
8482 _In_ UINT nodeMask,
8483 D3D12_HEAP_TYPE heapType) = 0;
8484
8485 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
8486 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8487 D3D12_HEAP_FLAGS HeapFlags,
8488 _In_ const D3D12_RESOURCE_DESC *pDesc,
8489 D3D12_RESOURCE_STATES InitialResourceState,
8490 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8491 REFIID riidResource,
8492 _COM_Outptr_opt_ void **ppvResource) = 0;
8493
8494 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
8495 _In_ const D3D12_HEAP_DESC *pDesc,
8496 REFIID riid,
8497 _COM_Outptr_opt_ void **ppvHeap) = 0;
8498
8499 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
8500 _In_ ID3D12Heap *pHeap,
8501 UINT64 HeapOffset,
8502 _In_ const D3D12_RESOURCE_DESC *pDesc,
8503 D3D12_RESOURCE_STATES InitialState,
8504 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8505 REFIID riid,
8506 _COM_Outptr_opt_ void **ppvResource) = 0;
8507
8508 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
8509 _In_ const D3D12_RESOURCE_DESC *pDesc,
8510 D3D12_RESOURCE_STATES InitialState,
8511 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8512 REFIID riid,
8513 _COM_Outptr_opt_ void **ppvResource) = 0;
8514
8515 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
8516 _In_ ID3D12DeviceChild *pObject,
8517 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8518 DWORD Access,
8519 _In_opt_ LPCWSTR Name,
8520 _Out_ HANDLE *pHandle) = 0;
8521
8522 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
8523 _In_ HANDLE NTHandle,
8524 REFIID riid,
8525 _COM_Outptr_opt_ void **ppvObj) = 0;
8526
8527 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
8528 _In_ LPCWSTR Name,
8529 DWORD Access,
8530 /* [annotation][out] */
8531 _Out_ HANDLE *pNTHandle) = 0;
8532
8533 virtual HRESULT STDMETHODCALLTYPE MakeResident(
8534 UINT NumObjects,
8535 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8536
8537 virtual HRESULT STDMETHODCALLTYPE Evict(
8538 UINT NumObjects,
8539 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8540
8541 virtual HRESULT STDMETHODCALLTYPE CreateFence(
8542 UINT64 InitialValue,
8543 D3D12_FENCE_FLAGS Flags,
8544 REFIID riid,
8545 _COM_Outptr_ void **ppFence) = 0;
8546
8547 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
8548
8549 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
8550 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8551 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8552 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8553 UINT64 BaseOffset,
8554 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8555 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8556 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8557 _Out_opt_ UINT64 *pTotalBytes) = 0;
8558
8559 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
8560 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8561 REFIID riid,
8562 _COM_Outptr_opt_ void **ppvHeap) = 0;
8563
8564 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
8565 BOOL Enable) = 0;
8566
8567 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
8568 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8569 _In_opt_ ID3D12RootSignature *pRootSignature,
8570 REFIID riid,
8571 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
8572
8573 virtual void STDMETHODCALLTYPE GetResourceTiling(
8574 _In_ ID3D12Resource *pTiledResource,
8575 _Out_opt_ UINT *pNumTilesForEntireResource,
8576 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8577 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8578 _Inout_opt_ UINT *pNumSubresourceTilings,
8579 _In_ UINT FirstSubresourceTilingToGet,
8580 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
8581
8582 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
8583
8584 };
8585
8586
8587#else /* C style interface */
8588
8589 typedef struct ID3D12DeviceVtbl
8590 {
8591 BEGIN_INTERFACE
8592
8593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8595 ID3D12Device * This,
8596 REFIID riid,
8597 _COM_Outptr_ void **ppvObject);
8598
8599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8600 ULONG ( STDMETHODCALLTYPE *AddRef )(
8601 ID3D12Device * This);
8602
8603 DECLSPEC_XFGVIRT(IUnknown, Release)
8604 ULONG ( STDMETHODCALLTYPE *Release )(
8605 ID3D12Device * This);
8606
8607 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8608 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8609 ID3D12Device * This,
8610 _In_ REFGUID guid,
8611 _Inout_ UINT *pDataSize,
8612 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8613
8614 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8615 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8616 ID3D12Device * This,
8617 _In_ REFGUID guid,
8618 _In_ UINT DataSize,
8619 _In_reads_bytes_opt_( DataSize ) const void *pData);
8620
8621 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8622 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8623 ID3D12Device * This,
8624 _In_ REFGUID guid,
8625 _In_opt_ const IUnknown *pData);
8626
8627 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8628 HRESULT ( STDMETHODCALLTYPE *SetName )(
8629 ID3D12Device * This,
8630 _In_z_ LPCWSTR Name);
8631
8632 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
8633 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
8634 ID3D12Device * This);
8635
8636 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
8637 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
8638 ID3D12Device * This,
8639 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8640 REFIID riid,
8641 _COM_Outptr_ void **ppCommandQueue);
8642
8643 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
8644 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
8645 ID3D12Device * This,
8646 _In_ D3D12_COMMAND_LIST_TYPE type,
8647 REFIID riid,
8648 _COM_Outptr_ void **ppCommandAllocator);
8649
8650 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
8651 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
8652 ID3D12Device * This,
8653 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8654 REFIID riid,
8655 _COM_Outptr_ void **ppPipelineState);
8656
8657 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
8658 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
8659 ID3D12Device * This,
8660 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8661 REFIID riid,
8662 _COM_Outptr_ void **ppPipelineState);
8663
8664 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
8665 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
8666 ID3D12Device * This,
8667 _In_ UINT nodeMask,
8668 _In_ D3D12_COMMAND_LIST_TYPE type,
8669 _In_ ID3D12CommandAllocator *pCommandAllocator,
8670 _In_opt_ ID3D12PipelineState *pInitialState,
8671 REFIID riid,
8672 _COM_Outptr_ void **ppCommandList);
8673
8674 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
8675 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8676 ID3D12Device * This,
8677 D3D12_FEATURE Feature,
8678 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8679 UINT FeatureSupportDataSize);
8680
8681 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
8682 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
8683 ID3D12Device * This,
8684 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8685 REFIID riid,
8686 _COM_Outptr_ void **ppvHeap);
8687
8688 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
8689 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
8690 ID3D12Device * This,
8691 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
8692
8693 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
8694 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
8695 ID3D12Device * This,
8696 _In_ UINT nodeMask,
8697 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8698 _In_ SIZE_T blobLengthInBytes,
8699 REFIID riid,
8700 _COM_Outptr_ void **ppvRootSignature);
8701
8702 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
8703 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
8704 ID3D12Device * This,
8705 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8707
8708 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
8709 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
8710 ID3D12Device * This,
8711 _In_opt_ ID3D12Resource *pResource,
8712 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8714
8715 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
8716 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
8717 ID3D12Device * This,
8718 _In_opt_ ID3D12Resource *pResource,
8719 _In_opt_ ID3D12Resource *pCounterResource,
8720 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8721 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8722
8723 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
8724 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
8725 ID3D12Device * This,
8726 _In_opt_ ID3D12Resource *pResource,
8727 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8728 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8729
8730 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
8731 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
8732 ID3D12Device * This,
8733 _In_opt_ ID3D12Resource *pResource,
8734 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8735 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8736
8737 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
8738 void ( STDMETHODCALLTYPE *CreateSampler )(
8739 ID3D12Device * This,
8740 _In_ const D3D12_SAMPLER_DESC *pDesc,
8741 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8742
8743 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
8744 void ( STDMETHODCALLTYPE *CopyDescriptors )(
8745 ID3D12Device * This,
8746 _In_ UINT NumDestDescriptorRanges,
8747 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8748 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8749 _In_ UINT NumSrcDescriptorRanges,
8750 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8751 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8752 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8753
8754 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
8755 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
8756 ID3D12Device * This,
8757 _In_ UINT NumDescriptors,
8758 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8759 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8760 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8761
8762 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
8763 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
8764 ID3D12Device * This,
8765 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
8766 _In_ UINT visibleMask,
8767 _In_ UINT numResourceDescs,
8768 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
8769
8770 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
8771 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
8772 ID3D12Device * This,
8773 D3D12_HEAP_PROPERTIES * RetVal,
8774 _In_ UINT nodeMask,
8775 D3D12_HEAP_TYPE heapType);
8776
8777 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
8778 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
8779 ID3D12Device * This,
8780 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8781 D3D12_HEAP_FLAGS HeapFlags,
8782 _In_ const D3D12_RESOURCE_DESC *pDesc,
8783 D3D12_RESOURCE_STATES InitialResourceState,
8784 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8785 REFIID riidResource,
8786 _COM_Outptr_opt_ void **ppvResource);
8787
8788 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
8789 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
8790 ID3D12Device * This,
8791 _In_ const D3D12_HEAP_DESC *pDesc,
8792 REFIID riid,
8793 _COM_Outptr_opt_ void **ppvHeap);
8794
8795 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
8796 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
8797 ID3D12Device * This,
8798 _In_ ID3D12Heap *pHeap,
8799 UINT64 HeapOffset,
8800 _In_ const D3D12_RESOURCE_DESC *pDesc,
8801 D3D12_RESOURCE_STATES InitialState,
8802 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8803 REFIID riid,
8804 _COM_Outptr_opt_ void **ppvResource);
8805
8806 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
8807 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
8808 ID3D12Device * This,
8809 _In_ const D3D12_RESOURCE_DESC *pDesc,
8810 D3D12_RESOURCE_STATES InitialState,
8811 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8812 REFIID riid,
8813 _COM_Outptr_opt_ void **ppvResource);
8814
8815 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
8816 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
8817 ID3D12Device * This,
8818 _In_ ID3D12DeviceChild *pObject,
8819 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8820 DWORD Access,
8821 _In_opt_ LPCWSTR Name,
8822 _Out_ HANDLE *pHandle);
8823
8824 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
8825 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
8826 ID3D12Device * This,
8827 _In_ HANDLE NTHandle,
8828 REFIID riid,
8829 _COM_Outptr_opt_ void **ppvObj);
8830
8831 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
8832 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
8833 ID3D12Device * This,
8834 _In_ LPCWSTR Name,
8835 DWORD Access,
8836 /* [annotation][out] */
8837 _Out_ HANDLE *pNTHandle);
8838
8839 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
8840 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
8841 ID3D12Device * This,
8842 UINT NumObjects,
8843 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8844
8845 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
8846 HRESULT ( STDMETHODCALLTYPE *Evict )(
8847 ID3D12Device * This,
8848 UINT NumObjects,
8849 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8850
8851 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
8852 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
8853 ID3D12Device * This,
8854 UINT64 InitialValue,
8855 D3D12_FENCE_FLAGS Flags,
8856 REFIID riid,
8857 _COM_Outptr_ void **ppFence);
8858
8859 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
8860 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
8861 ID3D12Device * This);
8862
8863 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
8864 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
8865 ID3D12Device * This,
8866 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8867 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8868 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8869 UINT64 BaseOffset,
8870 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8871 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8872 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8873 _Out_opt_ UINT64 *pTotalBytes);
8874
8875 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
8876 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
8877 ID3D12Device * This,
8878 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8879 REFIID riid,
8880 _COM_Outptr_opt_ void **ppvHeap);
8881
8882 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
8883 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
8884 ID3D12Device * This,
8885 BOOL Enable);
8886
8887 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
8888 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
8889 ID3D12Device * This,
8890 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8891 _In_opt_ ID3D12RootSignature *pRootSignature,
8892 REFIID riid,
8893 _COM_Outptr_opt_ void **ppvCommandSignature);
8894
8895 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
8896 void ( STDMETHODCALLTYPE *GetResourceTiling )(
8897 ID3D12Device * This,
8898 _In_ ID3D12Resource *pTiledResource,
8899 _Out_opt_ UINT *pNumTilesForEntireResource,
8900 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8901 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8902 _Inout_opt_ UINT *pNumSubresourceTilings,
8903 _In_ UINT FirstSubresourceTilingToGet,
8904 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
8905
8906 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
8907 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
8908 ID3D12Device * This,
8909 LUID * RetVal);
8910
8911 END_INTERFACE
8912 } ID3D12DeviceVtbl;
8913
8914 interface ID3D12Device
8915 {
8916 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
8917 };
8918
8919
8920
8921#ifdef COBJMACROS
8922
8923
8924#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
8925 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8926
8927#define ID3D12Device_AddRef(This) \
8928 ( (This)->lpVtbl -> AddRef(This) )
8929
8930#define ID3D12Device_Release(This) \
8931 ( (This)->lpVtbl -> Release(This) )
8932
8933
8934#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
8935 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8936
8937#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
8938 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8939
8940#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
8941 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8942
8943#define ID3D12Device_SetName(This,Name) \
8944 ( (This)->lpVtbl -> SetName(This,Name) )
8945
8946
8947#define ID3D12Device_GetNodeCount(This) \
8948 ( (This)->lpVtbl -> GetNodeCount(This) )
8949
8950#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
8951 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
8952
8953#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
8954 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
8955
8956#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
8957 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
8958
8959#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
8960 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
8961
8962#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
8963 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
8964
8965#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
8966 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
8967
8968#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
8969 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
8970
8971#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
8972 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
8973
8974#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
8975 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
8976
8977#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
8978 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
8979
8980#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
8981 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
8982
8983#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
8984 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
8985
8986#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
8987 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
8988
8989#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
8990 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
8991
8992#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
8993 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
8994
8995#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
8996 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
8997
8998#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
8999 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9000
9001#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9002 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9003
9004#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9005 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9006
9007#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9008 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9009
9010#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
9011 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9012
9013#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9014 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9015
9016#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9017 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9018
9019#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9020 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9021
9022#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9023 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9024
9025#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9026 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9027
9028#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
9029 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9030
9031#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
9032 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9033
9034#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9035 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9036
9037#define ID3D12Device_GetDeviceRemovedReason(This) \
9038 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9039
9040#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9041 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9042
9043#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9044 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9045
9046#define ID3D12Device_SetStablePowerState(This,Enable) \
9047 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9048
9049#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9050 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9051
9052#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9053 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9054
9055#define ID3D12Device_GetAdapterLuid(This,RetVal) \
9056 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
9057
9058#endif /* COBJMACROS */
9059
9060
9061#endif /* C style interface */
9062
9063
9064
9065
9066#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
9067
9068
9069#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9070#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9071
9072/* interface ID3D12PipelineLibrary */
9073/* [unique][local][object][uuid] */
9074
9075
9076EXTERN_C const IID IID_ID3D12PipelineLibrary;
9077
9078#if defined(__cplusplus) && !defined(CINTERFACE)
9079
9080 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
9081 ID3D12PipelineLibrary : public ID3D12DeviceChild
9082 {
9083 public:
9084 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
9085 _In_opt_ LPCWSTR pName,
9086 _In_ ID3D12PipelineState *pPipeline) = 0;
9087
9088 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
9089 _In_ LPCWSTR pName,
9090 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9091 REFIID riid,
9092 _COM_Outptr_ void **ppPipelineState) = 0;
9093
9094 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
9095 _In_ LPCWSTR pName,
9096 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9097 REFIID riid,
9098 _COM_Outptr_ void **ppPipelineState) = 0;
9099
9100 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
9101
9102 virtual HRESULT STDMETHODCALLTYPE Serialize(
9103 _Out_writes_(DataSizeInBytes) void *pData,
9104 SIZE_T DataSizeInBytes) = 0;
9105
9106 };
9107
9108
9109#else /* C style interface */
9110
9111 typedef struct ID3D12PipelineLibraryVtbl
9112 {
9113 BEGIN_INTERFACE
9114
9115 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9116 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9117 ID3D12PipelineLibrary * This,
9118 REFIID riid,
9119 _COM_Outptr_ void **ppvObject);
9120
9121 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9122 ULONG ( STDMETHODCALLTYPE *AddRef )(
9123 ID3D12PipelineLibrary * This);
9124
9125 DECLSPEC_XFGVIRT(IUnknown, Release)
9126 ULONG ( STDMETHODCALLTYPE *Release )(
9127 ID3D12PipelineLibrary * This);
9128
9129 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9130 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9131 ID3D12PipelineLibrary * This,
9132 _In_ REFGUID guid,
9133 _Inout_ UINT *pDataSize,
9134 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9135
9136 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9137 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9138 ID3D12PipelineLibrary * This,
9139 _In_ REFGUID guid,
9140 _In_ UINT DataSize,
9141 _In_reads_bytes_opt_( DataSize ) const void *pData);
9142
9143 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9144 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9145 ID3D12PipelineLibrary * This,
9146 _In_ REFGUID guid,
9147 _In_opt_ const IUnknown *pData);
9148
9149 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9150 HRESULT ( STDMETHODCALLTYPE *SetName )(
9151 ID3D12PipelineLibrary * This,
9152 _In_z_ LPCWSTR Name);
9153
9154 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9155 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9156 ID3D12PipelineLibrary * This,
9157 REFIID riid,
9158 _COM_Outptr_opt_ void **ppvDevice);
9159
9160 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9161 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9162 ID3D12PipelineLibrary * This,
9163 _In_opt_ LPCWSTR pName,
9164 _In_ ID3D12PipelineState *pPipeline);
9165
9166 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9167 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9168 ID3D12PipelineLibrary * This,
9169 _In_ LPCWSTR pName,
9170 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9171 REFIID riid,
9172 _COM_Outptr_ void **ppPipelineState);
9173
9174 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9175 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9176 ID3D12PipelineLibrary * This,
9177 _In_ LPCWSTR pName,
9178 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9179 REFIID riid,
9180 _COM_Outptr_ void **ppPipelineState);
9181
9182 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9183 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9184 ID3D12PipelineLibrary * This);
9185
9186 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9187 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9188 ID3D12PipelineLibrary * This,
9189 _Out_writes_(DataSizeInBytes) void *pData,
9190 SIZE_T DataSizeInBytes);
9191
9192 END_INTERFACE
9193 } ID3D12PipelineLibraryVtbl;
9194
9195 interface ID3D12PipelineLibrary
9196 {
9197 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
9198 };
9199
9200
9201
9202#ifdef COBJMACROS
9203
9204
9205#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
9206 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9207
9208#define ID3D12PipelineLibrary_AddRef(This) \
9209 ( (This)->lpVtbl -> AddRef(This) )
9210
9211#define ID3D12PipelineLibrary_Release(This) \
9212 ( (This)->lpVtbl -> Release(This) )
9213
9214
9215#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
9216 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9217
9218#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
9219 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9220
9221#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
9222 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9223
9224#define ID3D12PipelineLibrary_SetName(This,Name) \
9225 ( (This)->lpVtbl -> SetName(This,Name) )
9226
9227
9228#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
9229 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9230
9231
9232#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
9233 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9234
9235#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9236 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9237
9238#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9239 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9240
9241#define ID3D12PipelineLibrary_GetSerializedSize(This) \
9242 ( (This)->lpVtbl -> GetSerializedSize(This) )
9243
9244#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
9245 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9246
9247#endif /* COBJMACROS */
9248
9249
9250#endif /* C style interface */
9251
9252
9253
9254
9255#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
9256
9257
9258#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9259#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9260
9261/* interface ID3D12PipelineLibrary1 */
9262/* [unique][local][object][uuid] */
9263
9264
9265EXTERN_C const IID IID_ID3D12PipelineLibrary1;
9266
9267#if defined(__cplusplus) && !defined(CINTERFACE)
9268
9269 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
9270 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
9271 {
9272 public:
9273 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
9274 _In_ LPCWSTR pName,
9275 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9276 REFIID riid,
9277 _COM_Outptr_ void **ppPipelineState) = 0;
9278
9279 };
9280
9281
9282#else /* C style interface */
9283
9284 typedef struct ID3D12PipelineLibrary1Vtbl
9285 {
9286 BEGIN_INTERFACE
9287
9288 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9289 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9290 ID3D12PipelineLibrary1 * This,
9291 REFIID riid,
9292 _COM_Outptr_ void **ppvObject);
9293
9294 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9295 ULONG ( STDMETHODCALLTYPE *AddRef )(
9296 ID3D12PipelineLibrary1 * This);
9297
9298 DECLSPEC_XFGVIRT(IUnknown, Release)
9299 ULONG ( STDMETHODCALLTYPE *Release )(
9300 ID3D12PipelineLibrary1 * This);
9301
9302 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9303 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9304 ID3D12PipelineLibrary1 * This,
9305 _In_ REFGUID guid,
9306 _Inout_ UINT *pDataSize,
9307 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9308
9309 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9310 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9311 ID3D12PipelineLibrary1 * This,
9312 _In_ REFGUID guid,
9313 _In_ UINT DataSize,
9314 _In_reads_bytes_opt_( DataSize ) const void *pData);
9315
9316 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9317 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9318 ID3D12PipelineLibrary1 * This,
9319 _In_ REFGUID guid,
9320 _In_opt_ const IUnknown *pData);
9321
9322 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9323 HRESULT ( STDMETHODCALLTYPE *SetName )(
9324 ID3D12PipelineLibrary1 * This,
9325 _In_z_ LPCWSTR Name);
9326
9327 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9328 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9329 ID3D12PipelineLibrary1 * This,
9330 REFIID riid,
9331 _COM_Outptr_opt_ void **ppvDevice);
9332
9333 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9334 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9335 ID3D12PipelineLibrary1 * This,
9336 _In_opt_ LPCWSTR pName,
9337 _In_ ID3D12PipelineState *pPipeline);
9338
9339 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9340 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9341 ID3D12PipelineLibrary1 * This,
9342 _In_ LPCWSTR pName,
9343 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9344 REFIID riid,
9345 _COM_Outptr_ void **ppPipelineState);
9346
9347 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9348 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9349 ID3D12PipelineLibrary1 * This,
9350 _In_ LPCWSTR pName,
9351 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9352 REFIID riid,
9353 _COM_Outptr_ void **ppPipelineState);
9354
9355 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9356 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9357 ID3D12PipelineLibrary1 * This);
9358
9359 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9360 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9361 ID3D12PipelineLibrary1 * This,
9362 _Out_writes_(DataSizeInBytes) void *pData,
9363 SIZE_T DataSizeInBytes);
9364
9365 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
9366 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
9367 ID3D12PipelineLibrary1 * This,
9368 _In_ LPCWSTR pName,
9369 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9370 REFIID riid,
9371 _COM_Outptr_ void **ppPipelineState);
9372
9373 END_INTERFACE
9374 } ID3D12PipelineLibrary1Vtbl;
9375
9376 interface ID3D12PipelineLibrary1
9377 {
9378 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
9379 };
9380
9381
9382
9383#ifdef COBJMACROS
9384
9385
9386#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
9387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9388
9389#define ID3D12PipelineLibrary1_AddRef(This) \
9390 ( (This)->lpVtbl -> AddRef(This) )
9391
9392#define ID3D12PipelineLibrary1_Release(This) \
9393 ( (This)->lpVtbl -> Release(This) )
9394
9395
9396#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
9397 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9398
9399#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
9400 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9401
9402#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
9403 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9404
9405#define ID3D12PipelineLibrary1_SetName(This,Name) \
9406 ( (This)->lpVtbl -> SetName(This,Name) )
9407
9408
9409#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
9410 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9411
9412
9413#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
9414 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9415
9416#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9417 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9418
9419#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9420 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9421
9422#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
9423 ( (This)->lpVtbl -> GetSerializedSize(This) )
9424
9425#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
9426 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9427
9428
9429#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
9430 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
9431
9432#endif /* COBJMACROS */
9433
9434
9435#endif /* C style interface */
9436
9437
9438
9439
9440#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
9441
9442
9443/* interface __MIDL_itf_d3d12_0000_0023 */
9444/* [local] */
9445
9446typedef
9447enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
9448 {
9449 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
9450 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
9451 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
9452 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
9453
9454DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );
9455typedef
9456enum D3D12_RESIDENCY_PRIORITY
9457 {
9458 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
9459 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
9460 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
9461 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
9462 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
9463 } D3D12_RESIDENCY_PRIORITY;
9464
9465
9466
9467extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_c_ifspec;
9468extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_s_ifspec;
9469
9470#ifndef __ID3D12Device1_INTERFACE_DEFINED__
9471#define __ID3D12Device1_INTERFACE_DEFINED__
9472
9473/* interface ID3D12Device1 */
9474/* [unique][local][object][uuid] */
9475
9476
9477EXTERN_C const IID IID_ID3D12Device1;
9478
9479#if defined(__cplusplus) && !defined(CINTERFACE)
9480
9481 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
9482 ID3D12Device1 : public ID3D12Device
9483 {
9484 public:
9485 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
9486 _In_reads_(BlobLength) const void *pLibraryBlob,
9487 SIZE_T BlobLength,
9488 REFIID riid,
9489 _COM_Outptr_ void **ppPipelineLibrary) = 0;
9490
9491 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
9492 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9493 _In_reads_(NumFences) const UINT64 *pFenceValues,
9494 UINT NumFences,
9495 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9496 HANDLE hEvent) = 0;
9497
9498 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
9499 UINT NumObjects,
9500 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9501 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
9502
9503 };
9504
9505
9506#else /* C style interface */
9507
9508 typedef struct ID3D12Device1Vtbl
9509 {
9510 BEGIN_INTERFACE
9511
9512 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9513 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9514 ID3D12Device1 * This,
9515 REFIID riid,
9516 _COM_Outptr_ void **ppvObject);
9517
9518 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9519 ULONG ( STDMETHODCALLTYPE *AddRef )(
9520 ID3D12Device1 * This);
9521
9522 DECLSPEC_XFGVIRT(IUnknown, Release)
9523 ULONG ( STDMETHODCALLTYPE *Release )(
9524 ID3D12Device1 * This);
9525
9526 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9527 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9528 ID3D12Device1 * This,
9529 _In_ REFGUID guid,
9530 _Inout_ UINT *pDataSize,
9531 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9532
9533 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9534 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9535 ID3D12Device1 * This,
9536 _In_ REFGUID guid,
9537 _In_ UINT DataSize,
9538 _In_reads_bytes_opt_( DataSize ) const void *pData);
9539
9540 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9541 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9542 ID3D12Device1 * This,
9543 _In_ REFGUID guid,
9544 _In_opt_ const IUnknown *pData);
9545
9546 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9547 HRESULT ( STDMETHODCALLTYPE *SetName )(
9548 ID3D12Device1 * This,
9549 _In_z_ LPCWSTR Name);
9550
9551 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9552 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9553 ID3D12Device1 * This);
9554
9555 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9556 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9557 ID3D12Device1 * This,
9558 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9559 REFIID riid,
9560 _COM_Outptr_ void **ppCommandQueue);
9561
9562 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9563 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9564 ID3D12Device1 * This,
9565 _In_ D3D12_COMMAND_LIST_TYPE type,
9566 REFIID riid,
9567 _COM_Outptr_ void **ppCommandAllocator);
9568
9569 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9570 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9571 ID3D12Device1 * This,
9572 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9573 REFIID riid,
9574 _COM_Outptr_ void **ppPipelineState);
9575
9576 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9577 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9578 ID3D12Device1 * This,
9579 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9580 REFIID riid,
9581 _COM_Outptr_ void **ppPipelineState);
9582
9583 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9584 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9585 ID3D12Device1 * This,
9586 _In_ UINT nodeMask,
9587 _In_ D3D12_COMMAND_LIST_TYPE type,
9588 _In_ ID3D12CommandAllocator *pCommandAllocator,
9589 _In_opt_ ID3D12PipelineState *pInitialState,
9590 REFIID riid,
9591 _COM_Outptr_ void **ppCommandList);
9592
9593 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9594 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9595 ID3D12Device1 * This,
9596 D3D12_FEATURE Feature,
9597 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9598 UINT FeatureSupportDataSize);
9599
9600 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9601 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9602 ID3D12Device1 * This,
9603 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9604 REFIID riid,
9605 _COM_Outptr_ void **ppvHeap);
9606
9607 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9608 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9609 ID3D12Device1 * This,
9610 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9611
9612 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9613 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9614 ID3D12Device1 * This,
9615 _In_ UINT nodeMask,
9616 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9617 _In_ SIZE_T blobLengthInBytes,
9618 REFIID riid,
9619 _COM_Outptr_ void **ppvRootSignature);
9620
9621 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9622 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9623 ID3D12Device1 * This,
9624 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9626
9627 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9628 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9629 ID3D12Device1 * This,
9630 _In_opt_ ID3D12Resource *pResource,
9631 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9632 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9633
9634 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9635 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9636 ID3D12Device1 * This,
9637 _In_opt_ ID3D12Resource *pResource,
9638 _In_opt_ ID3D12Resource *pCounterResource,
9639 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9640 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9641
9642 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9643 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9644 ID3D12Device1 * This,
9645 _In_opt_ ID3D12Resource *pResource,
9646 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9647 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9648
9649 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9650 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9651 ID3D12Device1 * This,
9652 _In_opt_ ID3D12Resource *pResource,
9653 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9654 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9655
9656 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9657 void ( STDMETHODCALLTYPE *CreateSampler )(
9658 ID3D12Device1 * This,
9659 _In_ const D3D12_SAMPLER_DESC *pDesc,
9660 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9661
9662 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9663 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9664 ID3D12Device1 * This,
9665 _In_ UINT NumDestDescriptorRanges,
9666 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9667 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9668 _In_ UINT NumSrcDescriptorRanges,
9669 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9670 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9671 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9672
9673 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9674 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9675 ID3D12Device1 * This,
9676 _In_ UINT NumDescriptors,
9677 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9678 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9679 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9680
9681 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9682 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9683 ID3D12Device1 * This,
9684 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9685 _In_ UINT visibleMask,
9686 _In_ UINT numResourceDescs,
9687 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9688
9689 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9690 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9691 ID3D12Device1 * This,
9692 D3D12_HEAP_PROPERTIES * RetVal,
9693 _In_ UINT nodeMask,
9694 D3D12_HEAP_TYPE heapType);
9695
9696 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9697 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9698 ID3D12Device1 * This,
9699 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9700 D3D12_HEAP_FLAGS HeapFlags,
9701 _In_ const D3D12_RESOURCE_DESC *pDesc,
9702 D3D12_RESOURCE_STATES InitialResourceState,
9703 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9704 REFIID riidResource,
9705 _COM_Outptr_opt_ void **ppvResource);
9706
9707 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9708 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9709 ID3D12Device1 * This,
9710 _In_ const D3D12_HEAP_DESC *pDesc,
9711 REFIID riid,
9712 _COM_Outptr_opt_ void **ppvHeap);
9713
9714 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
9715 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
9716 ID3D12Device1 * This,
9717 _In_ ID3D12Heap *pHeap,
9718 UINT64 HeapOffset,
9719 _In_ const D3D12_RESOURCE_DESC *pDesc,
9720 D3D12_RESOURCE_STATES InitialState,
9721 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9722 REFIID riid,
9723 _COM_Outptr_opt_ void **ppvResource);
9724
9725 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
9726 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
9727 ID3D12Device1 * This,
9728 _In_ const D3D12_RESOURCE_DESC *pDesc,
9729 D3D12_RESOURCE_STATES InitialState,
9730 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9731 REFIID riid,
9732 _COM_Outptr_opt_ void **ppvResource);
9733
9734 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
9735 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
9736 ID3D12Device1 * This,
9737 _In_ ID3D12DeviceChild *pObject,
9738 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9739 DWORD Access,
9740 _In_opt_ LPCWSTR Name,
9741 _Out_ HANDLE *pHandle);
9742
9743 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
9744 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
9745 ID3D12Device1 * This,
9746 _In_ HANDLE NTHandle,
9747 REFIID riid,
9748 _COM_Outptr_opt_ void **ppvObj);
9749
9750 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
9751 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
9752 ID3D12Device1 * This,
9753 _In_ LPCWSTR Name,
9754 DWORD Access,
9755 /* [annotation][out] */
9756 _Out_ HANDLE *pNTHandle);
9757
9758 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
9759 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
9760 ID3D12Device1 * This,
9761 UINT NumObjects,
9762 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9763
9764 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
9765 HRESULT ( STDMETHODCALLTYPE *Evict )(
9766 ID3D12Device1 * This,
9767 UINT NumObjects,
9768 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9769
9770 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
9771 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
9772 ID3D12Device1 * This,
9773 UINT64 InitialValue,
9774 D3D12_FENCE_FLAGS Flags,
9775 REFIID riid,
9776 _COM_Outptr_ void **ppFence);
9777
9778 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
9779 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
9780 ID3D12Device1 * This);
9781
9782 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
9783 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
9784 ID3D12Device1 * This,
9785 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9786 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9787 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9788 UINT64 BaseOffset,
9789 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9790 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9791 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9792 _Out_opt_ UINT64 *pTotalBytes);
9793
9794 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
9795 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
9796 ID3D12Device1 * This,
9797 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9798 REFIID riid,
9799 _COM_Outptr_opt_ void **ppvHeap);
9800
9801 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
9802 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
9803 ID3D12Device1 * This,
9804 BOOL Enable);
9805
9806 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
9807 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
9808 ID3D12Device1 * This,
9809 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9810 _In_opt_ ID3D12RootSignature *pRootSignature,
9811 REFIID riid,
9812 _COM_Outptr_opt_ void **ppvCommandSignature);
9813
9814 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
9815 void ( STDMETHODCALLTYPE *GetResourceTiling )(
9816 ID3D12Device1 * This,
9817 _In_ ID3D12Resource *pTiledResource,
9818 _Out_opt_ UINT *pNumTilesForEntireResource,
9819 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9820 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9821 _Inout_opt_ UINT *pNumSubresourceTilings,
9822 _In_ UINT FirstSubresourceTilingToGet,
9823 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
9824
9825 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
9826 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
9827 ID3D12Device1 * This,
9828 LUID * RetVal);
9829
9830 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
9831 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
9832 ID3D12Device1 * This,
9833 _In_reads_(BlobLength) const void *pLibraryBlob,
9834 SIZE_T BlobLength,
9835 REFIID riid,
9836 _COM_Outptr_ void **ppPipelineLibrary);
9837
9838 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
9839 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
9840 ID3D12Device1 * This,
9841 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9842 _In_reads_(NumFences) const UINT64 *pFenceValues,
9843 UINT NumFences,
9844 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9845 HANDLE hEvent);
9846
9847 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
9848 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
9849 ID3D12Device1 * This,
9850 UINT NumObjects,
9851 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9852 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
9853
9854 END_INTERFACE
9855 } ID3D12Device1Vtbl;
9856
9857 interface ID3D12Device1
9858 {
9859 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
9860 };
9861
9862
9863
9864#ifdef COBJMACROS
9865
9866
9867#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
9868 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9869
9870#define ID3D12Device1_AddRef(This) \
9871 ( (This)->lpVtbl -> AddRef(This) )
9872
9873#define ID3D12Device1_Release(This) \
9874 ( (This)->lpVtbl -> Release(This) )
9875
9876
9877#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
9878 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9879
9880#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
9881 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9882
9883#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
9884 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9885
9886#define ID3D12Device1_SetName(This,Name) \
9887 ( (This)->lpVtbl -> SetName(This,Name) )
9888
9889
9890#define ID3D12Device1_GetNodeCount(This) \
9891 ( (This)->lpVtbl -> GetNodeCount(This) )
9892
9893#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
9894 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
9895
9896#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
9897 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
9898
9899#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
9900 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
9901
9902#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
9903 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
9904
9905#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
9906 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
9907
9908#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
9909 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
9910
9911#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
9912 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
9913
9914#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
9915 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
9916
9917#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
9918 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
9919
9920#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
9921 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
9922
9923#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
9924 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
9925
9926#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
9927 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
9928
9929#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
9930 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
9931
9932#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
9933 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
9934
9935#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
9936 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
9937
9938#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
9939 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
9940
9941#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
9942 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9943
9944#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9945 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9946
9947#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9948 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9949
9950#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9951 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9952
9953#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
9954 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9955
9956#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9957 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9958
9959#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9960 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9961
9962#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9963 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9964
9965#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9966 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9967
9968#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9969 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9970
9971#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
9972 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9973
9974#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
9975 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9976
9977#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9978 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9979
9980#define ID3D12Device1_GetDeviceRemovedReason(This) \
9981 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9982
9983#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9984 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9985
9986#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9987 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9988
9989#define ID3D12Device1_SetStablePowerState(This,Enable) \
9990 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9991
9992#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9993 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9994
9995#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9996 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9997
9998#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
9999 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10000
10001
10002#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10003 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10004
10005#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10006 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10007
10008#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10009 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10010
10011#endif /* COBJMACROS */
10012
10013
10014#endif /* C style interface */
10015
10016
10017
10018
10019#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
10020
10021
10022#ifndef __ID3D12Device2_INTERFACE_DEFINED__
10023#define __ID3D12Device2_INTERFACE_DEFINED__
10024
10025/* interface ID3D12Device2 */
10026/* [unique][local][object][uuid] */
10027
10028
10029EXTERN_C const IID IID_ID3D12Device2;
10030
10031#if defined(__cplusplus) && !defined(CINTERFACE)
10032
10033 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
10034 ID3D12Device2 : public ID3D12Device1
10035 {
10036 public:
10037 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
10038 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10039 REFIID riid,
10040 _COM_Outptr_ void **ppPipelineState) = 0;
10041
10042 };
10043
10044
10045#else /* C style interface */
10046
10047 typedef struct ID3D12Device2Vtbl
10048 {
10049 BEGIN_INTERFACE
10050
10051 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10052 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10053 ID3D12Device2 * This,
10054 REFIID riid,
10055 _COM_Outptr_ void **ppvObject);
10056
10057 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10058 ULONG ( STDMETHODCALLTYPE *AddRef )(
10059 ID3D12Device2 * This);
10060
10061 DECLSPEC_XFGVIRT(IUnknown, Release)
10062 ULONG ( STDMETHODCALLTYPE *Release )(
10063 ID3D12Device2 * This);
10064
10065 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10066 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10067 ID3D12Device2 * This,
10068 _In_ REFGUID guid,
10069 _Inout_ UINT *pDataSize,
10070 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10071
10072 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10073 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10074 ID3D12Device2 * This,
10075 _In_ REFGUID guid,
10076 _In_ UINT DataSize,
10077 _In_reads_bytes_opt_( DataSize ) const void *pData);
10078
10079 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10080 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10081 ID3D12Device2 * This,
10082 _In_ REFGUID guid,
10083 _In_opt_ const IUnknown *pData);
10084
10085 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10086 HRESULT ( STDMETHODCALLTYPE *SetName )(
10087 ID3D12Device2 * This,
10088 _In_z_ LPCWSTR Name);
10089
10090 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10091 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10092 ID3D12Device2 * This);
10093
10094 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10095 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10096 ID3D12Device2 * This,
10097 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10098 REFIID riid,
10099 _COM_Outptr_ void **ppCommandQueue);
10100
10101 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10102 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10103 ID3D12Device2 * This,
10104 _In_ D3D12_COMMAND_LIST_TYPE type,
10105 REFIID riid,
10106 _COM_Outptr_ void **ppCommandAllocator);
10107
10108 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10109 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10110 ID3D12Device2 * This,
10111 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10112 REFIID riid,
10113 _COM_Outptr_ void **ppPipelineState);
10114
10115 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10116 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10117 ID3D12Device2 * This,
10118 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10119 REFIID riid,
10120 _COM_Outptr_ void **ppPipelineState);
10121
10122 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10123 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10124 ID3D12Device2 * This,
10125 _In_ UINT nodeMask,
10126 _In_ D3D12_COMMAND_LIST_TYPE type,
10127 _In_ ID3D12CommandAllocator *pCommandAllocator,
10128 _In_opt_ ID3D12PipelineState *pInitialState,
10129 REFIID riid,
10130 _COM_Outptr_ void **ppCommandList);
10131
10132 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10133 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10134 ID3D12Device2 * This,
10135 D3D12_FEATURE Feature,
10136 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10137 UINT FeatureSupportDataSize);
10138
10139 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10140 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10141 ID3D12Device2 * This,
10142 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10143 REFIID riid,
10144 _COM_Outptr_ void **ppvHeap);
10145
10146 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10147 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10148 ID3D12Device2 * This,
10149 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10150
10151 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10152 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10153 ID3D12Device2 * This,
10154 _In_ UINT nodeMask,
10155 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10156 _In_ SIZE_T blobLengthInBytes,
10157 REFIID riid,
10158 _COM_Outptr_ void **ppvRootSignature);
10159
10160 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10161 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10162 ID3D12Device2 * This,
10163 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10164 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10165
10166 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10167 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10168 ID3D12Device2 * This,
10169 _In_opt_ ID3D12Resource *pResource,
10170 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10171 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10172
10173 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10174 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10175 ID3D12Device2 * This,
10176 _In_opt_ ID3D12Resource *pResource,
10177 _In_opt_ ID3D12Resource *pCounterResource,
10178 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10179 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10180
10181 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10182 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10183 ID3D12Device2 * This,
10184 _In_opt_ ID3D12Resource *pResource,
10185 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10186 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10187
10188 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10189 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10190 ID3D12Device2 * This,
10191 _In_opt_ ID3D12Resource *pResource,
10192 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10193 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10194
10195 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10196 void ( STDMETHODCALLTYPE *CreateSampler )(
10197 ID3D12Device2 * This,
10198 _In_ const D3D12_SAMPLER_DESC *pDesc,
10199 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10200
10201 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10202 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10203 ID3D12Device2 * This,
10204 _In_ UINT NumDestDescriptorRanges,
10205 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10206 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10207 _In_ UINT NumSrcDescriptorRanges,
10208 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10209 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10210 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10211
10212 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10213 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10214 ID3D12Device2 * This,
10215 _In_ UINT NumDescriptors,
10216 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10217 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10218 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10219
10220 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10221 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10222 ID3D12Device2 * This,
10223 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10224 _In_ UINT visibleMask,
10225 _In_ UINT numResourceDescs,
10226 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10227
10228 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10229 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10230 ID3D12Device2 * This,
10231 D3D12_HEAP_PROPERTIES * RetVal,
10232 _In_ UINT nodeMask,
10233 D3D12_HEAP_TYPE heapType);
10234
10235 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10236 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10237 ID3D12Device2 * This,
10238 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10239 D3D12_HEAP_FLAGS HeapFlags,
10240 _In_ const D3D12_RESOURCE_DESC *pDesc,
10241 D3D12_RESOURCE_STATES InitialResourceState,
10242 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10243 REFIID riidResource,
10244 _COM_Outptr_opt_ void **ppvResource);
10245
10246 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10247 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10248 ID3D12Device2 * This,
10249 _In_ const D3D12_HEAP_DESC *pDesc,
10250 REFIID riid,
10251 _COM_Outptr_opt_ void **ppvHeap);
10252
10253 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10254 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10255 ID3D12Device2 * This,
10256 _In_ ID3D12Heap *pHeap,
10257 UINT64 HeapOffset,
10258 _In_ const D3D12_RESOURCE_DESC *pDesc,
10259 D3D12_RESOURCE_STATES InitialState,
10260 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10261 REFIID riid,
10262 _COM_Outptr_opt_ void **ppvResource);
10263
10264 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10265 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10266 ID3D12Device2 * This,
10267 _In_ const D3D12_RESOURCE_DESC *pDesc,
10268 D3D12_RESOURCE_STATES InitialState,
10269 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10270 REFIID riid,
10271 _COM_Outptr_opt_ void **ppvResource);
10272
10273 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10274 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10275 ID3D12Device2 * This,
10276 _In_ ID3D12DeviceChild *pObject,
10277 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10278 DWORD Access,
10279 _In_opt_ LPCWSTR Name,
10280 _Out_ HANDLE *pHandle);
10281
10282 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10283 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10284 ID3D12Device2 * This,
10285 _In_ HANDLE NTHandle,
10286 REFIID riid,
10287 _COM_Outptr_opt_ void **ppvObj);
10288
10289 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10290 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10291 ID3D12Device2 * This,
10292 _In_ LPCWSTR Name,
10293 DWORD Access,
10294 /* [annotation][out] */
10295 _Out_ HANDLE *pNTHandle);
10296
10297 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10298 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10299 ID3D12Device2 * This,
10300 UINT NumObjects,
10301 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10302
10303 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10304 HRESULT ( STDMETHODCALLTYPE *Evict )(
10305 ID3D12Device2 * This,
10306 UINT NumObjects,
10307 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10308
10309 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10310 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10311 ID3D12Device2 * This,
10312 UINT64 InitialValue,
10313 D3D12_FENCE_FLAGS Flags,
10314 REFIID riid,
10315 _COM_Outptr_ void **ppFence);
10316
10317 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10318 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10319 ID3D12Device2 * This);
10320
10321 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10322 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10323 ID3D12Device2 * This,
10324 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10325 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10326 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10327 UINT64 BaseOffset,
10328 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10329 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10330 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10331 _Out_opt_ UINT64 *pTotalBytes);
10332
10333 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10334 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10335 ID3D12Device2 * This,
10336 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10337 REFIID riid,
10338 _COM_Outptr_opt_ void **ppvHeap);
10339
10340 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10341 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10342 ID3D12Device2 * This,
10343 BOOL Enable);
10344
10345 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10346 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10347 ID3D12Device2 * This,
10348 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10349 _In_opt_ ID3D12RootSignature *pRootSignature,
10350 REFIID riid,
10351 _COM_Outptr_opt_ void **ppvCommandSignature);
10352
10353 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10354 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10355 ID3D12Device2 * This,
10356 _In_ ID3D12Resource *pTiledResource,
10357 _Out_opt_ UINT *pNumTilesForEntireResource,
10358 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10359 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10360 _Inout_opt_ UINT *pNumSubresourceTilings,
10361 _In_ UINT FirstSubresourceTilingToGet,
10362 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10365 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10366 ID3D12Device2 * This,
10367 LUID * RetVal);
10368
10369 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10370 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10371 ID3D12Device2 * This,
10372 _In_reads_(BlobLength) const void *pLibraryBlob,
10373 SIZE_T BlobLength,
10374 REFIID riid,
10375 _COM_Outptr_ void **ppPipelineLibrary);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10378 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10379 ID3D12Device2 * This,
10380 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10381 _In_reads_(NumFences) const UINT64 *pFenceValues,
10382 UINT NumFences,
10383 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10384 HANDLE hEvent);
10385
10386 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10387 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10388 ID3D12Device2 * This,
10389 UINT NumObjects,
10390 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10391 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10392
10393 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10394 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10395 ID3D12Device2 * This,
10396 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10397 REFIID riid,
10398 _COM_Outptr_ void **ppPipelineState);
10399
10400 END_INTERFACE
10401 } ID3D12Device2Vtbl;
10402
10403 interface ID3D12Device2
10404 {
10405 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
10406 };
10407
10408
10409
10410#ifdef COBJMACROS
10411
10412
10413#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
10414 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10415
10416#define ID3D12Device2_AddRef(This) \
10417 ( (This)->lpVtbl -> AddRef(This) )
10418
10419#define ID3D12Device2_Release(This) \
10420 ( (This)->lpVtbl -> Release(This) )
10421
10422
10423#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
10424 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10425
10426#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
10427 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10428
10429#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
10430 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10431
10432#define ID3D12Device2_SetName(This,Name) \
10433 ( (This)->lpVtbl -> SetName(This,Name) )
10434
10435
10436#define ID3D12Device2_GetNodeCount(This) \
10437 ( (This)->lpVtbl -> GetNodeCount(This) )
10438
10439#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10440 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10441
10442#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10443 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10444
10445#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10446 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10447
10448#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10449 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10450
10451#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10452 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10453
10454#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10455 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10456
10457#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10458 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10459
10460#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10461 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10462
10463#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10464 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10465
10466#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10467 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10468
10469#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10470 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10471
10472#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10473 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10474
10475#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10476 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10477
10478#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10479 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10480
10481#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
10482 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10483
10484#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10485 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10486
10487#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10488 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10489
10490#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10491 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10492
10493#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10494 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10495
10496#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10497 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10498
10499#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
10500 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10501
10502#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10503 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10504
10505#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10506 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10507
10508#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10509 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10510
10511#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10512 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10513
10514#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10515 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10516
10517#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
10518 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10519
10520#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
10521 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10522
10523#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10524 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10525
10526#define ID3D12Device2_GetDeviceRemovedReason(This) \
10527 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10528
10529#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10530 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10531
10532#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10533 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10534
10535#define ID3D12Device2_SetStablePowerState(This,Enable) \
10536 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10537
10538#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10539 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10540
10541#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10542 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10543
10544#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
10545 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10546
10547
10548#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10549 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10550
10551#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10552 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10553
10554#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10555 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10556
10557
10558#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
10559 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
10560
10561#endif /* COBJMACROS */
10562
10563
10564#endif /* C style interface */
10565
10566
10567
10568
10569#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
10570
10571
10572/* interface __MIDL_itf_d3d12_0000_0025 */
10573/* [local] */
10574
10575typedef
10576enum D3D12_RESIDENCY_FLAGS
10577 {
10578 D3D12_RESIDENCY_FLAG_NONE = 0,
10579 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
10580 } D3D12_RESIDENCY_FLAGS;
10581
10582DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );
10583
10584
10585extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10586extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10587
10588#ifndef __ID3D12Device3_INTERFACE_DEFINED__
10589#define __ID3D12Device3_INTERFACE_DEFINED__
10590
10591/* interface ID3D12Device3 */
10592/* [unique][local][object][uuid] */
10593
10594
10595EXTERN_C const IID IID_ID3D12Device3;
10596
10597#if defined(__cplusplus) && !defined(CINTERFACE)
10598
10599 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
10600 ID3D12Device3 : public ID3D12Device2
10601 {
10602 public:
10603 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
10604 _In_ const void *pAddress,
10605 REFIID riid,
10606 _COM_Outptr_ void **ppvHeap) = 0;
10607
10608 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
10609 _In_ HANDLE hFileMapping,
10610 REFIID riid,
10611 _COM_Outptr_ void **ppvHeap) = 0;
10612
10613 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
10614 D3D12_RESIDENCY_FLAGS Flags,
10615 UINT NumObjects,
10616 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10617 _In_ ID3D12Fence *pFenceToSignal,
10618 UINT64 FenceValueToSignal) = 0;
10619
10620 };
10621
10622
10623#else /* C style interface */
10624
10625 typedef struct ID3D12Device3Vtbl
10626 {
10627 BEGIN_INTERFACE
10628
10629 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10630 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10631 ID3D12Device3 * This,
10632 REFIID riid,
10633 _COM_Outptr_ void **ppvObject);
10634
10635 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10636 ULONG ( STDMETHODCALLTYPE *AddRef )(
10637 ID3D12Device3 * This);
10638
10639 DECLSPEC_XFGVIRT(IUnknown, Release)
10640 ULONG ( STDMETHODCALLTYPE *Release )(
10641 ID3D12Device3 * This);
10642
10643 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10644 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10645 ID3D12Device3 * This,
10646 _In_ REFGUID guid,
10647 _Inout_ UINT *pDataSize,
10648 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10649
10650 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10651 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10652 ID3D12Device3 * This,
10653 _In_ REFGUID guid,
10654 _In_ UINT DataSize,
10655 _In_reads_bytes_opt_( DataSize ) const void *pData);
10656
10657 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10658 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10659 ID3D12Device3 * This,
10660 _In_ REFGUID guid,
10661 _In_opt_ const IUnknown *pData);
10662
10663 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10664 HRESULT ( STDMETHODCALLTYPE *SetName )(
10665 ID3D12Device3 * This,
10666 _In_z_ LPCWSTR Name);
10667
10668 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10669 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10670 ID3D12Device3 * This);
10671
10672 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10673 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10674 ID3D12Device3 * This,
10675 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10676 REFIID riid,
10677 _COM_Outptr_ void **ppCommandQueue);
10678
10679 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10680 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10681 ID3D12Device3 * This,
10682 _In_ D3D12_COMMAND_LIST_TYPE type,
10683 REFIID riid,
10684 _COM_Outptr_ void **ppCommandAllocator);
10685
10686 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10687 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10688 ID3D12Device3 * This,
10689 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10690 REFIID riid,
10691 _COM_Outptr_ void **ppPipelineState);
10692
10693 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10694 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10695 ID3D12Device3 * This,
10696 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10697 REFIID riid,
10698 _COM_Outptr_ void **ppPipelineState);
10699
10700 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10701 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10702 ID3D12Device3 * This,
10703 _In_ UINT nodeMask,
10704 _In_ D3D12_COMMAND_LIST_TYPE type,
10705 _In_ ID3D12CommandAllocator *pCommandAllocator,
10706 _In_opt_ ID3D12PipelineState *pInitialState,
10707 REFIID riid,
10708 _COM_Outptr_ void **ppCommandList);
10709
10710 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10711 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10712 ID3D12Device3 * This,
10713 D3D12_FEATURE Feature,
10714 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10715 UINT FeatureSupportDataSize);
10716
10717 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10718 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10719 ID3D12Device3 * This,
10720 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10721 REFIID riid,
10722 _COM_Outptr_ void **ppvHeap);
10723
10724 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10725 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10726 ID3D12Device3 * This,
10727 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10728
10729 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10730 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10731 ID3D12Device3 * This,
10732 _In_ UINT nodeMask,
10733 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10734 _In_ SIZE_T blobLengthInBytes,
10735 REFIID riid,
10736 _COM_Outptr_ void **ppvRootSignature);
10737
10738 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10739 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10740 ID3D12Device3 * This,
10741 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10742 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10743
10744 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10745 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10746 ID3D12Device3 * This,
10747 _In_opt_ ID3D12Resource *pResource,
10748 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10749 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10750
10751 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10752 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10753 ID3D12Device3 * This,
10754 _In_opt_ ID3D12Resource *pResource,
10755 _In_opt_ ID3D12Resource *pCounterResource,
10756 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10758
10759 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10760 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10761 ID3D12Device3 * This,
10762 _In_opt_ ID3D12Resource *pResource,
10763 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10764 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10765
10766 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10767 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10768 ID3D12Device3 * This,
10769 _In_opt_ ID3D12Resource *pResource,
10770 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10771 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10772
10773 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10774 void ( STDMETHODCALLTYPE *CreateSampler )(
10775 ID3D12Device3 * This,
10776 _In_ const D3D12_SAMPLER_DESC *pDesc,
10777 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10778
10779 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10780 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10781 ID3D12Device3 * This,
10782 _In_ UINT NumDestDescriptorRanges,
10783 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10784 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10785 _In_ UINT NumSrcDescriptorRanges,
10786 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10787 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10788 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10789
10790 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10791 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10792 ID3D12Device3 * This,
10793 _In_ UINT NumDescriptors,
10794 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10795 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10796 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10797
10798 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10799 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10800 ID3D12Device3 * This,
10801 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10802 _In_ UINT visibleMask,
10803 _In_ UINT numResourceDescs,
10804 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10805
10806 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10807 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10808 ID3D12Device3 * This,
10809 D3D12_HEAP_PROPERTIES * RetVal,
10810 _In_ UINT nodeMask,
10811 D3D12_HEAP_TYPE heapType);
10812
10813 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10814 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10815 ID3D12Device3 * This,
10816 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10817 D3D12_HEAP_FLAGS HeapFlags,
10818 _In_ const D3D12_RESOURCE_DESC *pDesc,
10819 D3D12_RESOURCE_STATES InitialResourceState,
10820 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10821 REFIID riidResource,
10822 _COM_Outptr_opt_ void **ppvResource);
10823
10824 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10825 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10826 ID3D12Device3 * This,
10827 _In_ const D3D12_HEAP_DESC *pDesc,
10828 REFIID riid,
10829 _COM_Outptr_opt_ void **ppvHeap);
10830
10831 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10832 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10833 ID3D12Device3 * This,
10834 _In_ ID3D12Heap *pHeap,
10835 UINT64 HeapOffset,
10836 _In_ const D3D12_RESOURCE_DESC *pDesc,
10837 D3D12_RESOURCE_STATES InitialState,
10838 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10839 REFIID riid,
10840 _COM_Outptr_opt_ void **ppvResource);
10841
10842 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10843 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10844 ID3D12Device3 * This,
10845 _In_ const D3D12_RESOURCE_DESC *pDesc,
10846 D3D12_RESOURCE_STATES InitialState,
10847 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10848 REFIID riid,
10849 _COM_Outptr_opt_ void **ppvResource);
10850
10851 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10852 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10853 ID3D12Device3 * This,
10854 _In_ ID3D12DeviceChild *pObject,
10855 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10856 DWORD Access,
10857 _In_opt_ LPCWSTR Name,
10858 _Out_ HANDLE *pHandle);
10859
10860 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10861 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10862 ID3D12Device3 * This,
10863 _In_ HANDLE NTHandle,
10864 REFIID riid,
10865 _COM_Outptr_opt_ void **ppvObj);
10866
10867 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10868 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10869 ID3D12Device3 * This,
10870 _In_ LPCWSTR Name,
10871 DWORD Access,
10872 /* [annotation][out] */
10873 _Out_ HANDLE *pNTHandle);
10874
10875 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10876 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10877 ID3D12Device3 * This,
10878 UINT NumObjects,
10879 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10880
10881 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10882 HRESULT ( STDMETHODCALLTYPE *Evict )(
10883 ID3D12Device3 * This,
10884 UINT NumObjects,
10885 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10886
10887 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10888 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10889 ID3D12Device3 * This,
10890 UINT64 InitialValue,
10891 D3D12_FENCE_FLAGS Flags,
10892 REFIID riid,
10893 _COM_Outptr_ void **ppFence);
10894
10895 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10896 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10897 ID3D12Device3 * This);
10898
10899 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10900 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10901 ID3D12Device3 * This,
10902 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10903 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10904 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10905 UINT64 BaseOffset,
10906 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10907 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10908 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10909 _Out_opt_ UINT64 *pTotalBytes);
10910
10911 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10912 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10913 ID3D12Device3 * This,
10914 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10915 REFIID riid,
10916 _COM_Outptr_opt_ void **ppvHeap);
10917
10918 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10919 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10920 ID3D12Device3 * This,
10921 BOOL Enable);
10922
10923 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10924 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10925 ID3D12Device3 * This,
10926 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10927 _In_opt_ ID3D12RootSignature *pRootSignature,
10928 REFIID riid,
10929 _COM_Outptr_opt_ void **ppvCommandSignature);
10930
10931 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10932 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10933 ID3D12Device3 * This,
10934 _In_ ID3D12Resource *pTiledResource,
10935 _Out_opt_ UINT *pNumTilesForEntireResource,
10936 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10937 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10938 _Inout_opt_ UINT *pNumSubresourceTilings,
10939 _In_ UINT FirstSubresourceTilingToGet,
10940 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10941
10942 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10943 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10944 ID3D12Device3 * This,
10945 LUID * RetVal);
10946
10947 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10948 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10949 ID3D12Device3 * This,
10950 _In_reads_(BlobLength) const void *pLibraryBlob,
10951 SIZE_T BlobLength,
10952 REFIID riid,
10953 _COM_Outptr_ void **ppPipelineLibrary);
10954
10955 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10956 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10957 ID3D12Device3 * This,
10958 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10959 _In_reads_(NumFences) const UINT64 *pFenceValues,
10960 UINT NumFences,
10961 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10962 HANDLE hEvent);
10963
10964 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10965 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10966 ID3D12Device3 * This,
10967 UINT NumObjects,
10968 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10969 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10970
10971 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10972 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10973 ID3D12Device3 * This,
10974 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10975 REFIID riid,
10976 _COM_Outptr_ void **ppPipelineState);
10977
10978 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
10979 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
10980 ID3D12Device3 * This,
10981 _In_ const void *pAddress,
10982 REFIID riid,
10983 _COM_Outptr_ void **ppvHeap);
10984
10985 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
10986 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
10987 ID3D12Device3 * This,
10988 _In_ HANDLE hFileMapping,
10989 REFIID riid,
10990 _COM_Outptr_ void **ppvHeap);
10991
10992 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
10993 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
10994 ID3D12Device3 * This,
10995 D3D12_RESIDENCY_FLAGS Flags,
10996 UINT NumObjects,
10997 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10998 _In_ ID3D12Fence *pFenceToSignal,
10999 UINT64 FenceValueToSignal);
11000
11001 END_INTERFACE
11002 } ID3D12Device3Vtbl;
11003
11004 interface ID3D12Device3
11005 {
11006 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
11007 };
11008
11009
11010
11011#ifdef COBJMACROS
11012
11013
11014#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
11015 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11016
11017#define ID3D12Device3_AddRef(This) \
11018 ( (This)->lpVtbl -> AddRef(This) )
11019
11020#define ID3D12Device3_Release(This) \
11021 ( (This)->lpVtbl -> Release(This) )
11022
11023
11024#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
11025 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11026
11027#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
11028 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11029
11030#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
11031 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11032
11033#define ID3D12Device3_SetName(This,Name) \
11034 ( (This)->lpVtbl -> SetName(This,Name) )
11035
11036
11037#define ID3D12Device3_GetNodeCount(This) \
11038 ( (This)->lpVtbl -> GetNodeCount(This) )
11039
11040#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11041 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11042
11043#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11044 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11045
11046#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11047 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11048
11049#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11050 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11051
11052#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11053 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11054
11055#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11056 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11057
11058#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11059 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11060
11061#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11062 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11063
11064#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11065 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11066
11067#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11068 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11069
11070#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11071 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11072
11073#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11074 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11075
11076#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11077 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11078
11079#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11080 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11081
11082#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
11083 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11084
11085#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11086 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11087
11088#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11089 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11090
11091#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11092 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11093
11094#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11095 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11096
11097#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11098 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11099
11100#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
11101 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11102
11103#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11104 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11105
11106#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11107 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11108
11109#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11110 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11111
11112#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11113 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11114
11115#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11116 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11117
11118#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
11119 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11120
11121#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
11122 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11123
11124#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11125 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11126
11127#define ID3D12Device3_GetDeviceRemovedReason(This) \
11128 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11129
11130#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11131 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11132
11133#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11134 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11135
11136#define ID3D12Device3_SetStablePowerState(This,Enable) \
11137 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11138
11139#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11140 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11141
11142#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11143 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11144
11145#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
11146 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11147
11148
11149#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11150 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11151
11152#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11153 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11154
11155#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11156 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11157
11158
11159#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11160 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11161
11162
11163#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
11164 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
11165
11166#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
11167 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
11168
11169#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
11170 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
11171
11172#endif /* COBJMACROS */
11173
11174
11175#endif /* C style interface */
11176
11177
11178
11179
11180#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
11181
11182
11183/* interface __MIDL_itf_d3d12_0000_0026 */
11184/* [local] */
11185
11186typedef
11187enum D3D12_COMMAND_LIST_FLAGS
11188 {
11189 D3D12_COMMAND_LIST_FLAG_NONE = 0
11190 } D3D12_COMMAND_LIST_FLAGS;
11191
11192DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );
11193typedef
11194enum D3D12_COMMAND_POOL_FLAGS
11195 {
11196 D3D12_COMMAND_POOL_FLAG_NONE = 0
11197 } D3D12_COMMAND_POOL_FLAGS;
11198
11199DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );
11200typedef
11201enum D3D12_COMMAND_RECORDER_FLAGS
11202 {
11203 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
11204 } D3D12_COMMAND_RECORDER_FLAGS;
11205
11206DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );
11207typedef
11208enum D3D12_PROTECTED_SESSION_STATUS
11209 {
11210 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
11211 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
11212 } D3D12_PROTECTED_SESSION_STATUS;
11213
11214
11215
11216extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_c_ifspec;
11217extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_s_ifspec;
11218
11219#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
11220#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
11221
11222/* interface ID3D12ProtectedSession */
11223/* [unique][local][object][uuid] */
11224
11225
11226EXTERN_C const IID IID_ID3D12ProtectedSession;
11227
11228#if defined(__cplusplus) && !defined(CINTERFACE)
11229
11230 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
11231 ID3D12ProtectedSession : public ID3D12DeviceChild
11232 {
11233 public:
11234 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
11235 REFIID riid,
11236 _COM_Outptr_opt_ void **ppFence) = 0;
11237
11238 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
11239
11240 };
11241
11242
11243#else /* C style interface */
11244
11245 typedef struct ID3D12ProtectedSessionVtbl
11246 {
11247 BEGIN_INTERFACE
11248
11249 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11250 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11251 ID3D12ProtectedSession * This,
11252 REFIID riid,
11253 _COM_Outptr_ void **ppvObject);
11254
11255 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11256 ULONG ( STDMETHODCALLTYPE *AddRef )(
11257 ID3D12ProtectedSession * This);
11258
11259 DECLSPEC_XFGVIRT(IUnknown, Release)
11260 ULONG ( STDMETHODCALLTYPE *Release )(
11261 ID3D12ProtectedSession * This);
11262
11263 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11264 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11265 ID3D12ProtectedSession * This,
11266 _In_ REFGUID guid,
11267 _Inout_ UINT *pDataSize,
11268 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11269
11270 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11271 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11272 ID3D12ProtectedSession * This,
11273 _In_ REFGUID guid,
11274 _In_ UINT DataSize,
11275 _In_reads_bytes_opt_( DataSize ) const void *pData);
11276
11277 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11278 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11279 ID3D12ProtectedSession * This,
11280 _In_ REFGUID guid,
11281 _In_opt_ const IUnknown *pData);
11282
11283 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11284 HRESULT ( STDMETHODCALLTYPE *SetName )(
11285 ID3D12ProtectedSession * This,
11286 _In_z_ LPCWSTR Name);
11287
11288 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11289 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11290 ID3D12ProtectedSession * This,
11291 REFIID riid,
11292 _COM_Outptr_opt_ void **ppvDevice);
11293
11294 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11295 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11296 ID3D12ProtectedSession * This,
11297 REFIID riid,
11298 _COM_Outptr_opt_ void **ppFence);
11299
11300 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11301 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11302 ID3D12ProtectedSession * This);
11303
11304 END_INTERFACE
11305 } ID3D12ProtectedSessionVtbl;
11306
11307 interface ID3D12ProtectedSession
11308 {
11309 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
11310 };
11311
11312
11313
11314#ifdef COBJMACROS
11315
11316
11317#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
11318 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11319
11320#define ID3D12ProtectedSession_AddRef(This) \
11321 ( (This)->lpVtbl -> AddRef(This) )
11322
11323#define ID3D12ProtectedSession_Release(This) \
11324 ( (This)->lpVtbl -> Release(This) )
11325
11326
11327#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
11328 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11329
11330#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
11331 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11332
11333#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
11334 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11335
11336#define ID3D12ProtectedSession_SetName(This,Name) \
11337 ( (This)->lpVtbl -> SetName(This,Name) )
11338
11339
11340#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
11341 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11342
11343
11344#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
11345 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11346
11347#define ID3D12ProtectedSession_GetSessionStatus(This) \
11348 ( (This)->lpVtbl -> GetSessionStatus(This) )
11349
11350#endif /* COBJMACROS */
11351
11352
11353#endif /* C style interface */
11354
11355
11356
11357
11358#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
11359
11360
11361/* interface __MIDL_itf_d3d12_0000_0027 */
11362/* [local] */
11363
11364typedef
11365enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
11366 {
11367 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
11368 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
11369 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
11370
11371DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );
11372typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
11373 {
11374 UINT NodeIndex;
11375 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
11376 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
11377
11378typedef
11379enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
11380 {
11381 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
11382 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
11383
11384DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );
11385typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
11386 {
11387 UINT NodeMask;
11388 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
11389 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
11390
11391
11392
11393extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11394extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11395
11396#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11397#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11398
11399/* interface ID3D12ProtectedResourceSession */
11400/* [unique][local][object][uuid] */
11401
11402
11403EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
11404
11405#if defined(__cplusplus) && !defined(CINTERFACE)
11406
11407 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
11408 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
11409 {
11410 public:
11411 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
11412
11413 };
11414
11415
11416#else /* C style interface */
11417
11418 typedef struct ID3D12ProtectedResourceSessionVtbl
11419 {
11420 BEGIN_INTERFACE
11421
11422 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11423 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11424 ID3D12ProtectedResourceSession * This,
11425 REFIID riid,
11426 _COM_Outptr_ void **ppvObject);
11427
11428 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11429 ULONG ( STDMETHODCALLTYPE *AddRef )(
11430 ID3D12ProtectedResourceSession * This);
11431
11432 DECLSPEC_XFGVIRT(IUnknown, Release)
11433 ULONG ( STDMETHODCALLTYPE *Release )(
11434 ID3D12ProtectedResourceSession * This);
11435
11436 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11437 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11438 ID3D12ProtectedResourceSession * This,
11439 _In_ REFGUID guid,
11440 _Inout_ UINT *pDataSize,
11441 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11442
11443 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11444 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11445 ID3D12ProtectedResourceSession * This,
11446 _In_ REFGUID guid,
11447 _In_ UINT DataSize,
11448 _In_reads_bytes_opt_( DataSize ) const void *pData);
11449
11450 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11451 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11452 ID3D12ProtectedResourceSession * This,
11453 _In_ REFGUID guid,
11454 _In_opt_ const IUnknown *pData);
11455
11456 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11457 HRESULT ( STDMETHODCALLTYPE *SetName )(
11458 ID3D12ProtectedResourceSession * This,
11459 _In_z_ LPCWSTR Name);
11460
11461 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11462 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11463 ID3D12ProtectedResourceSession * This,
11464 REFIID riid,
11465 _COM_Outptr_opt_ void **ppvDevice);
11466
11467 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11468 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11469 ID3D12ProtectedResourceSession * This,
11470 REFIID riid,
11471 _COM_Outptr_opt_ void **ppFence);
11472
11473 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11474 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11475 ID3D12ProtectedResourceSession * This);
11476
11477 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
11478 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
11479 ID3D12ProtectedResourceSession * This,
11480 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
11481
11482 END_INTERFACE
11483 } ID3D12ProtectedResourceSessionVtbl;
11484
11485 interface ID3D12ProtectedResourceSession
11486 {
11487 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
11488 };
11489
11490
11491
11492#ifdef COBJMACROS
11493
11494
11495#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
11496 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11497
11498#define ID3D12ProtectedResourceSession_AddRef(This) \
11499 ( (This)->lpVtbl -> AddRef(This) )
11500
11501#define ID3D12ProtectedResourceSession_Release(This) \
11502 ( (This)->lpVtbl -> Release(This) )
11503
11504
11505#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
11506 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11507
11508#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
11509 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11510
11511#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
11512 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11513
11514#define ID3D12ProtectedResourceSession_SetName(This,Name) \
11515 ( (This)->lpVtbl -> SetName(This,Name) )
11516
11517
11518#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
11519 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11520
11521
11522#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
11523 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11524
11525#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
11526 ( (This)->lpVtbl -> GetSessionStatus(This) )
11527
11528
11529#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
11530 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
11531
11532#endif /* COBJMACROS */
11533
11534
11535#endif /* C style interface */
11536
11537
11538
11539
11540#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
11541
11542
11543#ifndef __ID3D12Device4_INTERFACE_DEFINED__
11544#define __ID3D12Device4_INTERFACE_DEFINED__
11545
11546/* interface ID3D12Device4 */
11547/* [unique][local][object][uuid] */
11548
11549
11550EXTERN_C const IID IID_ID3D12Device4;
11551
11552#if defined(__cplusplus) && !defined(CINTERFACE)
11553
11554 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
11555 ID3D12Device4 : public ID3D12Device3
11556 {
11557 public:
11558 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
11559 _In_ UINT nodeMask,
11560 _In_ D3D12_COMMAND_LIST_TYPE type,
11561 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11562 REFIID riid,
11563 _COM_Outptr_ void **ppCommandList) = 0;
11564
11565 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
11566 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11567 _In_ REFIID riid,
11568 _COM_Outptr_ void **ppSession) = 0;
11569
11570 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
11571 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11572 D3D12_HEAP_FLAGS HeapFlags,
11573 _In_ const D3D12_RESOURCE_DESC *pDesc,
11574 D3D12_RESOURCE_STATES InitialResourceState,
11575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11577 REFIID riidResource,
11578 _COM_Outptr_opt_ void **ppvResource) = 0;
11579
11580 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
11581 _In_ const D3D12_HEAP_DESC *pDesc,
11582 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11583 REFIID riid,
11584 _COM_Outptr_opt_ void **ppvHeap) = 0;
11585
11586 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
11587 _In_ const D3D12_RESOURCE_DESC *pDesc,
11588 D3D12_RESOURCE_STATES InitialState,
11589 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11590 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11591 REFIID riid,
11592 _COM_Outptr_opt_ void **ppvResource) = 0;
11593
11594 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
11595 UINT visibleMask,
11596 UINT numResourceDescs,
11597 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
11598 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
11599
11600 };
11601
11602
11603#else /* C style interface */
11604
11605 typedef struct ID3D12Device4Vtbl
11606 {
11607 BEGIN_INTERFACE
11608
11609 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11610 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11611 ID3D12Device4 * This,
11612 REFIID riid,
11613 _COM_Outptr_ void **ppvObject);
11614
11615 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11616 ULONG ( STDMETHODCALLTYPE *AddRef )(
11617 ID3D12Device4 * This);
11618
11619 DECLSPEC_XFGVIRT(IUnknown, Release)
11620 ULONG ( STDMETHODCALLTYPE *Release )(
11621 ID3D12Device4 * This);
11622
11623 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11624 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11625 ID3D12Device4 * This,
11626 _In_ REFGUID guid,
11627 _Inout_ UINT *pDataSize,
11628 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11629
11630 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11631 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11632 ID3D12Device4 * This,
11633 _In_ REFGUID guid,
11634 _In_ UINT DataSize,
11635 _In_reads_bytes_opt_( DataSize ) const void *pData);
11636
11637 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11638 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11639 ID3D12Device4 * This,
11640 _In_ REFGUID guid,
11641 _In_opt_ const IUnknown *pData);
11642
11643 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11644 HRESULT ( STDMETHODCALLTYPE *SetName )(
11645 ID3D12Device4 * This,
11646 _In_z_ LPCWSTR Name);
11647
11648 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11649 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11650 ID3D12Device4 * This);
11651
11652 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11653 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11654 ID3D12Device4 * This,
11655 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11656 REFIID riid,
11657 _COM_Outptr_ void **ppCommandQueue);
11658
11659 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11660 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11661 ID3D12Device4 * This,
11662 _In_ D3D12_COMMAND_LIST_TYPE type,
11663 REFIID riid,
11664 _COM_Outptr_ void **ppCommandAllocator);
11665
11666 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11667 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11668 ID3D12Device4 * This,
11669 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11670 REFIID riid,
11671 _COM_Outptr_ void **ppPipelineState);
11672
11673 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11674 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11675 ID3D12Device4 * This,
11676 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11677 REFIID riid,
11678 _COM_Outptr_ void **ppPipelineState);
11679
11680 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11681 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11682 ID3D12Device4 * This,
11683 _In_ UINT nodeMask,
11684 _In_ D3D12_COMMAND_LIST_TYPE type,
11685 _In_ ID3D12CommandAllocator *pCommandAllocator,
11686 _In_opt_ ID3D12PipelineState *pInitialState,
11687 REFIID riid,
11688 _COM_Outptr_ void **ppCommandList);
11689
11690 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11691 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11692 ID3D12Device4 * This,
11693 D3D12_FEATURE Feature,
11694 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11695 UINT FeatureSupportDataSize);
11696
11697 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11698 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11699 ID3D12Device4 * This,
11700 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11701 REFIID riid,
11702 _COM_Outptr_ void **ppvHeap);
11703
11704 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11705 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11706 ID3D12Device4 * This,
11707 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11708
11709 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11710 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11711 ID3D12Device4 * This,
11712 _In_ UINT nodeMask,
11713 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11714 _In_ SIZE_T blobLengthInBytes,
11715 REFIID riid,
11716 _COM_Outptr_ void **ppvRootSignature);
11717
11718 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11719 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11720 ID3D12Device4 * This,
11721 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11723
11724 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11725 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11726 ID3D12Device4 * This,
11727 _In_opt_ ID3D12Resource *pResource,
11728 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11729 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11730
11731 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11732 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11733 ID3D12Device4 * This,
11734 _In_opt_ ID3D12Resource *pResource,
11735 _In_opt_ ID3D12Resource *pCounterResource,
11736 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11737 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11738
11739 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11740 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11741 ID3D12Device4 * This,
11742 _In_opt_ ID3D12Resource *pResource,
11743 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11744 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11745
11746 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11747 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11748 ID3D12Device4 * This,
11749 _In_opt_ ID3D12Resource *pResource,
11750 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11751 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11752
11753 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11754 void ( STDMETHODCALLTYPE *CreateSampler )(
11755 ID3D12Device4 * This,
11756 _In_ const D3D12_SAMPLER_DESC *pDesc,
11757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11758
11759 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11760 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11761 ID3D12Device4 * This,
11762 _In_ UINT NumDestDescriptorRanges,
11763 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11764 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11765 _In_ UINT NumSrcDescriptorRanges,
11766 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11767 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11768 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11769
11770 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11771 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11772 ID3D12Device4 * This,
11773 _In_ UINT NumDescriptors,
11774 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11775 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11776 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11777
11778 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11779 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11780 ID3D12Device4 * This,
11781 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11782 _In_ UINT visibleMask,
11783 _In_ UINT numResourceDescs,
11784 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11785
11786 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11787 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11788 ID3D12Device4 * This,
11789 D3D12_HEAP_PROPERTIES * RetVal,
11790 _In_ UINT nodeMask,
11791 D3D12_HEAP_TYPE heapType);
11792
11793 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11794 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11795 ID3D12Device4 * This,
11796 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11797 D3D12_HEAP_FLAGS HeapFlags,
11798 _In_ const D3D12_RESOURCE_DESC *pDesc,
11799 D3D12_RESOURCE_STATES InitialResourceState,
11800 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11801 REFIID riidResource,
11802 _COM_Outptr_opt_ void **ppvResource);
11803
11804 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11805 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11806 ID3D12Device4 * This,
11807 _In_ const D3D12_HEAP_DESC *pDesc,
11808 REFIID riid,
11809 _COM_Outptr_opt_ void **ppvHeap);
11810
11811 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11812 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11813 ID3D12Device4 * This,
11814 _In_ ID3D12Heap *pHeap,
11815 UINT64 HeapOffset,
11816 _In_ const D3D12_RESOURCE_DESC *pDesc,
11817 D3D12_RESOURCE_STATES InitialState,
11818 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11819 REFIID riid,
11820 _COM_Outptr_opt_ void **ppvResource);
11821
11822 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11823 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11824 ID3D12Device4 * This,
11825 _In_ const D3D12_RESOURCE_DESC *pDesc,
11826 D3D12_RESOURCE_STATES InitialState,
11827 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11828 REFIID riid,
11829 _COM_Outptr_opt_ void **ppvResource);
11830
11831 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11832 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11833 ID3D12Device4 * This,
11834 _In_ ID3D12DeviceChild *pObject,
11835 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11836 DWORD Access,
11837 _In_opt_ LPCWSTR Name,
11838 _Out_ HANDLE *pHandle);
11839
11840 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11841 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11842 ID3D12Device4 * This,
11843 _In_ HANDLE NTHandle,
11844 REFIID riid,
11845 _COM_Outptr_opt_ void **ppvObj);
11846
11847 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11848 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11849 ID3D12Device4 * This,
11850 _In_ LPCWSTR Name,
11851 DWORD Access,
11852 /* [annotation][out] */
11853 _Out_ HANDLE *pNTHandle);
11854
11855 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11856 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11857 ID3D12Device4 * This,
11858 UINT NumObjects,
11859 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11860
11861 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11862 HRESULT ( STDMETHODCALLTYPE *Evict )(
11863 ID3D12Device4 * This,
11864 UINT NumObjects,
11865 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11866
11867 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11868 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11869 ID3D12Device4 * This,
11870 UINT64 InitialValue,
11871 D3D12_FENCE_FLAGS Flags,
11872 REFIID riid,
11873 _COM_Outptr_ void **ppFence);
11874
11875 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11876 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11877 ID3D12Device4 * This);
11878
11879 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11880 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11881 ID3D12Device4 * This,
11882 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11883 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11884 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11885 UINT64 BaseOffset,
11886 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11887 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11888 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11889 _Out_opt_ UINT64 *pTotalBytes);
11890
11891 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11892 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11893 ID3D12Device4 * This,
11894 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11895 REFIID riid,
11896 _COM_Outptr_opt_ void **ppvHeap);
11897
11898 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11899 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11900 ID3D12Device4 * This,
11901 BOOL Enable);
11902
11903 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11904 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11905 ID3D12Device4 * This,
11906 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11907 _In_opt_ ID3D12RootSignature *pRootSignature,
11908 REFIID riid,
11909 _COM_Outptr_opt_ void **ppvCommandSignature);
11910
11911 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11912 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11913 ID3D12Device4 * This,
11914 _In_ ID3D12Resource *pTiledResource,
11915 _Out_opt_ UINT *pNumTilesForEntireResource,
11916 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11917 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11918 _Inout_opt_ UINT *pNumSubresourceTilings,
11919 _In_ UINT FirstSubresourceTilingToGet,
11920 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11921
11922 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11923 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11924 ID3D12Device4 * This,
11925 LUID * RetVal);
11926
11927 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11928 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11929 ID3D12Device4 * This,
11930 _In_reads_(BlobLength) const void *pLibraryBlob,
11931 SIZE_T BlobLength,
11932 REFIID riid,
11933 _COM_Outptr_ void **ppPipelineLibrary);
11934
11935 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11936 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11937 ID3D12Device4 * This,
11938 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11939 _In_reads_(NumFences) const UINT64 *pFenceValues,
11940 UINT NumFences,
11941 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11942 HANDLE hEvent);
11943
11944 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11945 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11946 ID3D12Device4 * This,
11947 UINT NumObjects,
11948 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11949 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11950
11951 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11952 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11953 ID3D12Device4 * This,
11954 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11955 REFIID riid,
11956 _COM_Outptr_ void **ppPipelineState);
11957
11958 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
11959 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
11960 ID3D12Device4 * This,
11961 _In_ const void *pAddress,
11962 REFIID riid,
11963 _COM_Outptr_ void **ppvHeap);
11964
11965 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
11966 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
11967 ID3D12Device4 * This,
11968 _In_ HANDLE hFileMapping,
11969 REFIID riid,
11970 _COM_Outptr_ void **ppvHeap);
11971
11972 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
11973 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
11974 ID3D12Device4 * This,
11975 D3D12_RESIDENCY_FLAGS Flags,
11976 UINT NumObjects,
11977 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11978 _In_ ID3D12Fence *pFenceToSignal,
11979 UINT64 FenceValueToSignal);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
11982 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
11983 ID3D12Device4 * This,
11984 _In_ UINT nodeMask,
11985 _In_ D3D12_COMMAND_LIST_TYPE type,
11986 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11987 REFIID riid,
11988 _COM_Outptr_ void **ppCommandList);
11989
11990 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
11991 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
11992 ID3D12Device4 * This,
11993 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11994 _In_ REFIID riid,
11995 _COM_Outptr_ void **ppSession);
11996
11997 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
11998 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
11999 ID3D12Device4 * This,
12000 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12001 D3D12_HEAP_FLAGS HeapFlags,
12002 _In_ const D3D12_RESOURCE_DESC *pDesc,
12003 D3D12_RESOURCE_STATES InitialResourceState,
12004 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12005 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12006 REFIID riidResource,
12007 _COM_Outptr_opt_ void **ppvResource);
12008
12009 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
12010 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
12011 ID3D12Device4 * This,
12012 _In_ const D3D12_HEAP_DESC *pDesc,
12013 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12014 REFIID riid,
12015 _COM_Outptr_opt_ void **ppvHeap);
12016
12017 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
12018 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
12019 ID3D12Device4 * This,
12020 _In_ const D3D12_RESOURCE_DESC *pDesc,
12021 D3D12_RESOURCE_STATES InitialState,
12022 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12023 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12024 REFIID riid,
12025 _COM_Outptr_opt_ void **ppvResource);
12026
12027 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
12028 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
12029 ID3D12Device4 * This,
12030 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12031 UINT visibleMask,
12032 UINT numResourceDescs,
12033 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12034 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
12035
12036 END_INTERFACE
12037 } ID3D12Device4Vtbl;
12038
12039 interface ID3D12Device4
12040 {
12041 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
12042 };
12043
12044
12045
12046#ifdef COBJMACROS
12047
12048
12049#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
12050 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12051
12052#define ID3D12Device4_AddRef(This) \
12053 ( (This)->lpVtbl -> AddRef(This) )
12054
12055#define ID3D12Device4_Release(This) \
12056 ( (This)->lpVtbl -> Release(This) )
12057
12058
12059#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
12060 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12061
12062#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
12063 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12064
12065#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
12066 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12067
12068#define ID3D12Device4_SetName(This,Name) \
12069 ( (This)->lpVtbl -> SetName(This,Name) )
12070
12071
12072#define ID3D12Device4_GetNodeCount(This) \
12073 ( (This)->lpVtbl -> GetNodeCount(This) )
12074
12075#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12076 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12077
12078#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12079 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12080
12081#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12082 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12083
12084#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12085 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12086
12087#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12088 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12089
12090#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12091 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12092
12093#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12094 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12095
12096#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12097 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12098
12099#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12100 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12101
12102#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12103 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12104
12105#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12106 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12107
12108#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12109 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12110
12111#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12112 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12113
12114#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12115 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12116
12117#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
12118 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12119
12120#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12121 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12122
12123#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12124 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12125
12126#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12127 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12128
12129#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12130 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12131
12132#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12133 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12134
12135#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
12136 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12137
12138#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12139 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12140
12141#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12142 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12143
12144#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12145 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12146
12147#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12148 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12149
12150#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12151 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12152
12153#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
12154 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12155
12156#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
12157 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12158
12159#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12160 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12161
12162#define ID3D12Device4_GetDeviceRemovedReason(This) \
12163 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12164
12165#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12166 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12167
12168#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12169 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12170
12171#define ID3D12Device4_SetStablePowerState(This,Enable) \
12172 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12173
12174#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12175 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12176
12177#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12178 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12179
12180#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
12181 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12182
12183
12184#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12185 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12186
12187#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12188 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12189
12190#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12191 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12192
12193
12194#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12195 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12196
12197
12198#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12199 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12200
12201#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12202 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12203
12204#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12205 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12206
12207
12208#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
12209 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
12210
12211#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
12212 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
12213
12214#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
12215 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
12216
12217#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
12218 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
12219
12220#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
12221 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
12222
12223#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
12224 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
12225
12226#endif /* COBJMACROS */
12227
12228
12229#endif /* C style interface */
12230
12231
12232
12233
12234#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
12235
12236
12237/* interface __MIDL_itf_d3d12_0000_0029 */
12238/* [local] */
12239
12240typedef
12241enum D3D12_LIFETIME_STATE
12242 {
12243 D3D12_LIFETIME_STATE_IN_USE = 0,
12244 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
12245 } D3D12_LIFETIME_STATE;
12246
12247
12248
12249
12250extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12251extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12252
12253#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12254#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12255
12256/* interface ID3D12LifetimeOwner */
12257/* [unique][local][object][uuid] */
12258
12259
12260EXTERN_C const IID IID_ID3D12LifetimeOwner;
12261
12262#if defined(__cplusplus) && !defined(CINTERFACE)
12263
12264 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
12265 ID3D12LifetimeOwner : public IUnknown
12266 {
12267 public:
12268 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
12269 D3D12_LIFETIME_STATE NewState) = 0;
12270
12271 };
12272
12273
12274#else /* C style interface */
12275
12276 typedef struct ID3D12LifetimeOwnerVtbl
12277 {
12278 BEGIN_INTERFACE
12279
12280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12282 ID3D12LifetimeOwner * This,
12283 REFIID riid,
12284 _COM_Outptr_ void **ppvObject);
12285
12286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12287 ULONG ( STDMETHODCALLTYPE *AddRef )(
12288 ID3D12LifetimeOwner * This);
12289
12290 DECLSPEC_XFGVIRT(IUnknown, Release)
12291 ULONG ( STDMETHODCALLTYPE *Release )(
12292 ID3D12LifetimeOwner * This);
12293
12294 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
12295 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
12296 ID3D12LifetimeOwner * This,
12297 D3D12_LIFETIME_STATE NewState);
12298
12299 END_INTERFACE
12300 } ID3D12LifetimeOwnerVtbl;
12301
12302 interface ID3D12LifetimeOwner
12303 {
12304 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
12305 };
12306
12307
12308
12309#ifdef COBJMACROS
12310
12311
12312#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
12313 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12314
12315#define ID3D12LifetimeOwner_AddRef(This) \
12316 ( (This)->lpVtbl -> AddRef(This) )
12317
12318#define ID3D12LifetimeOwner_Release(This) \
12319 ( (This)->lpVtbl -> Release(This) )
12320
12321
12322#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
12323 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
12324
12325#endif /* COBJMACROS */
12326
12327
12328#endif /* C style interface */
12329
12330
12331
12332
12333#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
12334
12335
12336#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12337#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12338
12339/* interface ID3D12SwapChainAssistant */
12340/* [unique][local][object][uuid] */
12341
12342
12343EXTERN_C const IID IID_ID3D12SwapChainAssistant;
12344
12345#if defined(__cplusplus) && !defined(CINTERFACE)
12346
12347 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
12348 ID3D12SwapChainAssistant : public IUnknown
12349 {
12350 public:
12351 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
12352
12353 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
12354 REFIID riid,
12355 _COM_Outptr_ void **ppv) = 0;
12356
12357 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
12358 REFIID riidResource,
12359 _COM_Outptr_ void **ppvResource,
12360 REFIID riidQueue,
12361 _COM_Outptr_ void **ppvQueue) = 0;
12362
12363 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
12364
12365 };
12366
12367
12368#else /* C style interface */
12369
12370 typedef struct ID3D12SwapChainAssistantVtbl
12371 {
12372 BEGIN_INTERFACE
12373
12374 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12375 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12376 ID3D12SwapChainAssistant * This,
12377 REFIID riid,
12378 _COM_Outptr_ void **ppvObject);
12379
12380 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12381 ULONG ( STDMETHODCALLTYPE *AddRef )(
12382 ID3D12SwapChainAssistant * This);
12383
12384 DECLSPEC_XFGVIRT(IUnknown, Release)
12385 ULONG ( STDMETHODCALLTYPE *Release )(
12386 ID3D12SwapChainAssistant * This);
12387
12388 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
12389 LUID *( STDMETHODCALLTYPE *GetLUID )(
12390 ID3D12SwapChainAssistant * This,
12391 LUID * RetVal);
12392
12393 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
12394 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
12395 ID3D12SwapChainAssistant * This,
12396 REFIID riid,
12397 _COM_Outptr_ void **ppv);
12398
12399 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
12400 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
12401 ID3D12SwapChainAssistant * This,
12402 REFIID riidResource,
12403 _COM_Outptr_ void **ppvResource,
12404 REFIID riidQueue,
12405 _COM_Outptr_ void **ppvQueue);
12406
12407 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
12408 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
12409 ID3D12SwapChainAssistant * This);
12410
12411 END_INTERFACE
12412 } ID3D12SwapChainAssistantVtbl;
12413
12414 interface ID3D12SwapChainAssistant
12415 {
12416 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
12417 };
12418
12419
12420
12421#ifdef COBJMACROS
12422
12423
12424#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
12425 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12426
12427#define ID3D12SwapChainAssistant_AddRef(This) \
12428 ( (This)->lpVtbl -> AddRef(This) )
12429
12430#define ID3D12SwapChainAssistant_Release(This) \
12431 ( (This)->lpVtbl -> Release(This) )
12432
12433
12434#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
12435 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
12436
12437#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
12438 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
12439
12440#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
12441 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
12442
12443#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
12444 ( (This)->lpVtbl -> InsertImplicitSync(This) )
12445
12446#endif /* COBJMACROS */
12447
12448
12449#endif /* C style interface */
12450
12451
12452
12453
12454#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
12455
12456
12457#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12458#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12459
12460/* interface ID3D12LifetimeTracker */
12461/* [unique][local][object][uuid] */
12462
12463
12464EXTERN_C const IID IID_ID3D12LifetimeTracker;
12465
12466#if defined(__cplusplus) && !defined(CINTERFACE)
12467
12468 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
12469 ID3D12LifetimeTracker : public ID3D12DeviceChild
12470 {
12471 public:
12472 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
12473 _In_ ID3D12DeviceChild *pObject) = 0;
12474
12475 };
12476
12477
12478#else /* C style interface */
12479
12480 typedef struct ID3D12LifetimeTrackerVtbl
12481 {
12482 BEGIN_INTERFACE
12483
12484 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12485 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12486 ID3D12LifetimeTracker * This,
12487 REFIID riid,
12488 _COM_Outptr_ void **ppvObject);
12489
12490 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12491 ULONG ( STDMETHODCALLTYPE *AddRef )(
12492 ID3D12LifetimeTracker * This);
12493
12494 DECLSPEC_XFGVIRT(IUnknown, Release)
12495 ULONG ( STDMETHODCALLTYPE *Release )(
12496 ID3D12LifetimeTracker * This);
12497
12498 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12499 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12500 ID3D12LifetimeTracker * This,
12501 _In_ REFGUID guid,
12502 _Inout_ UINT *pDataSize,
12503 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12504
12505 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12506 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12507 ID3D12LifetimeTracker * This,
12508 _In_ REFGUID guid,
12509 _In_ UINT DataSize,
12510 _In_reads_bytes_opt_( DataSize ) const void *pData);
12511
12512 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12513 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12514 ID3D12LifetimeTracker * This,
12515 _In_ REFGUID guid,
12516 _In_opt_ const IUnknown *pData);
12517
12518 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12519 HRESULT ( STDMETHODCALLTYPE *SetName )(
12520 ID3D12LifetimeTracker * This,
12521 _In_z_ LPCWSTR Name);
12522
12523 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12524 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12525 ID3D12LifetimeTracker * This,
12526 REFIID riid,
12527 _COM_Outptr_opt_ void **ppvDevice);
12528
12529 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
12530 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
12531 ID3D12LifetimeTracker * This,
12532 _In_ ID3D12DeviceChild *pObject);
12533
12534 END_INTERFACE
12535 } ID3D12LifetimeTrackerVtbl;
12536
12537 interface ID3D12LifetimeTracker
12538 {
12539 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
12540 };
12541
12542
12543
12544#ifdef COBJMACROS
12545
12546
12547#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
12548 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12549
12550#define ID3D12LifetimeTracker_AddRef(This) \
12551 ( (This)->lpVtbl -> AddRef(This) )
12552
12553#define ID3D12LifetimeTracker_Release(This) \
12554 ( (This)->lpVtbl -> Release(This) )
12555
12556
12557#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
12558 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12559
12560#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
12561 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12562
12563#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
12564 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12565
12566#define ID3D12LifetimeTracker_SetName(This,Name) \
12567 ( (This)->lpVtbl -> SetName(This,Name) )
12568
12569
12570#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
12571 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12572
12573
12574#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
12575 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
12576
12577#endif /* COBJMACROS */
12578
12579
12580#endif /* C style interface */
12581
12582
12583
12584
12585#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
12586
12587
12588/* interface __MIDL_itf_d3d12_0000_0032 */
12589/* [local] */
12590
12591typedef
12592enum D3D12_META_COMMAND_PARAMETER_TYPE
12593 {
12594 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
12595 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
12596 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
12597 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
12598 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
12599 } D3D12_META_COMMAND_PARAMETER_TYPE;
12600
12601typedef
12602enum D3D12_META_COMMAND_PARAMETER_FLAGS
12603 {
12604 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
12605 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
12606 } D3D12_META_COMMAND_PARAMETER_FLAGS;
12607
12608DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );
12609typedef
12610enum D3D12_META_COMMAND_PARAMETER_STAGE
12611 {
12612 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
12613 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
12614 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
12615 } D3D12_META_COMMAND_PARAMETER_STAGE;
12616
12617typedef struct D3D12_META_COMMAND_PARAMETER_DESC
12618 {
12619 LPCWSTR Name;
12620 D3D12_META_COMMAND_PARAMETER_TYPE Type;
12621 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
12622 D3D12_RESOURCE_STATES RequiredResourceState;
12623 UINT StructureOffset;
12624 } D3D12_META_COMMAND_PARAMETER_DESC;
12625
12626typedef
12627enum D3D12_GRAPHICS_STATES
12628 {
12629 D3D12_GRAPHICS_STATE_NONE = 0,
12630 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
12631 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
12632 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
12633 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
12634 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
12635 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
12636 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
12637 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
12638 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
12639 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
12640 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
12641 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
12642 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
12643 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
12644 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
12645 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
12646 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
12647 } D3D12_GRAPHICS_STATES;
12648
12649DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );
12650typedef struct D3D12_META_COMMAND_DESC
12651 {
12652 GUID Id;
12653 LPCWSTR Name;
12654 D3D12_GRAPHICS_STATES InitializationDirtyState;
12655 D3D12_GRAPHICS_STATES ExecutionDirtyState;
12656 } D3D12_META_COMMAND_DESC;
12657
12658
12659
12660extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_c_ifspec;
12661extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_s_ifspec;
12662
12663#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
12664#define __ID3D12StateObject_INTERFACE_DEFINED__
12665
12666/* interface ID3D12StateObject */
12667/* [unique][local][object][uuid] */
12668
12669
12670EXTERN_C const IID IID_ID3D12StateObject;
12671
12672#if defined(__cplusplus) && !defined(CINTERFACE)
12673
12674 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
12675 ID3D12StateObject : public ID3D12Pageable
12676 {
12677 public:
12678 };
12679
12680
12681#else /* C style interface */
12682
12683 typedef struct ID3D12StateObjectVtbl
12684 {
12685 BEGIN_INTERFACE
12686
12687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12689 ID3D12StateObject * This,
12690 REFIID riid,
12691 _COM_Outptr_ void **ppvObject);
12692
12693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12694 ULONG ( STDMETHODCALLTYPE *AddRef )(
12695 ID3D12StateObject * This);
12696
12697 DECLSPEC_XFGVIRT(IUnknown, Release)
12698 ULONG ( STDMETHODCALLTYPE *Release )(
12699 ID3D12StateObject * This);
12700
12701 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12702 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12703 ID3D12StateObject * This,
12704 _In_ REFGUID guid,
12705 _Inout_ UINT *pDataSize,
12706 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12707
12708 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12709 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12710 ID3D12StateObject * This,
12711 _In_ REFGUID guid,
12712 _In_ UINT DataSize,
12713 _In_reads_bytes_opt_( DataSize ) const void *pData);
12714
12715 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12716 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12717 ID3D12StateObject * This,
12718 _In_ REFGUID guid,
12719 _In_opt_ const IUnknown *pData);
12720
12721 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12722 HRESULT ( STDMETHODCALLTYPE *SetName )(
12723 ID3D12StateObject * This,
12724 _In_z_ LPCWSTR Name);
12725
12726 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12727 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12728 ID3D12StateObject * This,
12729 REFIID riid,
12730 _COM_Outptr_opt_ void **ppvDevice);
12731
12732 END_INTERFACE
12733 } ID3D12StateObjectVtbl;
12734
12735 interface ID3D12StateObject
12736 {
12737 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
12738 };
12739
12740
12741
12742#ifdef COBJMACROS
12743
12744
12745#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
12746 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12747
12748#define ID3D12StateObject_AddRef(This) \
12749 ( (This)->lpVtbl -> AddRef(This) )
12750
12751#define ID3D12StateObject_Release(This) \
12752 ( (This)->lpVtbl -> Release(This) )
12753
12754
12755#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
12756 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12757
12758#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
12759 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12760
12761#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
12762 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12763
12764#define ID3D12StateObject_SetName(This,Name) \
12765 ( (This)->lpVtbl -> SetName(This,Name) )
12766
12767
12768#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
12769 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12770
12771
12772
12773#endif /* COBJMACROS */
12774
12775
12776#endif /* C style interface */
12777
12778
12779
12780
12781#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
12782
12783
12784#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12785#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12786
12787/* interface ID3D12StateObjectProperties */
12788/* [unique][local][object][uuid] */
12789
12790
12791EXTERN_C const IID IID_ID3D12StateObjectProperties;
12792
12793#if defined(__cplusplus) && !defined(CINTERFACE)
12794
12795 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
12796 ID3D12StateObjectProperties : public IUnknown
12797 {
12798 public:
12799 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
12800 _In_ LPCWSTR pExportName) = 0;
12801
12802 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
12803 _In_ LPCWSTR pExportName) = 0;
12804
12805 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
12806
12807 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
12808 UINT64 PipelineStackSizeInBytes) = 0;
12809
12810 };
12811
12812
12813#else /* C style interface */
12814
12815 typedef struct ID3D12StateObjectPropertiesVtbl
12816 {
12817 BEGIN_INTERFACE
12818
12819 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12820 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12821 ID3D12StateObjectProperties * This,
12822 REFIID riid,
12823 _COM_Outptr_ void **ppvObject);
12824
12825 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12826 ULONG ( STDMETHODCALLTYPE *AddRef )(
12827 ID3D12StateObjectProperties * This);
12828
12829 DECLSPEC_XFGVIRT(IUnknown, Release)
12830 ULONG ( STDMETHODCALLTYPE *Release )(
12831 ID3D12StateObjectProperties * This);
12832
12833 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
12834 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
12835 ID3D12StateObjectProperties * This,
12836 _In_ LPCWSTR pExportName);
12837
12838 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
12839 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
12840 ID3D12StateObjectProperties * This,
12841 _In_ LPCWSTR pExportName);
12842
12843 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
12844 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
12845 ID3D12StateObjectProperties * This);
12846
12847 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
12848 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
12849 ID3D12StateObjectProperties * This,
12850 UINT64 PipelineStackSizeInBytes);
12851
12852 END_INTERFACE
12853 } ID3D12StateObjectPropertiesVtbl;
12854
12855 interface ID3D12StateObjectProperties
12856 {
12857 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
12858 };
12859
12860
12861
12862#ifdef COBJMACROS
12863
12864
12865#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
12866 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12867
12868#define ID3D12StateObjectProperties_AddRef(This) \
12869 ( (This)->lpVtbl -> AddRef(This) )
12870
12871#define ID3D12StateObjectProperties_Release(This) \
12872 ( (This)->lpVtbl -> Release(This) )
12873
12874
12875#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
12876 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
12877
12878#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
12879 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
12880
12881#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
12882 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
12883
12884#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
12885 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
12886
12887#endif /* COBJMACROS */
12888
12889
12890#endif /* C style interface */
12891
12892
12893
12894
12895#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
12896
12897
12898/* interface __MIDL_itf_d3d12_0000_0034 */
12899/* [local] */
12900
12901typedef
12902enum D3D12_STATE_SUBOBJECT_TYPE
12903 {
12904 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
12905 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
12906 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
12907 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
12908 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
12909 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
12910 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
12911 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
12912 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
12913 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
12914 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
12915 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
12916 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 + 1 )
12917 } D3D12_STATE_SUBOBJECT_TYPE;
12918
12919typedef struct D3D12_STATE_SUBOBJECT
12920 {
12921 D3D12_STATE_SUBOBJECT_TYPE Type;
12922 const void *pDesc;
12923 } D3D12_STATE_SUBOBJECT;
12924
12925typedef
12926enum D3D12_STATE_OBJECT_FLAGS
12927 {
12928 D3D12_STATE_OBJECT_FLAG_NONE = 0,
12929 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
12930 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
12931 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
12932 } D3D12_STATE_OBJECT_FLAGS;
12933
12934DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );
12935typedef struct D3D12_STATE_OBJECT_CONFIG
12936 {
12937 D3D12_STATE_OBJECT_FLAGS Flags;
12938 } D3D12_STATE_OBJECT_CONFIG;
12939
12940typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
12941 {
12942 ID3D12RootSignature *pGlobalRootSignature;
12943 } D3D12_GLOBAL_ROOT_SIGNATURE;
12944
12945typedef struct D3D12_LOCAL_ROOT_SIGNATURE
12946 {
12947 ID3D12RootSignature *pLocalRootSignature;
12948 } D3D12_LOCAL_ROOT_SIGNATURE;
12949
12950typedef struct D3D12_NODE_MASK
12951 {
12952 UINT NodeMask;
12953 } D3D12_NODE_MASK;
12954
12955typedef
12956enum D3D12_EXPORT_FLAGS
12957 {
12958 D3D12_EXPORT_FLAG_NONE = 0
12959 } D3D12_EXPORT_FLAGS;
12960
12961DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );
12962typedef struct D3D12_EXPORT_DESC
12963 {
12964 LPCWSTR Name;
12965 _In_opt_ LPCWSTR ExportToRename;
12966 D3D12_EXPORT_FLAGS Flags;
12967 } D3D12_EXPORT_DESC;
12968
12969typedef struct D3D12_DXIL_LIBRARY_DESC
12970 {
12971 D3D12_SHADER_BYTECODE DXILLibrary;
12972 UINT NumExports;
12973 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12974 } D3D12_DXIL_LIBRARY_DESC;
12975
12976typedef struct D3D12_EXISTING_COLLECTION_DESC
12977 {
12978 ID3D12StateObject *pExistingCollection;
12979 UINT NumExports;
12980 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12981 } D3D12_EXISTING_COLLECTION_DESC;
12982
12983typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12984 {
12985 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
12986 UINT NumExports;
12987 _In_reads_(NumExports) LPCWSTR *pExports;
12988 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12989
12990typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12991 {
12992 LPCWSTR SubobjectToAssociate;
12993 UINT NumExports;
12994 _In_reads_(NumExports) LPCWSTR *pExports;
12995 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12996
12997typedef
12998enum D3D12_HIT_GROUP_TYPE
12999 {
13000 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
13001 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
13002 } D3D12_HIT_GROUP_TYPE;
13003
13004typedef struct D3D12_HIT_GROUP_DESC
13005 {
13006 LPCWSTR HitGroupExport;
13007 D3D12_HIT_GROUP_TYPE Type;
13008 _In_opt_ LPCWSTR AnyHitShaderImport;
13009 _In_opt_ LPCWSTR ClosestHitShaderImport;
13010 _In_opt_ LPCWSTR IntersectionShaderImport;
13011 } D3D12_HIT_GROUP_DESC;
13012
13013typedef struct D3D12_RAYTRACING_SHADER_CONFIG
13014 {
13015 UINT MaxPayloadSizeInBytes;
13016 UINT MaxAttributeSizeInBytes;
13017 } D3D12_RAYTRACING_SHADER_CONFIG;
13018
13019typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
13020 {
13021 UINT MaxTraceRecursionDepth;
13022 } D3D12_RAYTRACING_PIPELINE_CONFIG;
13023
13024typedef
13025enum D3D12_RAYTRACING_PIPELINE_FLAGS
13026 {
13027 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
13028 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
13029 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13030 } D3D12_RAYTRACING_PIPELINE_FLAGS;
13031
13032DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );
13033typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
13034 {
13035 UINT MaxTraceRecursionDepth;
13036 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
13037 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
13038
13039typedef
13040enum D3D12_STATE_OBJECT_TYPE
13041 {
13042 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
13043 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3
13044 } D3D12_STATE_OBJECT_TYPE;
13045
13046typedef struct D3D12_STATE_OBJECT_DESC
13047 {
13048 D3D12_STATE_OBJECT_TYPE Type;
13049 UINT NumSubobjects;
13050 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
13051 } D3D12_STATE_OBJECT_DESC;
13052
13053typedef
13054enum D3D12_RAYTRACING_GEOMETRY_FLAGS
13055 {
13056 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
13057 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
13058 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
13059 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
13060
13061DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );
13062typedef
13063enum D3D12_RAYTRACING_GEOMETRY_TYPE
13064 {
13065 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
13066 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 )
13067 } D3D12_RAYTRACING_GEOMETRY_TYPE;
13068
13069typedef
13070enum D3D12_RAYTRACING_INSTANCE_FLAGS
13071 {
13072 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
13073 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
13074 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
13075 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
13076 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
13077 } D3D12_RAYTRACING_INSTANCE_FLAGS;
13078
13079DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );
13080typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
13081 {
13082 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13083 UINT64 StrideInBytes;
13084 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
13085
13086typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
13087 {
13088 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13089 UINT64 SizeInBytes;
13090 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
13091
13092typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
13093 {
13094 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13095 UINT64 SizeInBytes;
13096 UINT64 StrideInBytes;
13097 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
13098
13099typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
13100 {
13101 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
13102 DXGI_FORMAT IndexFormat;
13103 DXGI_FORMAT VertexFormat;
13104 UINT IndexCount;
13105 UINT VertexCount;
13106 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
13107 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
13108 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
13109
13110typedef struct D3D12_RAYTRACING_AABB
13111 {
13112 FLOAT MinX;
13113 FLOAT MinY;
13114 FLOAT MinZ;
13115 FLOAT MaxX;
13116 FLOAT MaxY;
13117 FLOAT MaxZ;
13118 } D3D12_RAYTRACING_AABB;
13119
13120typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
13121 {
13122 UINT64 AABBCount;
13123 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
13124 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
13125
13126typedef
13127enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
13128 {
13129 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
13130 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
13131 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
13132 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
13133 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
13134 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
13135 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
13136 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
13137
13138DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );
13139typedef
13140enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
13141 {
13142 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
13143 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
13144 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
13145 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
13146 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
13147 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
13148
13149typedef
13150enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
13151 {
13152 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
13153 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
13154 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
13155
13156typedef
13157enum D3D12_ELEMENTS_LAYOUT
13158 {
13159 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
13160 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
13161 } D3D12_ELEMENTS_LAYOUT;
13162
13163typedef
13164enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
13165 {
13166 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
13167 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
13168 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
13169 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
13170 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
13171
13172typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
13173 {
13174 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
13175 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
13176 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
13177
13178typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
13179 {
13180 UINT64 CompactedSizeInBytes;
13181 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
13182
13183typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
13184 {
13185 UINT64 DecodedSizeInBytes;
13186 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
13187
13188typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
13189 {
13190 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13191 UINT NumDescs;
13192 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
13193
13194// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
13195// depending on Type field, NumDescs above is followed by either:
13196// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
13197// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
13198// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
13199
13200typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
13201 {
13202 UINT64 SerializedSizeInBytes;
13203 UINT64 NumBottomLevelAccelerationStructurePointers;
13204 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
13205
13206typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
13207 {
13208 GUID DriverOpaqueGUID;
13209 BYTE DriverOpaqueVersioningData[ 16 ];
13210 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
13211
13212typedef
13213enum D3D12_SERIALIZED_DATA_TYPE
13214 {
13215 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0
13216 } D3D12_SERIALIZED_DATA_TYPE;
13217
13218typedef
13219enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
13220 {
13221 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
13222 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
13223 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
13224 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
13225 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
13226 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
13227
13228typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
13229 {
13230 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
13231 UINT64 SerializedSizeInBytesIncludingHeader;
13232 UINT64 DeserializedSizeInBytes;
13233 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
13234 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
13235
13236typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
13237 {
13238 UINT64 CurrentSizeInBytes;
13239 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
13240
13241typedef struct D3D12_RAYTRACING_INSTANCE_DESC
13242 {
13243 FLOAT Transform[ 3 ][ 4 ];
13244 UINT InstanceID : 24;
13245 UINT InstanceMask : 8;
13246 UINT InstanceContributionToHitGroupIndex : 24;
13247 UINT Flags : 8;
13248 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
13249 } D3D12_RAYTRACING_INSTANCE_DESC;
13250
13251typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
13252 {
13253 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
13254 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
13255 union
13256 {
13257 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
13258 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
13259 } ;
13260 } D3D12_RAYTRACING_GEOMETRY_DESC;
13261
13262typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
13263 {
13264 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13265 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
13266 UINT NumDescs;
13267 D3D12_ELEMENTS_LAYOUT DescsLayout;
13268 union
13269 {
13270 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
13271 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
13272 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
13273 } ;
13274 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
13275
13276typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
13277 {
13278 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
13279 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
13280 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
13281 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
13282 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
13283
13284typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
13285 {
13286 UINT64 ResultDataMaxSizeInBytes;
13287 UINT64 ScratchDataSizeInBytes;
13288 UINT64 UpdateScratchDataSizeInBytes;
13289 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
13290
13291typedef
13292enum D3D12_RAY_FLAGS
13293 {
13294 D3D12_RAY_FLAG_NONE = 0,
13295 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
13296 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
13297 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
13298 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
13299 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
13300 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
13301 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
13302 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
13303 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
13304 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13305 } D3D12_RAY_FLAGS;
13306
13307DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );
13308typedef
13309enum D3D12_HIT_KIND
13310 {
13311 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
13312 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
13313 } D3D12_HIT_KIND;
13314
13315
13316
13317extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
13318extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
13319
13320#ifndef __ID3D12Device5_INTERFACE_DEFINED__
13321#define __ID3D12Device5_INTERFACE_DEFINED__
13322
13323/* interface ID3D12Device5 */
13324/* [unique][local][object][uuid] */
13325
13326
13327EXTERN_C const IID IID_ID3D12Device5;
13328
13329#if defined(__cplusplus) && !defined(CINTERFACE)
13330
13331 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
13332 ID3D12Device5 : public ID3D12Device4
13333 {
13334 public:
13335 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
13336 _In_ ID3D12LifetimeOwner *pOwner,
13337 REFIID riid,
13338 _COM_Outptr_ void **ppvTracker) = 0;
13339
13340 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
13341
13342 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
13343 _Inout_ UINT *pNumMetaCommands,
13344 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
13345
13346 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
13347 _In_ REFGUID CommandId,
13348 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13349 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13350 _Inout_ UINT *pParameterCount,
13351 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
13352
13353 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
13354 _In_ REFGUID CommandId,
13355 _In_ UINT NodeMask,
13356 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13357 _In_ SIZE_T CreationParametersDataSizeInBytes,
13358 REFIID riid,
13359 _COM_Outptr_ void **ppMetaCommand) = 0;
13360
13361 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
13362 const D3D12_STATE_OBJECT_DESC *pDesc,
13363 REFIID riid,
13364 _COM_Outptr_ void **ppStateObject) = 0;
13365
13366 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
13367 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13368 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
13369
13370 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
13371 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13372 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
13373
13374 };
13375
13376
13377#else /* C style interface */
13378
13379 typedef struct ID3D12Device5Vtbl
13380 {
13381 BEGIN_INTERFACE
13382
13383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13385 ID3D12Device5 * This,
13386 REFIID riid,
13387 _COM_Outptr_ void **ppvObject);
13388
13389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13390 ULONG ( STDMETHODCALLTYPE *AddRef )(
13391 ID3D12Device5 * This);
13392
13393 DECLSPEC_XFGVIRT(IUnknown, Release)
13394 ULONG ( STDMETHODCALLTYPE *Release )(
13395 ID3D12Device5 * This);
13396
13397 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13398 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13399 ID3D12Device5 * This,
13400 _In_ REFGUID guid,
13401 _Inout_ UINT *pDataSize,
13402 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13403
13404 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13405 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13406 ID3D12Device5 * This,
13407 _In_ REFGUID guid,
13408 _In_ UINT DataSize,
13409 _In_reads_bytes_opt_( DataSize ) const void *pData);
13410
13411 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13412 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13413 ID3D12Device5 * This,
13414 _In_ REFGUID guid,
13415 _In_opt_ const IUnknown *pData);
13416
13417 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13418 HRESULT ( STDMETHODCALLTYPE *SetName )(
13419 ID3D12Device5 * This,
13420 _In_z_ LPCWSTR Name);
13421
13422 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13423 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13424 ID3D12Device5 * This);
13425
13426 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13427 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13428 ID3D12Device5 * This,
13429 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13430 REFIID riid,
13431 _COM_Outptr_ void **ppCommandQueue);
13432
13433 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13434 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13435 ID3D12Device5 * This,
13436 _In_ D3D12_COMMAND_LIST_TYPE type,
13437 REFIID riid,
13438 _COM_Outptr_ void **ppCommandAllocator);
13439
13440 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13441 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13442 ID3D12Device5 * This,
13443 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13444 REFIID riid,
13445 _COM_Outptr_ void **ppPipelineState);
13446
13447 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13448 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13449 ID3D12Device5 * This,
13450 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13451 REFIID riid,
13452 _COM_Outptr_ void **ppPipelineState);
13453
13454 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13455 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13456 ID3D12Device5 * This,
13457 _In_ UINT nodeMask,
13458 _In_ D3D12_COMMAND_LIST_TYPE type,
13459 _In_ ID3D12CommandAllocator *pCommandAllocator,
13460 _In_opt_ ID3D12PipelineState *pInitialState,
13461 REFIID riid,
13462 _COM_Outptr_ void **ppCommandList);
13463
13464 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13465 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13466 ID3D12Device5 * This,
13467 D3D12_FEATURE Feature,
13468 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13469 UINT FeatureSupportDataSize);
13470
13471 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13472 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13473 ID3D12Device5 * This,
13474 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13475 REFIID riid,
13476 _COM_Outptr_ void **ppvHeap);
13477
13478 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13479 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13480 ID3D12Device5 * This,
13481 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13482
13483 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13484 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13485 ID3D12Device5 * This,
13486 _In_ UINT nodeMask,
13487 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13488 _In_ SIZE_T blobLengthInBytes,
13489 REFIID riid,
13490 _COM_Outptr_ void **ppvRootSignature);
13491
13492 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13493 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13494 ID3D12Device5 * This,
13495 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13496 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13497
13498 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13499 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13500 ID3D12Device5 * This,
13501 _In_opt_ ID3D12Resource *pResource,
13502 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13504
13505 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13506 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13507 ID3D12Device5 * This,
13508 _In_opt_ ID3D12Resource *pResource,
13509 _In_opt_ ID3D12Resource *pCounterResource,
13510 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13511 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13512
13513 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13514 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13515 ID3D12Device5 * This,
13516 _In_opt_ ID3D12Resource *pResource,
13517 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13518 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13519
13520 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13521 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13522 ID3D12Device5 * This,
13523 _In_opt_ ID3D12Resource *pResource,
13524 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13525 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13526
13527 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13528 void ( STDMETHODCALLTYPE *CreateSampler )(
13529 ID3D12Device5 * This,
13530 _In_ const D3D12_SAMPLER_DESC *pDesc,
13531 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13532
13533 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13534 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13535 ID3D12Device5 * This,
13536 _In_ UINT NumDestDescriptorRanges,
13537 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13538 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13539 _In_ UINT NumSrcDescriptorRanges,
13540 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13541 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13542 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13543
13544 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13545 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13546 ID3D12Device5 * This,
13547 _In_ UINT NumDescriptors,
13548 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13550 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13551
13552 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13553 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13554 ID3D12Device5 * This,
13555 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13556 _In_ UINT visibleMask,
13557 _In_ UINT numResourceDescs,
13558 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13559
13560 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13561 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13562 ID3D12Device5 * This,
13563 D3D12_HEAP_PROPERTIES * RetVal,
13564 _In_ UINT nodeMask,
13565 D3D12_HEAP_TYPE heapType);
13566
13567 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13568 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13569 ID3D12Device5 * This,
13570 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13571 D3D12_HEAP_FLAGS HeapFlags,
13572 _In_ const D3D12_RESOURCE_DESC *pDesc,
13573 D3D12_RESOURCE_STATES InitialResourceState,
13574 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13575 REFIID riidResource,
13576 _COM_Outptr_opt_ void **ppvResource);
13577
13578 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13579 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13580 ID3D12Device5 * This,
13581 _In_ const D3D12_HEAP_DESC *pDesc,
13582 REFIID riid,
13583 _COM_Outptr_opt_ void **ppvHeap);
13584
13585 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13586 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13587 ID3D12Device5 * This,
13588 _In_ ID3D12Heap *pHeap,
13589 UINT64 HeapOffset,
13590 _In_ const D3D12_RESOURCE_DESC *pDesc,
13591 D3D12_RESOURCE_STATES InitialState,
13592 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13593 REFIID riid,
13594 _COM_Outptr_opt_ void **ppvResource);
13595
13596 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13597 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13598 ID3D12Device5 * This,
13599 _In_ const D3D12_RESOURCE_DESC *pDesc,
13600 D3D12_RESOURCE_STATES InitialState,
13601 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13602 REFIID riid,
13603 _COM_Outptr_opt_ void **ppvResource);
13604
13605 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13606 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13607 ID3D12Device5 * This,
13608 _In_ ID3D12DeviceChild *pObject,
13609 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13610 DWORD Access,
13611 _In_opt_ LPCWSTR Name,
13612 _Out_ HANDLE *pHandle);
13613
13614 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13615 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13616 ID3D12Device5 * This,
13617 _In_ HANDLE NTHandle,
13618 REFIID riid,
13619 _COM_Outptr_opt_ void **ppvObj);
13620
13621 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13622 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13623 ID3D12Device5 * This,
13624 _In_ LPCWSTR Name,
13625 DWORD Access,
13626 /* [annotation][out] */
13627 _Out_ HANDLE *pNTHandle);
13628
13629 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13630 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13631 ID3D12Device5 * This,
13632 UINT NumObjects,
13633 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13634
13635 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13636 HRESULT ( STDMETHODCALLTYPE *Evict )(
13637 ID3D12Device5 * This,
13638 UINT NumObjects,
13639 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13640
13641 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13642 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13643 ID3D12Device5 * This,
13644 UINT64 InitialValue,
13645 D3D12_FENCE_FLAGS Flags,
13646 REFIID riid,
13647 _COM_Outptr_ void **ppFence);
13648
13649 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13650 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13651 ID3D12Device5 * This);
13652
13653 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13654 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13655 ID3D12Device5 * This,
13656 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13657 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13658 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13659 UINT64 BaseOffset,
13660 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13661 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13662 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13663 _Out_opt_ UINT64 *pTotalBytes);
13664
13665 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13666 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13667 ID3D12Device5 * This,
13668 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13669 REFIID riid,
13670 _COM_Outptr_opt_ void **ppvHeap);
13671
13672 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13673 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13674 ID3D12Device5 * This,
13675 BOOL Enable);
13676
13677 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13678 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13679 ID3D12Device5 * This,
13680 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13681 _In_opt_ ID3D12RootSignature *pRootSignature,
13682 REFIID riid,
13683 _COM_Outptr_opt_ void **ppvCommandSignature);
13684
13685 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13686 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13687 ID3D12Device5 * This,
13688 _In_ ID3D12Resource *pTiledResource,
13689 _Out_opt_ UINT *pNumTilesForEntireResource,
13690 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13691 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13692 _Inout_opt_ UINT *pNumSubresourceTilings,
13693 _In_ UINT FirstSubresourceTilingToGet,
13694 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13695
13696 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13697 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13698 ID3D12Device5 * This,
13699 LUID * RetVal);
13700
13701 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13702 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13703 ID3D12Device5 * This,
13704 _In_reads_(BlobLength) const void *pLibraryBlob,
13705 SIZE_T BlobLength,
13706 REFIID riid,
13707 _COM_Outptr_ void **ppPipelineLibrary);
13708
13709 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13710 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13711 ID3D12Device5 * This,
13712 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13713 _In_reads_(NumFences) const UINT64 *pFenceValues,
13714 UINT NumFences,
13715 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13716 HANDLE hEvent);
13717
13718 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13719 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13720 ID3D12Device5 * This,
13721 UINT NumObjects,
13722 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13723 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13724
13725 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13726 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13727 ID3D12Device5 * This,
13728 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13729 REFIID riid,
13730 _COM_Outptr_ void **ppPipelineState);
13731
13732 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13733 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13734 ID3D12Device5 * This,
13735 _In_ const void *pAddress,
13736 REFIID riid,
13737 _COM_Outptr_ void **ppvHeap);
13738
13739 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13740 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13741 ID3D12Device5 * This,
13742 _In_ HANDLE hFileMapping,
13743 REFIID riid,
13744 _COM_Outptr_ void **ppvHeap);
13745
13746 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13747 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13748 ID3D12Device5 * This,
13749 D3D12_RESIDENCY_FLAGS Flags,
13750 UINT NumObjects,
13751 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13752 _In_ ID3D12Fence *pFenceToSignal,
13753 UINT64 FenceValueToSignal);
13754
13755 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13756 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13757 ID3D12Device5 * This,
13758 _In_ UINT nodeMask,
13759 _In_ D3D12_COMMAND_LIST_TYPE type,
13760 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13761 REFIID riid,
13762 _COM_Outptr_ void **ppCommandList);
13763
13764 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13765 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13766 ID3D12Device5 * This,
13767 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13768 _In_ REFIID riid,
13769 _COM_Outptr_ void **ppSession);
13770
13771 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13772 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13773 ID3D12Device5 * This,
13774 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13775 D3D12_HEAP_FLAGS HeapFlags,
13776 _In_ const D3D12_RESOURCE_DESC *pDesc,
13777 D3D12_RESOURCE_STATES InitialResourceState,
13778 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13779 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13780 REFIID riidResource,
13781 _COM_Outptr_opt_ void **ppvResource);
13782
13783 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13784 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13785 ID3D12Device5 * This,
13786 _In_ const D3D12_HEAP_DESC *pDesc,
13787 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13788 REFIID riid,
13789 _COM_Outptr_opt_ void **ppvHeap);
13790
13791 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13792 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13793 ID3D12Device5 * This,
13794 _In_ const D3D12_RESOURCE_DESC *pDesc,
13795 D3D12_RESOURCE_STATES InitialState,
13796 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13797 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13798 REFIID riid,
13799 _COM_Outptr_opt_ void **ppvResource);
13800
13801 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13802 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13803 ID3D12Device5 * This,
13804 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13805 UINT visibleMask,
13806 UINT numResourceDescs,
13807 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13808 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13809
13810 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
13811 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
13812 ID3D12Device5 * This,
13813 _In_ ID3D12LifetimeOwner *pOwner,
13814 REFIID riid,
13815 _COM_Outptr_ void **ppvTracker);
13816
13817 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
13818 void ( STDMETHODCALLTYPE *RemoveDevice )(
13819 ID3D12Device5 * This);
13820
13821 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
13822 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
13823 ID3D12Device5 * This,
13824 _Inout_ UINT *pNumMetaCommands,
13825 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
13826
13827 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
13828 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
13829 ID3D12Device5 * This,
13830 _In_ REFGUID CommandId,
13831 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13832 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13833 _Inout_ UINT *pParameterCount,
13834 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
13835
13836 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
13837 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
13838 ID3D12Device5 * This,
13839 _In_ REFGUID CommandId,
13840 _In_ UINT NodeMask,
13841 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13842 _In_ SIZE_T CreationParametersDataSizeInBytes,
13843 REFIID riid,
13844 _COM_Outptr_ void **ppMetaCommand);
13845
13846 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
13847 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
13848 ID3D12Device5 * This,
13849 const D3D12_STATE_OBJECT_DESC *pDesc,
13850 REFIID riid,
13851 _COM_Outptr_ void **ppStateObject);
13852
13853 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
13854 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
13855 ID3D12Device5 * This,
13856 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13857 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
13858
13859 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
13860 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
13861 ID3D12Device5 * This,
13862 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13863 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
13864
13865 END_INTERFACE
13866 } ID3D12Device5Vtbl;
13867
13868 interface ID3D12Device5
13869 {
13870 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
13871 };
13872
13873
13874
13875#ifdef COBJMACROS
13876
13877
13878#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
13879 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13880
13881#define ID3D12Device5_AddRef(This) \
13882 ( (This)->lpVtbl -> AddRef(This) )
13883
13884#define ID3D12Device5_Release(This) \
13885 ( (This)->lpVtbl -> Release(This) )
13886
13887
13888#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
13889 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13890
13891#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
13892 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13893
13894#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
13895 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13896
13897#define ID3D12Device5_SetName(This,Name) \
13898 ( (This)->lpVtbl -> SetName(This,Name) )
13899
13900
13901#define ID3D12Device5_GetNodeCount(This) \
13902 ( (This)->lpVtbl -> GetNodeCount(This) )
13903
13904#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13905 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13906
13907#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13908 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13909
13910#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13911 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13912
13913#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13914 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13915
13916#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13917 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13918
13919#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13920 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13921
13922#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13923 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13924
13925#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13926 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13927
13928#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13929 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13930
13931#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13932 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13933
13934#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13935 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13936
13937#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13938 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13939
13940#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13941 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13942
13943#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13944 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13945
13946#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
13947 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13948
13949#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13950 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13951
13952#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13953 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13954
13955#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13956 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13957
13958#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13959 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13960
13961#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13962 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13963
13964#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
13965 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13966
13967#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13968 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13969
13970#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13971 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13972
13973#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13974 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13975
13976#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13977 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13978
13979#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13980 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13981
13982#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
13983 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13984
13985#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
13986 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13987
13988#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13989 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13990
13991#define ID3D12Device5_GetDeviceRemovedReason(This) \
13992 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13993
13994#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13995 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13996
13997#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13998 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13999
14000#define ID3D12Device5_SetStablePowerState(This,Enable) \
14001 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
14002
14003#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
14004 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
14005
14006#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
14007 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
14008
14009#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
14010 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
14011
14012
14013#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
14014 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
14015
14016#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
14017 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
14018
14019#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
14020 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
14021
14022
14023#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
14024 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
14025
14026
14027#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
14028 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
14029
14030#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
14031 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
14032
14033#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
14034 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
14035
14036
14037#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
14038 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
14039
14040#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
14041 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
14042
14043#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
14044 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
14045
14046#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
14047 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
14048
14049#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
14050 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
14051
14052#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
14053 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
14054
14055
14056#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
14057 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
14058
14059#define ID3D12Device5_RemoveDevice(This) \
14060 ( (This)->lpVtbl -> RemoveDevice(This) )
14061
14062#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
14063 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
14064
14065#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
14066 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
14067
14068#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
14069 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
14070
14071#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
14072 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
14073
14074#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
14075 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
14076
14077#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
14078 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
14079
14080#endif /* COBJMACROS */
14081
14082
14083#endif /* C style interface */
14084
14085
14086
14087
14088#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
14089
14090
14091/* interface __MIDL_itf_d3d12_0000_0035 */
14092/* [local] */
14093
14094typedef
14095enum D3D12_AUTO_BREADCRUMB_OP
14096 {
14097 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
14098 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
14099 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
14100 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
14101 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
14102 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
14103 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
14104 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
14105 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
14106 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
14107 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
14108 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
14109 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
14110 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
14111 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
14112 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
14113 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
14114 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
14115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
14116 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
14117 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
14118 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
14119 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
14120 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
14121 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
14122 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
14123 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
14124 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
14125 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
14126 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
14127 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
14128 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
14129 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
14130 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
14131 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
14132 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
14133 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
14134 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
14135 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
14136 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
14137 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
14138 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
14139 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
14140 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
14141 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44
14142 } D3D12_AUTO_BREADCRUMB_OP;
14143
14144typedef struct D3D12_AUTO_BREADCRUMB_NODE
14145 {
14146 const char *pCommandListDebugNameA;
14147 const wchar_t *pCommandListDebugNameW;
14148 const char *pCommandQueueDebugNameA;
14149 const wchar_t *pCommandQueueDebugNameW;
14150 ID3D12GraphicsCommandList *pCommandList;
14151 ID3D12CommandQueue *pCommandQueue;
14152 UINT32 BreadcrumbCount;
14153 const UINT32 *pLastBreadcrumbValue;
14154 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14155 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
14156 } D3D12_AUTO_BREADCRUMB_NODE;
14157
14158typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
14159 {
14160 UINT BreadcrumbIndex;
14161 const wchar_t *pContextString;
14162 } D3D12_DRED_BREADCRUMB_CONTEXT;
14163
14164typedef struct D3D12_AUTO_BREADCRUMB_NODE1
14165 {
14166 const char *pCommandListDebugNameA;
14167 const wchar_t *pCommandListDebugNameW;
14168 const char *pCommandQueueDebugNameA;
14169 const wchar_t *pCommandQueueDebugNameW;
14170 ID3D12GraphicsCommandList *pCommandList;
14171 ID3D12CommandQueue *pCommandQueue;
14172 UINT BreadcrumbCount;
14173 const UINT *pLastBreadcrumbValue;
14174 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14175 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
14176 UINT BreadcrumbContextsCount;
14177 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
14178 } D3D12_AUTO_BREADCRUMB_NODE1;
14179
14180typedef
14181enum D3D12_DRED_VERSION
14182 {
14183 D3D12_DRED_VERSION_1_0 = 0x1,
14184 D3D12_DRED_VERSION_1_1 = 0x2,
14185 D3D12_DRED_VERSION_1_2 = 0x3,
14186 D3D12_DRED_VERSION_1_3 = 0x4
14187 } D3D12_DRED_VERSION;
14188
14189typedef
14190enum D3D12_DRED_FLAGS
14191 {
14192 D3D12_DRED_FLAG_NONE = 0,
14193 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
14194 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
14195 } D3D12_DRED_FLAGS;
14196
14197DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );
14198typedef
14199enum D3D12_DRED_ENABLEMENT
14200 {
14201 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
14202 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
14203 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
14204 } D3D12_DRED_ENABLEMENT;
14205
14206typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
14207 {
14208 _In_ D3D12_DRED_FLAGS Flags;
14209 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14210 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
14211
14212typedef
14213enum D3D12_DRED_ALLOCATION_TYPE
14214 {
14215 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
14216 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
14217 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
14218 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
14219 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
14220 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
14221 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
14222 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
14223 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
14224 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
14225 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
14226 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
14227 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
14228 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
14229 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
14230 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
14231 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
14232 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
14233 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
14234 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
14235 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
14236 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
14237 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
14238 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
14239 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
14240 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
14241 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
14242 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
14243 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
14244 } D3D12_DRED_ALLOCATION_TYPE;
14245
14246typedef struct D3D12_DRED_ALLOCATION_NODE
14247 {
14248 const char *ObjectNameA;
14249 const wchar_t *ObjectNameW;
14250 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14251 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
14252 } D3D12_DRED_ALLOCATION_NODE;
14253
14254typedef struct D3D12_DRED_ALLOCATION_NODE1
14255 {
14256 const char *ObjectNameA;
14257 const wchar_t *ObjectNameW;
14258 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14259 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
14260 const IUnknown *pObject;
14261 } D3D12_DRED_ALLOCATION_NODE1;
14262
14263typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
14264 {
14265 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14266 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
14267
14268typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
14269 {
14270 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
14271 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
14272
14273typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
14274 {
14275 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14276 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
14277 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
14278 } D3D12_DRED_PAGE_FAULT_OUTPUT;
14279
14280typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
14281 {
14282 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14283 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14284 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14285 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
14286
14287typedef
14288enum D3D12_DRED_PAGE_FAULT_FLAGS
14289 {
14290 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
14291 } D3D12_DRED_PAGE_FAULT_FLAGS;
14292
14293DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );
14294typedef
14295enum D3D12_DRED_DEVICE_STATE
14296 {
14297 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
14298 D3D12_DRED_DEVICE_STATE_HUNG = 3,
14299 D3D12_DRED_DEVICE_STATE_FAULT = 6,
14300 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
14301 } D3D12_DRED_DEVICE_STATE;
14302
14303typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
14304 {
14305 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14306 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14307 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14308 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
14309 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
14310
14311typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
14312 {
14313 HRESULT DeviceRemovedReason;
14314 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
14315 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
14316 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
14317
14318typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
14319 {
14320 HRESULT DeviceRemovedReason;
14321 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14322 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
14323 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
14324
14325typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
14326 {
14327 HRESULT DeviceRemovedReason;
14328 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14329 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
14330 D3D12_DRED_DEVICE_STATE DeviceState;
14331 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
14332
14333typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
14334 {
14335 D3D12_DRED_VERSION Version;
14336 union
14337 {
14338 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
14339 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
14340 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
14341 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
14342 } ;
14343 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
14344
14345
14346
14347extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_c_ifspec;
14348extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_s_ifspec;
14349
14350#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14351#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14352
14353/* interface ID3D12DeviceRemovedExtendedDataSettings */
14354/* [unique][local][object][uuid] */
14355
14356
14357EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
14358
14359#if defined(__cplusplus) && !defined(CINTERFACE)
14360
14361 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
14362 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
14363 {
14364 public:
14365 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
14366 D3D12_DRED_ENABLEMENT Enablement) = 0;
14367
14368 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
14369 D3D12_DRED_ENABLEMENT Enablement) = 0;
14370
14371 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
14372 D3D12_DRED_ENABLEMENT Enablement) = 0;
14373
14374 };
14375
14376
14377#else /* C style interface */
14378
14379 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
14380 {
14381 BEGIN_INTERFACE
14382
14383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14385 ID3D12DeviceRemovedExtendedDataSettings * This,
14386 REFIID riid,
14387 _COM_Outptr_ void **ppvObject);
14388
14389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14390 ULONG ( STDMETHODCALLTYPE *AddRef )(
14391 ID3D12DeviceRemovedExtendedDataSettings * This);
14392
14393 DECLSPEC_XFGVIRT(IUnknown, Release)
14394 ULONG ( STDMETHODCALLTYPE *Release )(
14395 ID3D12DeviceRemovedExtendedDataSettings * This);
14396
14397 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14398 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14399 ID3D12DeviceRemovedExtendedDataSettings * This,
14400 D3D12_DRED_ENABLEMENT Enablement);
14401
14402 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14403 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14404 ID3D12DeviceRemovedExtendedDataSettings * This,
14405 D3D12_DRED_ENABLEMENT Enablement);
14406
14407 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14408 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14409 ID3D12DeviceRemovedExtendedDataSettings * This,
14410 D3D12_DRED_ENABLEMENT Enablement);
14411
14412 END_INTERFACE
14413 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
14414
14415 interface ID3D12DeviceRemovedExtendedDataSettings
14416 {
14417 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
14418 };
14419
14420
14421
14422#ifdef COBJMACROS
14423
14424
14425#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
14426 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14427
14428#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
14429 ( (This)->lpVtbl -> AddRef(This) )
14430
14431#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
14432 ( (This)->lpVtbl -> Release(This) )
14433
14434
14435#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
14436 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14437
14438#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
14439 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14440
14441#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
14442 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14443
14444#endif /* COBJMACROS */
14445
14446
14447#endif /* C style interface */
14448
14449
14450
14451
14452#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
14453
14454
14455#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14456#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14457
14458/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
14459/* [unique][local][object][uuid] */
14460
14461
14462EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
14463
14464#if defined(__cplusplus) && !defined(CINTERFACE)
14465
14466 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
14467 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
14468 {
14469 public:
14470 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
14471 D3D12_DRED_ENABLEMENT Enablement) = 0;
14472
14473 };
14474
14475
14476#else /* C style interface */
14477
14478 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
14479 {
14480 BEGIN_INTERFACE
14481
14482 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14483 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14484 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14485 REFIID riid,
14486 _COM_Outptr_ void **ppvObject);
14487
14488 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14489 ULONG ( STDMETHODCALLTYPE *AddRef )(
14490 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14491
14492 DECLSPEC_XFGVIRT(IUnknown, Release)
14493 ULONG ( STDMETHODCALLTYPE *Release )(
14494 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14495
14496 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14497 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14498 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14499 D3D12_DRED_ENABLEMENT Enablement);
14500
14501 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14502 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14503 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14504 D3D12_DRED_ENABLEMENT Enablement);
14505
14506 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14507 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14508 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14509 D3D12_DRED_ENABLEMENT Enablement);
14510
14511 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
14512 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
14513 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14514 D3D12_DRED_ENABLEMENT Enablement);
14515
14516 END_INTERFACE
14517 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
14518
14519 interface ID3D12DeviceRemovedExtendedDataSettings1
14520 {
14521 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
14522 };
14523
14524
14525
14526#ifdef COBJMACROS
14527
14528
14529#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
14530 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14531
14532#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
14533 ( (This)->lpVtbl -> AddRef(This) )
14534
14535#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
14536 ( (This)->lpVtbl -> Release(This) )
14537
14538
14539#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
14540 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14541
14542#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
14543 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14544
14545#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
14546 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14547
14548
14549#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
14550 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
14551
14552#endif /* COBJMACROS */
14553
14554
14555#endif /* C style interface */
14556
14557
14558
14559
14560#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
14561
14562
14563#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14564#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14565
14566/* interface ID3D12DeviceRemovedExtendedData */
14567/* [unique][local][object][uuid] */
14568
14569
14570EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
14571
14572#if defined(__cplusplus) && !defined(CINTERFACE)
14573
14574 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
14575 ID3D12DeviceRemovedExtendedData : public IUnknown
14576 {
14577 public:
14578 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
14579 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
14580
14581 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
14582 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
14583
14584 };
14585
14586
14587#else /* C style interface */
14588
14589 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
14590 {
14591 BEGIN_INTERFACE
14592
14593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14595 ID3D12DeviceRemovedExtendedData * This,
14596 REFIID riid,
14597 _COM_Outptr_ void **ppvObject);
14598
14599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14600 ULONG ( STDMETHODCALLTYPE *AddRef )(
14601 ID3D12DeviceRemovedExtendedData * This);
14602
14603 DECLSPEC_XFGVIRT(IUnknown, Release)
14604 ULONG ( STDMETHODCALLTYPE *Release )(
14605 ID3D12DeviceRemovedExtendedData * This);
14606
14607 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14608 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14609 ID3D12DeviceRemovedExtendedData * This,
14610 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14611
14612 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14613 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14614 ID3D12DeviceRemovedExtendedData * This,
14615 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14616
14617 END_INTERFACE
14618 } ID3D12DeviceRemovedExtendedDataVtbl;
14619
14620 interface ID3D12DeviceRemovedExtendedData
14621 {
14622 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
14623 };
14624
14625
14626
14627#ifdef COBJMACROS
14628
14629
14630#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
14631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14632
14633#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
14634 ( (This)->lpVtbl -> AddRef(This) )
14635
14636#define ID3D12DeviceRemovedExtendedData_Release(This) \
14637 ( (This)->lpVtbl -> Release(This) )
14638
14639
14640#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
14641 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14642
14643#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
14644 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14645
14646#endif /* COBJMACROS */
14647
14648
14649#endif /* C style interface */
14650
14651
14652
14653
14654#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
14655
14656
14657#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14658#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14659
14660/* interface ID3D12DeviceRemovedExtendedData1 */
14661/* [unique][local][object][uuid] */
14662
14663
14664EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
14665
14666#if defined(__cplusplus) && !defined(CINTERFACE)
14667
14668 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
14669 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
14670 {
14671 public:
14672 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
14673 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
14674
14675 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
14676 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
14677
14678 };
14679
14680
14681#else /* C style interface */
14682
14683 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
14684 {
14685 BEGIN_INTERFACE
14686
14687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14689 ID3D12DeviceRemovedExtendedData1 * This,
14690 REFIID riid,
14691 _COM_Outptr_ void **ppvObject);
14692
14693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14694 ULONG ( STDMETHODCALLTYPE *AddRef )(
14695 ID3D12DeviceRemovedExtendedData1 * This);
14696
14697 DECLSPEC_XFGVIRT(IUnknown, Release)
14698 ULONG ( STDMETHODCALLTYPE *Release )(
14699 ID3D12DeviceRemovedExtendedData1 * This);
14700
14701 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14702 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14703 ID3D12DeviceRemovedExtendedData1 * This,
14704 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14705
14706 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14707 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14708 ID3D12DeviceRemovedExtendedData1 * This,
14709 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14710
14711 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14712 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14713 ID3D12DeviceRemovedExtendedData1 * This,
14714 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14715
14716 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14717 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14718 ID3D12DeviceRemovedExtendedData1 * This,
14719 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14720
14721 END_INTERFACE
14722 } ID3D12DeviceRemovedExtendedData1Vtbl;
14723
14724 interface ID3D12DeviceRemovedExtendedData1
14725 {
14726 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
14727 };
14728
14729
14730
14731#ifdef COBJMACROS
14732
14733
14734#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
14735 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14736
14737#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
14738 ( (This)->lpVtbl -> AddRef(This) )
14739
14740#define ID3D12DeviceRemovedExtendedData1_Release(This) \
14741 ( (This)->lpVtbl -> Release(This) )
14742
14743
14744#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
14745 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14746
14747#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
14748 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14749
14750
14751#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
14752 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14753
14754#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
14755 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14756
14757#endif /* COBJMACROS */
14758
14759
14760#endif /* C style interface */
14761
14762
14763
14764
14765#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
14766
14767
14768#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14769#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14770
14771/* interface ID3D12DeviceRemovedExtendedData2 */
14772/* [unique][local][object][uuid] */
14773
14774
14775EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
14776
14777#if defined(__cplusplus) && !defined(CINTERFACE)
14778
14779 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
14780 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
14781 {
14782 public:
14783 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
14784 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
14785
14786 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
14787
14788 };
14789
14790
14791#else /* C style interface */
14792
14793 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
14794 {
14795 BEGIN_INTERFACE
14796
14797 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14798 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14799 ID3D12DeviceRemovedExtendedData2 * This,
14800 REFIID riid,
14801 _COM_Outptr_ void **ppvObject);
14802
14803 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14804 ULONG ( STDMETHODCALLTYPE *AddRef )(
14805 ID3D12DeviceRemovedExtendedData2 * This);
14806
14807 DECLSPEC_XFGVIRT(IUnknown, Release)
14808 ULONG ( STDMETHODCALLTYPE *Release )(
14809 ID3D12DeviceRemovedExtendedData2 * This);
14810
14811 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14812 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14813 ID3D12DeviceRemovedExtendedData2 * This,
14814 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14815
14816 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14817 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14818 ID3D12DeviceRemovedExtendedData2 * This,
14819 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14820
14821 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14822 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14823 ID3D12DeviceRemovedExtendedData2 * This,
14824 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14825
14826 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14827 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14828 ID3D12DeviceRemovedExtendedData2 * This,
14829 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14830
14831 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
14832 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
14833 ID3D12DeviceRemovedExtendedData2 * This,
14834 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
14835
14836 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
14837 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
14838 ID3D12DeviceRemovedExtendedData2 * This);
14839
14840 END_INTERFACE
14841 } ID3D12DeviceRemovedExtendedData2Vtbl;
14842
14843 interface ID3D12DeviceRemovedExtendedData2
14844 {
14845 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
14846 };
14847
14848
14849
14850#ifdef COBJMACROS
14851
14852
14853#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
14854 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14855
14856#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
14857 ( (This)->lpVtbl -> AddRef(This) )
14858
14859#define ID3D12DeviceRemovedExtendedData2_Release(This) \
14860 ( (This)->lpVtbl -> Release(This) )
14861
14862
14863#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
14864 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14865
14866#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
14867 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14868
14869
14870#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
14871 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14872
14873#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
14874 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14875
14876
14877#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
14878 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
14879
14880#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
14881 ( (This)->lpVtbl -> GetDeviceState(This) )
14882
14883#endif /* COBJMACROS */
14884
14885
14886#endif /* C style interface */
14887
14888
14889
14890
14891#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
14892
14893
14894/* interface __MIDL_itf_d3d12_0000_0040 */
14895/* [local] */
14896
14897typedef
14898enum D3D12_BACKGROUND_PROCESSING_MODE
14899 {
14900 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
14901 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
14902 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
14903 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
14904 } D3D12_BACKGROUND_PROCESSING_MODE;
14905
14906typedef
14907enum D3D12_MEASUREMENTS_ACTION
14908 {
14909 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
14910 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
14911 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
14912 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
14913 } D3D12_MEASUREMENTS_ACTION;
14914
14915
14916
14917extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
14918extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
14919
14920#ifndef __ID3D12Device6_INTERFACE_DEFINED__
14921#define __ID3D12Device6_INTERFACE_DEFINED__
14922
14923/* interface ID3D12Device6 */
14924/* [unique][local][object][uuid] */
14925
14926
14927EXTERN_C const IID IID_ID3D12Device6;
14928
14929#if defined(__cplusplus) && !defined(CINTERFACE)
14930
14931 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
14932 ID3D12Device6 : public ID3D12Device5
14933 {
14934 public:
14935 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
14936 D3D12_BACKGROUND_PROCESSING_MODE Mode,
14937 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
14938 _In_opt_ HANDLE hEventToSignalUponCompletion,
14939 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
14940
14941 };
14942
14943
14944#else /* C style interface */
14945
14946 typedef struct ID3D12Device6Vtbl
14947 {
14948 BEGIN_INTERFACE
14949
14950 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14951 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14952 ID3D12Device6 * This,
14953 REFIID riid,
14954 _COM_Outptr_ void **ppvObject);
14955
14956 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14957 ULONG ( STDMETHODCALLTYPE *AddRef )(
14958 ID3D12Device6 * This);
14959
14960 DECLSPEC_XFGVIRT(IUnknown, Release)
14961 ULONG ( STDMETHODCALLTYPE *Release )(
14962 ID3D12Device6 * This);
14963
14964 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14965 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14966 ID3D12Device6 * This,
14967 _In_ REFGUID guid,
14968 _Inout_ UINT *pDataSize,
14969 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14970
14971 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14972 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14973 ID3D12Device6 * This,
14974 _In_ REFGUID guid,
14975 _In_ UINT DataSize,
14976 _In_reads_bytes_opt_( DataSize ) const void *pData);
14977
14978 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14979 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14980 ID3D12Device6 * This,
14981 _In_ REFGUID guid,
14982 _In_opt_ const IUnknown *pData);
14983
14984 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14985 HRESULT ( STDMETHODCALLTYPE *SetName )(
14986 ID3D12Device6 * This,
14987 _In_z_ LPCWSTR Name);
14988
14989 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
14990 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
14991 ID3D12Device6 * This);
14992
14993 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
14994 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
14995 ID3D12Device6 * This,
14996 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
14997 REFIID riid,
14998 _COM_Outptr_ void **ppCommandQueue);
14999
15000 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15001 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15002 ID3D12Device6 * This,
15003 _In_ D3D12_COMMAND_LIST_TYPE type,
15004 REFIID riid,
15005 _COM_Outptr_ void **ppCommandAllocator);
15006
15007 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15008 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15009 ID3D12Device6 * This,
15010 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15011 REFIID riid,
15012 _COM_Outptr_ void **ppPipelineState);
15013
15014 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15015 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15016 ID3D12Device6 * This,
15017 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15018 REFIID riid,
15019 _COM_Outptr_ void **ppPipelineState);
15020
15021 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15022 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15023 ID3D12Device6 * This,
15024 _In_ UINT nodeMask,
15025 _In_ D3D12_COMMAND_LIST_TYPE type,
15026 _In_ ID3D12CommandAllocator *pCommandAllocator,
15027 _In_opt_ ID3D12PipelineState *pInitialState,
15028 REFIID riid,
15029 _COM_Outptr_ void **ppCommandList);
15030
15031 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15032 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15033 ID3D12Device6 * This,
15034 D3D12_FEATURE Feature,
15035 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15036 UINT FeatureSupportDataSize);
15037
15038 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15039 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15040 ID3D12Device6 * This,
15041 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15042 REFIID riid,
15043 _COM_Outptr_ void **ppvHeap);
15044
15045 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15046 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15047 ID3D12Device6 * This,
15048 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15049
15050 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15051 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15052 ID3D12Device6 * This,
15053 _In_ UINT nodeMask,
15054 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15055 _In_ SIZE_T blobLengthInBytes,
15056 REFIID riid,
15057 _COM_Outptr_ void **ppvRootSignature);
15058
15059 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15060 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15061 ID3D12Device6 * This,
15062 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15063 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15064
15065 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15066 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15067 ID3D12Device6 * This,
15068 _In_opt_ ID3D12Resource *pResource,
15069 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15070 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15071
15072 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15073 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15074 ID3D12Device6 * This,
15075 _In_opt_ ID3D12Resource *pResource,
15076 _In_opt_ ID3D12Resource *pCounterResource,
15077 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15078 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15079
15080 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15081 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15082 ID3D12Device6 * This,
15083 _In_opt_ ID3D12Resource *pResource,
15084 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15085 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15086
15087 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15088 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15089 ID3D12Device6 * This,
15090 _In_opt_ ID3D12Resource *pResource,
15091 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15092 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15093
15094 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15095 void ( STDMETHODCALLTYPE *CreateSampler )(
15096 ID3D12Device6 * This,
15097 _In_ const D3D12_SAMPLER_DESC *pDesc,
15098 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15099
15100 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15101 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15102 ID3D12Device6 * This,
15103 _In_ UINT NumDestDescriptorRanges,
15104 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15105 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15106 _In_ UINT NumSrcDescriptorRanges,
15107 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15108 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15109 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15110
15111 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15112 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15113 ID3D12Device6 * This,
15114 _In_ UINT NumDescriptors,
15115 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15116 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15117 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15118
15119 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15120 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15121 ID3D12Device6 * This,
15122 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15123 _In_ UINT visibleMask,
15124 _In_ UINT numResourceDescs,
15125 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15126
15127 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15128 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15129 ID3D12Device6 * This,
15130 D3D12_HEAP_PROPERTIES * RetVal,
15131 _In_ UINT nodeMask,
15132 D3D12_HEAP_TYPE heapType);
15133
15134 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15135 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15136 ID3D12Device6 * This,
15137 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15138 D3D12_HEAP_FLAGS HeapFlags,
15139 _In_ const D3D12_RESOURCE_DESC *pDesc,
15140 D3D12_RESOURCE_STATES InitialResourceState,
15141 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15142 REFIID riidResource,
15143 _COM_Outptr_opt_ void **ppvResource);
15144
15145 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15146 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15147 ID3D12Device6 * This,
15148 _In_ const D3D12_HEAP_DESC *pDesc,
15149 REFIID riid,
15150 _COM_Outptr_opt_ void **ppvHeap);
15151
15152 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15153 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15154 ID3D12Device6 * This,
15155 _In_ ID3D12Heap *pHeap,
15156 UINT64 HeapOffset,
15157 _In_ const D3D12_RESOURCE_DESC *pDesc,
15158 D3D12_RESOURCE_STATES InitialState,
15159 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15160 REFIID riid,
15161 _COM_Outptr_opt_ void **ppvResource);
15162
15163 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15164 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15165 ID3D12Device6 * This,
15166 _In_ const D3D12_RESOURCE_DESC *pDesc,
15167 D3D12_RESOURCE_STATES InitialState,
15168 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15169 REFIID riid,
15170 _COM_Outptr_opt_ void **ppvResource);
15171
15172 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15173 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15174 ID3D12Device6 * This,
15175 _In_ ID3D12DeviceChild *pObject,
15176 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15177 DWORD Access,
15178 _In_opt_ LPCWSTR Name,
15179 _Out_ HANDLE *pHandle);
15180
15181 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15182 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15183 ID3D12Device6 * This,
15184 _In_ HANDLE NTHandle,
15185 REFIID riid,
15186 _COM_Outptr_opt_ void **ppvObj);
15187
15188 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15189 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15190 ID3D12Device6 * This,
15191 _In_ LPCWSTR Name,
15192 DWORD Access,
15193 /* [annotation][out] */
15194 _Out_ HANDLE *pNTHandle);
15195
15196 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15197 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15198 ID3D12Device6 * This,
15199 UINT NumObjects,
15200 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15201
15202 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
15203 HRESULT ( STDMETHODCALLTYPE *Evict )(
15204 ID3D12Device6 * This,
15205 UINT NumObjects,
15206 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15207
15208 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
15209 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
15210 ID3D12Device6 * This,
15211 UINT64 InitialValue,
15212 D3D12_FENCE_FLAGS Flags,
15213 REFIID riid,
15214 _COM_Outptr_ void **ppFence);
15215
15216 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
15217 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
15218 ID3D12Device6 * This);
15219
15220 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
15221 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
15222 ID3D12Device6 * This,
15223 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
15224 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
15225 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
15226 UINT64 BaseOffset,
15227 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
15228 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
15229 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
15230 _Out_opt_ UINT64 *pTotalBytes);
15231
15232 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
15233 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
15234 ID3D12Device6 * This,
15235 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
15236 REFIID riid,
15237 _COM_Outptr_opt_ void **ppvHeap);
15238
15239 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
15240 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
15241 ID3D12Device6 * This,
15242 BOOL Enable);
15243
15244 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
15245 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
15246 ID3D12Device6 * This,
15247 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
15248 _In_opt_ ID3D12RootSignature *pRootSignature,
15249 REFIID riid,
15250 _COM_Outptr_opt_ void **ppvCommandSignature);
15251
15252 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
15253 void ( STDMETHODCALLTYPE *GetResourceTiling )(
15254 ID3D12Device6 * This,
15255 _In_ ID3D12Resource *pTiledResource,
15256 _Out_opt_ UINT *pNumTilesForEntireResource,
15257 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
15258 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
15259 _Inout_opt_ UINT *pNumSubresourceTilings,
15260 _In_ UINT FirstSubresourceTilingToGet,
15261 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
15262
15263 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
15264 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
15265 ID3D12Device6 * This,
15266 LUID * RetVal);
15267
15268 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
15269 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
15270 ID3D12Device6 * This,
15271 _In_reads_(BlobLength) const void *pLibraryBlob,
15272 SIZE_T BlobLength,
15273 REFIID riid,
15274 _COM_Outptr_ void **ppPipelineLibrary);
15275
15276 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
15277 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
15278 ID3D12Device6 * This,
15279 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
15280 _In_reads_(NumFences) const UINT64 *pFenceValues,
15281 UINT NumFences,
15282 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
15283 HANDLE hEvent);
15284
15285 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
15286 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
15287 ID3D12Device6 * This,
15288 UINT NumObjects,
15289 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15290 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
15291
15292 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
15293 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
15294 ID3D12Device6 * This,
15295 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
15296 REFIID riid,
15297 _COM_Outptr_ void **ppPipelineState);
15298
15299 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
15300 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
15301 ID3D12Device6 * This,
15302 _In_ const void *pAddress,
15303 REFIID riid,
15304 _COM_Outptr_ void **ppvHeap);
15305
15306 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
15307 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
15308 ID3D12Device6 * This,
15309 _In_ HANDLE hFileMapping,
15310 REFIID riid,
15311 _COM_Outptr_ void **ppvHeap);
15312
15313 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
15314 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
15315 ID3D12Device6 * This,
15316 D3D12_RESIDENCY_FLAGS Flags,
15317 UINT NumObjects,
15318 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15319 _In_ ID3D12Fence *pFenceToSignal,
15320 UINT64 FenceValueToSignal);
15321
15322 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
15323 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
15324 ID3D12Device6 * This,
15325 _In_ UINT nodeMask,
15326 _In_ D3D12_COMMAND_LIST_TYPE type,
15327 _In_ D3D12_COMMAND_LIST_FLAGS flags,
15328 REFIID riid,
15329 _COM_Outptr_ void **ppCommandList);
15330
15331 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
15332 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
15333 ID3D12Device6 * This,
15334 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
15335 _In_ REFIID riid,
15336 _COM_Outptr_ void **ppSession);
15337
15338 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
15339 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
15340 ID3D12Device6 * This,
15341 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15342 D3D12_HEAP_FLAGS HeapFlags,
15343 _In_ const D3D12_RESOURCE_DESC *pDesc,
15344 D3D12_RESOURCE_STATES InitialResourceState,
15345 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15346 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15347 REFIID riidResource,
15348 _COM_Outptr_opt_ void **ppvResource);
15349
15350 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
15351 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
15352 ID3D12Device6 * This,
15353 _In_ const D3D12_HEAP_DESC *pDesc,
15354 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15355 REFIID riid,
15356 _COM_Outptr_opt_ void **ppvHeap);
15357
15358 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
15359 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
15360 ID3D12Device6 * This,
15361 _In_ const D3D12_RESOURCE_DESC *pDesc,
15362 D3D12_RESOURCE_STATES InitialState,
15363 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15364 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15365 REFIID riid,
15366 _COM_Outptr_opt_ void **ppvResource);
15367
15368 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
15369 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
15370 ID3D12Device6 * This,
15371 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15372 UINT visibleMask,
15373 UINT numResourceDescs,
15374 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
15375 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
15376
15377 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
15378 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
15379 ID3D12Device6 * This,
15380 _In_ ID3D12LifetimeOwner *pOwner,
15381 REFIID riid,
15382 _COM_Outptr_ void **ppvTracker);
15383
15384 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
15385 void ( STDMETHODCALLTYPE *RemoveDevice )(
15386 ID3D12Device6 * This);
15387
15388 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
15389 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
15390 ID3D12Device6 * This,
15391 _Inout_ UINT *pNumMetaCommands,
15392 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
15393
15394 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
15395 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
15396 ID3D12Device6 * This,
15397 _In_ REFGUID CommandId,
15398 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15399 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15400 _Inout_ UINT *pParameterCount,
15401 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
15402
15403 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
15404 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
15405 ID3D12Device6 * This,
15406 _In_ REFGUID CommandId,
15407 _In_ UINT NodeMask,
15408 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15409 _In_ SIZE_T CreationParametersDataSizeInBytes,
15410 REFIID riid,
15411 _COM_Outptr_ void **ppMetaCommand);
15412
15413 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
15414 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
15415 ID3D12Device6 * This,
15416 const D3D12_STATE_OBJECT_DESC *pDesc,
15417 REFIID riid,
15418 _COM_Outptr_ void **ppStateObject);
15419
15420 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
15421 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
15422 ID3D12Device6 * This,
15423 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15424 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
15425
15426 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
15427 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
15428 ID3D12Device6 * This,
15429 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15430 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
15431
15432 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
15433 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
15434 ID3D12Device6 * This,
15435 D3D12_BACKGROUND_PROCESSING_MODE Mode,
15436 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
15437 _In_opt_ HANDLE hEventToSignalUponCompletion,
15438 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
15439
15440 END_INTERFACE
15441 } ID3D12Device6Vtbl;
15442
15443 interface ID3D12Device6
15444 {
15445 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
15446 };
15447
15448
15449
15450#ifdef COBJMACROS
15451
15452
15453#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
15454 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15455
15456#define ID3D12Device6_AddRef(This) \
15457 ( (This)->lpVtbl -> AddRef(This) )
15458
15459#define ID3D12Device6_Release(This) \
15460 ( (This)->lpVtbl -> Release(This) )
15461
15462
15463#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
15464 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15465
15466#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
15467 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15468
15469#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
15470 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15471
15472#define ID3D12Device6_SetName(This,Name) \
15473 ( (This)->lpVtbl -> SetName(This,Name) )
15474
15475
15476#define ID3D12Device6_GetNodeCount(This) \
15477 ( (This)->lpVtbl -> GetNodeCount(This) )
15478
15479#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
15480 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
15481
15482#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
15483 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
15484
15485#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
15486 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
15487
15488#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
15489 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
15490
15491#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
15492 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
15493
15494#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
15495 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
15496
15497#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
15498 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
15499
15500#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
15501 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
15502
15503#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
15504 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
15505
15506#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
15507 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
15508
15509#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
15510 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
15511
15512#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
15513 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
15514
15515#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
15516 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
15517
15518#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
15519 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
15520
15521#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
15522 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
15523
15524#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
15525 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
15526
15527#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
15528 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
15529
15530#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
15531 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
15532
15533#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
15534 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
15535
15536#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
15537 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
15538
15539#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
15540 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
15541
15542#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15543 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15544
15545#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15546 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15547
15548#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
15549 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
15550
15551#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
15552 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
15553
15554#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
15555 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
15556
15557#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
15558 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
15559
15560#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
15561 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
15562
15563#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
15564 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
15565
15566#define ID3D12Device6_GetDeviceRemovedReason(This) \
15567 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
15568
15569#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
15570 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
15571
15572#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
15573 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
15574
15575#define ID3D12Device6_SetStablePowerState(This,Enable) \
15576 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
15577
15578#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
15579 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
15580
15581#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
15582 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
15583
15584#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
15585 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
15586
15587
15588#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
15589 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
15590
15591#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
15592 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
15593
15594#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
15595 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
15596
15597
15598#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
15599 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
15600
15601
15602#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
15603 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
15604
15605#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
15606 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
15607
15608#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
15609 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
15610
15611
15612#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
15613 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
15614
15615#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
15616 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
15617
15618#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
15619 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
15620
15621#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
15622 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
15623
15624#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
15625 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
15626
15627#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
15628 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
15629
15630
15631#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
15632 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
15633
15634#define ID3D12Device6_RemoveDevice(This) \
15635 ( (This)->lpVtbl -> RemoveDevice(This) )
15636
15637#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
15638 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
15639
15640#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
15641 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
15642
15643#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
15644 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
15645
15646#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
15647 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
15648
15649#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
15650 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
15651
15652#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
15653 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
15654
15655
15656#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
15657 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
15658
15659#endif /* COBJMACROS */
15660
15661
15662#endif /* C style interface */
15663
15664
15665
15666
15667#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
15668
15669
15670/* interface __MIDL_itf_d3d12_0000_0041 */
15671/* [local] */
15672
15673DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
15674typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
15675 {
15676 UINT NodeIndex;
15677 UINT Count;
15678 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
15679
15680typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
15681 {
15682 UINT NodeIndex;
15683 UINT Count;
15684 GUID *pTypes;
15685 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
15686
15687typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
15688 {
15689 UINT NodeMask;
15690 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
15691 GUID ProtectionType;
15692 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
15693
15694
15695
15696extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_c_ifspec;
15697extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_s_ifspec;
15698
15699#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15700#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15701
15702/* interface ID3D12ProtectedResourceSession1 */
15703/* [unique][local][object][uuid] */
15704
15705
15706EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
15707
15708#if defined(__cplusplus) && !defined(CINTERFACE)
15709
15710 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
15711 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
15712 {
15713 public:
15714 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
15715
15716 };
15717
15718
15719#else /* C style interface */
15720
15721 typedef struct ID3D12ProtectedResourceSession1Vtbl
15722 {
15723 BEGIN_INTERFACE
15724
15725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15727 ID3D12ProtectedResourceSession1 * This,
15728 REFIID riid,
15729 _COM_Outptr_ void **ppvObject);
15730
15731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15732 ULONG ( STDMETHODCALLTYPE *AddRef )(
15733 ID3D12ProtectedResourceSession1 * This);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, Release)
15736 ULONG ( STDMETHODCALLTYPE *Release )(
15737 ID3D12ProtectedResourceSession1 * This);
15738
15739 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15740 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15741 ID3D12ProtectedResourceSession1 * This,
15742 _In_ REFGUID guid,
15743 _Inout_ UINT *pDataSize,
15744 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15745
15746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15747 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15748 ID3D12ProtectedResourceSession1 * This,
15749 _In_ REFGUID guid,
15750 _In_ UINT DataSize,
15751 _In_reads_bytes_opt_( DataSize ) const void *pData);
15752
15753 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15754 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15755 ID3D12ProtectedResourceSession1 * This,
15756 _In_ REFGUID guid,
15757 _In_opt_ const IUnknown *pData);
15758
15759 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15760 HRESULT ( STDMETHODCALLTYPE *SetName )(
15761 ID3D12ProtectedResourceSession1 * This,
15762 _In_z_ LPCWSTR Name);
15763
15764 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
15765 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
15766 ID3D12ProtectedResourceSession1 * This,
15767 REFIID riid,
15768 _COM_Outptr_opt_ void **ppvDevice);
15769
15770 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
15771 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
15772 ID3D12ProtectedResourceSession1 * This,
15773 REFIID riid,
15774 _COM_Outptr_opt_ void **ppFence);
15775
15776 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
15777 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
15778 ID3D12ProtectedResourceSession1 * This);
15779
15780 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
15781 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
15782 ID3D12ProtectedResourceSession1 * This,
15783 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
15784
15785 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
15786 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
15787 ID3D12ProtectedResourceSession1 * This,
15788 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
15789
15790 END_INTERFACE
15791 } ID3D12ProtectedResourceSession1Vtbl;
15792
15793 interface ID3D12ProtectedResourceSession1
15794 {
15795 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
15796 };
15797
15798
15799
15800#ifdef COBJMACROS
15801
15802
15803#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
15804 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15805
15806#define ID3D12ProtectedResourceSession1_AddRef(This) \
15807 ( (This)->lpVtbl -> AddRef(This) )
15808
15809#define ID3D12ProtectedResourceSession1_Release(This) \
15810 ( (This)->lpVtbl -> Release(This) )
15811
15812
15813#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
15814 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15815
15816#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
15817 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15818
15819#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
15820 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15821
15822#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
15823 ( (This)->lpVtbl -> SetName(This,Name) )
15824
15825
15826#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
15827 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
15828
15829
15830#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
15831 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
15832
15833#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
15834 ( (This)->lpVtbl -> GetSessionStatus(This) )
15835
15836
15837#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
15838 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
15839
15840
15841#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
15842 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
15843
15844#endif /* COBJMACROS */
15845
15846
15847#endif /* C style interface */
15848
15849
15850
15851
15852#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
15853
15854
15855#ifndef __ID3D12Device7_INTERFACE_DEFINED__
15856#define __ID3D12Device7_INTERFACE_DEFINED__
15857
15858/* interface ID3D12Device7 */
15859/* [unique][local][object][uuid] */
15860
15861
15862EXTERN_C const IID IID_ID3D12Device7;
15863
15864#if defined(__cplusplus) && !defined(CINTERFACE)
15865
15866 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
15867 ID3D12Device7 : public ID3D12Device6
15868 {
15869 public:
15870 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
15871 const D3D12_STATE_OBJECT_DESC *pAddition,
15872 ID3D12StateObject *pStateObjectToGrowFrom,
15873 REFIID riid,
15874 _COM_Outptr_ void **ppNewStateObject) = 0;
15875
15876 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
15877 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
15878 _In_ REFIID riid,
15879 _COM_Outptr_ void **ppSession) = 0;
15880
15881 };
15882
15883
15884#else /* C style interface */
15885
15886 typedef struct ID3D12Device7Vtbl
15887 {
15888 BEGIN_INTERFACE
15889
15890 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15891 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15892 ID3D12Device7 * This,
15893 REFIID riid,
15894 _COM_Outptr_ void **ppvObject);
15895
15896 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15897 ULONG ( STDMETHODCALLTYPE *AddRef )(
15898 ID3D12Device7 * This);
15899
15900 DECLSPEC_XFGVIRT(IUnknown, Release)
15901 ULONG ( STDMETHODCALLTYPE *Release )(
15902 ID3D12Device7 * This);
15903
15904 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15905 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15906 ID3D12Device7 * This,
15907 _In_ REFGUID guid,
15908 _Inout_ UINT *pDataSize,
15909 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15910
15911 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15912 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15913 ID3D12Device7 * This,
15914 _In_ REFGUID guid,
15915 _In_ UINT DataSize,
15916 _In_reads_bytes_opt_( DataSize ) const void *pData);
15917
15918 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15919 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15920 ID3D12Device7 * This,
15921 _In_ REFGUID guid,
15922 _In_opt_ const IUnknown *pData);
15923
15924 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15925 HRESULT ( STDMETHODCALLTYPE *SetName )(
15926 ID3D12Device7 * This,
15927 _In_z_ LPCWSTR Name);
15928
15929 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15930 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15931 ID3D12Device7 * This);
15932
15933 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15934 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15935 ID3D12Device7 * This,
15936 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15937 REFIID riid,
15938 _COM_Outptr_ void **ppCommandQueue);
15939
15940 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15941 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15942 ID3D12Device7 * This,
15943 _In_ D3D12_COMMAND_LIST_TYPE type,
15944 REFIID riid,
15945 _COM_Outptr_ void **ppCommandAllocator);
15946
15947 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15948 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15949 ID3D12Device7 * This,
15950 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15951 REFIID riid,
15952 _COM_Outptr_ void **ppPipelineState);
15953
15954 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15955 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15956 ID3D12Device7 * This,
15957 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15958 REFIID riid,
15959 _COM_Outptr_ void **ppPipelineState);
15960
15961 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15962 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15963 ID3D12Device7 * This,
15964 _In_ UINT nodeMask,
15965 _In_ D3D12_COMMAND_LIST_TYPE type,
15966 _In_ ID3D12CommandAllocator *pCommandAllocator,
15967 _In_opt_ ID3D12PipelineState *pInitialState,
15968 REFIID riid,
15969 _COM_Outptr_ void **ppCommandList);
15970
15971 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15972 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15973 ID3D12Device7 * This,
15974 D3D12_FEATURE Feature,
15975 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15976 UINT FeatureSupportDataSize);
15977
15978 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15979 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15980 ID3D12Device7 * This,
15981 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15982 REFIID riid,
15983 _COM_Outptr_ void **ppvHeap);
15984
15985 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15986 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15987 ID3D12Device7 * This,
15988 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15989
15990 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15991 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15992 ID3D12Device7 * This,
15993 _In_ UINT nodeMask,
15994 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15995 _In_ SIZE_T blobLengthInBytes,
15996 REFIID riid,
15997 _COM_Outptr_ void **ppvRootSignature);
15998
15999 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16000 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16001 ID3D12Device7 * This,
16002 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16003 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16004
16005 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16006 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16007 ID3D12Device7 * This,
16008 _In_opt_ ID3D12Resource *pResource,
16009 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16010 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16011
16012 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16013 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16014 ID3D12Device7 * This,
16015 _In_opt_ ID3D12Resource *pResource,
16016 _In_opt_ ID3D12Resource *pCounterResource,
16017 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16018 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16019
16020 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16021 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16022 ID3D12Device7 * This,
16023 _In_opt_ ID3D12Resource *pResource,
16024 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16025 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16026
16027 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16028 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16029 ID3D12Device7 * This,
16030 _In_opt_ ID3D12Resource *pResource,
16031 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16032 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16033
16034 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16035 void ( STDMETHODCALLTYPE *CreateSampler )(
16036 ID3D12Device7 * This,
16037 _In_ const D3D12_SAMPLER_DESC *pDesc,
16038 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16039
16040 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16041 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16042 ID3D12Device7 * This,
16043 _In_ UINT NumDestDescriptorRanges,
16044 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16045 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16046 _In_ UINT NumSrcDescriptorRanges,
16047 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16048 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16049 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16050
16051 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16052 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16053 ID3D12Device7 * This,
16054 _In_ UINT NumDescriptors,
16055 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16056 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16057 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16058
16059 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16060 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16061 ID3D12Device7 * This,
16062 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16063 _In_ UINT visibleMask,
16064 _In_ UINT numResourceDescs,
16065 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16066
16067 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16068 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16069 ID3D12Device7 * This,
16070 D3D12_HEAP_PROPERTIES * RetVal,
16071 _In_ UINT nodeMask,
16072 D3D12_HEAP_TYPE heapType);
16073
16074 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16075 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16076 ID3D12Device7 * This,
16077 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16078 D3D12_HEAP_FLAGS HeapFlags,
16079 _In_ const D3D12_RESOURCE_DESC *pDesc,
16080 D3D12_RESOURCE_STATES InitialResourceState,
16081 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16082 REFIID riidResource,
16083 _COM_Outptr_opt_ void **ppvResource);
16084
16085 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16086 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16087 ID3D12Device7 * This,
16088 _In_ const D3D12_HEAP_DESC *pDesc,
16089 REFIID riid,
16090 _COM_Outptr_opt_ void **ppvHeap);
16091
16092 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16093 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16094 ID3D12Device7 * This,
16095 _In_ ID3D12Heap *pHeap,
16096 UINT64 HeapOffset,
16097 _In_ const D3D12_RESOURCE_DESC *pDesc,
16098 D3D12_RESOURCE_STATES InitialState,
16099 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16100 REFIID riid,
16101 _COM_Outptr_opt_ void **ppvResource);
16102
16103 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16104 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16105 ID3D12Device7 * This,
16106 _In_ const D3D12_RESOURCE_DESC *pDesc,
16107 D3D12_RESOURCE_STATES InitialState,
16108 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16109 REFIID riid,
16110 _COM_Outptr_opt_ void **ppvResource);
16111
16112 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16113 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16114 ID3D12Device7 * This,
16115 _In_ ID3D12DeviceChild *pObject,
16116 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16117 DWORD Access,
16118 _In_opt_ LPCWSTR Name,
16119 _Out_ HANDLE *pHandle);
16120
16121 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16122 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16123 ID3D12Device7 * This,
16124 _In_ HANDLE NTHandle,
16125 REFIID riid,
16126 _COM_Outptr_opt_ void **ppvObj);
16127
16128 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16129 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16130 ID3D12Device7 * This,
16131 _In_ LPCWSTR Name,
16132 DWORD Access,
16133 /* [annotation][out] */
16134 _Out_ HANDLE *pNTHandle);
16135
16136 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16137 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16138 ID3D12Device7 * This,
16139 UINT NumObjects,
16140 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16141
16142 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16143 HRESULT ( STDMETHODCALLTYPE *Evict )(
16144 ID3D12Device7 * This,
16145 UINT NumObjects,
16146 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16147
16148 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16149 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16150 ID3D12Device7 * This,
16151 UINT64 InitialValue,
16152 D3D12_FENCE_FLAGS Flags,
16153 REFIID riid,
16154 _COM_Outptr_ void **ppFence);
16155
16156 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16157 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16158 ID3D12Device7 * This);
16159
16160 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16161 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16162 ID3D12Device7 * This,
16163 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16166 UINT64 BaseOffset,
16167 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16168 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16169 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16170 _Out_opt_ UINT64 *pTotalBytes);
16171
16172 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16173 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16174 ID3D12Device7 * This,
16175 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16176 REFIID riid,
16177 _COM_Outptr_opt_ void **ppvHeap);
16178
16179 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16180 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16181 ID3D12Device7 * This,
16182 BOOL Enable);
16183
16184 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16185 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16186 ID3D12Device7 * This,
16187 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16188 _In_opt_ ID3D12RootSignature *pRootSignature,
16189 REFIID riid,
16190 _COM_Outptr_opt_ void **ppvCommandSignature);
16191
16192 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16193 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16194 ID3D12Device7 * This,
16195 _In_ ID3D12Resource *pTiledResource,
16196 _Out_opt_ UINT *pNumTilesForEntireResource,
16197 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16198 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16199 _Inout_opt_ UINT *pNumSubresourceTilings,
16200 _In_ UINT FirstSubresourceTilingToGet,
16201 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16202
16203 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16204 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16205 ID3D12Device7 * This,
16206 LUID * RetVal);
16207
16208 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16209 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16210 ID3D12Device7 * This,
16211 _In_reads_(BlobLength) const void *pLibraryBlob,
16212 SIZE_T BlobLength,
16213 REFIID riid,
16214 _COM_Outptr_ void **ppPipelineLibrary);
16215
16216 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16217 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16218 ID3D12Device7 * This,
16219 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16220 _In_reads_(NumFences) const UINT64 *pFenceValues,
16221 UINT NumFences,
16222 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16223 HANDLE hEvent);
16224
16225 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16226 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16227 ID3D12Device7 * This,
16228 UINT NumObjects,
16229 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16230 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16231
16232 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16233 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16234 ID3D12Device7 * This,
16235 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16236 REFIID riid,
16237 _COM_Outptr_ void **ppPipelineState);
16238
16239 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16240 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16241 ID3D12Device7 * This,
16242 _In_ const void *pAddress,
16243 REFIID riid,
16244 _COM_Outptr_ void **ppvHeap);
16245
16246 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16247 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16248 ID3D12Device7 * This,
16249 _In_ HANDLE hFileMapping,
16250 REFIID riid,
16251 _COM_Outptr_ void **ppvHeap);
16252
16253 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16254 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16255 ID3D12Device7 * This,
16256 D3D12_RESIDENCY_FLAGS Flags,
16257 UINT NumObjects,
16258 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16259 _In_ ID3D12Fence *pFenceToSignal,
16260 UINT64 FenceValueToSignal);
16261
16262 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16263 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16264 ID3D12Device7 * This,
16265 _In_ UINT nodeMask,
16266 _In_ D3D12_COMMAND_LIST_TYPE type,
16267 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16268 REFIID riid,
16269 _COM_Outptr_ void **ppCommandList);
16270
16271 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16272 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16273 ID3D12Device7 * This,
16274 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16275 _In_ REFIID riid,
16276 _COM_Outptr_ void **ppSession);
16277
16278 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16279 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16280 ID3D12Device7 * This,
16281 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16282 D3D12_HEAP_FLAGS HeapFlags,
16283 _In_ const D3D12_RESOURCE_DESC *pDesc,
16284 D3D12_RESOURCE_STATES InitialResourceState,
16285 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16286 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16287 REFIID riidResource,
16288 _COM_Outptr_opt_ void **ppvResource);
16289
16290 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16291 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16292 ID3D12Device7 * This,
16293 _In_ const D3D12_HEAP_DESC *pDesc,
16294 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16295 REFIID riid,
16296 _COM_Outptr_opt_ void **ppvHeap);
16297
16298 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16299 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16300 ID3D12Device7 * This,
16301 _In_ const D3D12_RESOURCE_DESC *pDesc,
16302 D3D12_RESOURCE_STATES InitialState,
16303 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16304 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16305 REFIID riid,
16306 _COM_Outptr_opt_ void **ppvResource);
16307
16308 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16309 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16310 ID3D12Device7 * This,
16311 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16312 UINT visibleMask,
16313 UINT numResourceDescs,
16314 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16315 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16316
16317 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16318 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16319 ID3D12Device7 * This,
16320 _In_ ID3D12LifetimeOwner *pOwner,
16321 REFIID riid,
16322 _COM_Outptr_ void **ppvTracker);
16323
16324 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16325 void ( STDMETHODCALLTYPE *RemoveDevice )(
16326 ID3D12Device7 * This);
16327
16328 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16329 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16330 ID3D12Device7 * This,
16331 _Inout_ UINT *pNumMetaCommands,
16332 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16333
16334 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16335 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16336 ID3D12Device7 * This,
16337 _In_ REFGUID CommandId,
16338 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16339 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16340 _Inout_ UINT *pParameterCount,
16341 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16342
16343 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16344 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16345 ID3D12Device7 * This,
16346 _In_ REFGUID CommandId,
16347 _In_ UINT NodeMask,
16348 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16349 _In_ SIZE_T CreationParametersDataSizeInBytes,
16350 REFIID riid,
16351 _COM_Outptr_ void **ppMetaCommand);
16352
16353 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16354 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16355 ID3D12Device7 * This,
16356 const D3D12_STATE_OBJECT_DESC *pDesc,
16357 REFIID riid,
16358 _COM_Outptr_ void **ppStateObject);
16359
16360 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16361 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16362 ID3D12Device7 * This,
16363 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16364 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16365
16366 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16367 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16368 ID3D12Device7 * This,
16369 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16370 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16371
16372 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
16373 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
16374 ID3D12Device7 * This,
16375 D3D12_BACKGROUND_PROCESSING_MODE Mode,
16376 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
16377 _In_opt_ HANDLE hEventToSignalUponCompletion,
16378 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
16379
16380 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
16381 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
16382 ID3D12Device7 * This,
16383 const D3D12_STATE_OBJECT_DESC *pAddition,
16384 ID3D12StateObject *pStateObjectToGrowFrom,
16385 REFIID riid,
16386 _COM_Outptr_ void **ppNewStateObject);
16387
16388 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
16389 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
16390 ID3D12Device7 * This,
16391 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
16392 _In_ REFIID riid,
16393 _COM_Outptr_ void **ppSession);
16394
16395 END_INTERFACE
16396 } ID3D12Device7Vtbl;
16397
16398 interface ID3D12Device7
16399 {
16400 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
16401 };
16402
16403
16404
16405#ifdef COBJMACROS
16406
16407
16408#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
16409 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16410
16411#define ID3D12Device7_AddRef(This) \
16412 ( (This)->lpVtbl -> AddRef(This) )
16413
16414#define ID3D12Device7_Release(This) \
16415 ( (This)->lpVtbl -> Release(This) )
16416
16417
16418#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
16419 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16420
16421#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
16422 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16423
16424#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
16425 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16426
16427#define ID3D12Device7_SetName(This,Name) \
16428 ( (This)->lpVtbl -> SetName(This,Name) )
16429
16430
16431#define ID3D12Device7_GetNodeCount(This) \
16432 ( (This)->lpVtbl -> GetNodeCount(This) )
16433
16434#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16435 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16436
16437#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16438 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16439
16440#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16441 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16442
16443#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16444 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16445
16446#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16447 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16448
16449#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16450 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16451
16452#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16453 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16454
16455#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16456 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16457
16458#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16459 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16460
16461#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16462 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16463
16464#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16465 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16466
16467#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16468 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16469
16470#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16471 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16472
16473#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16474 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16475
16476#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
16477 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16478
16479#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16480 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16481
16482#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16483 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16484
16485#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16486 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16487
16488#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16489 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16490
16491#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16492 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16493
16494#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
16495 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16496
16497#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16498 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16499
16500#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16501 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16502
16503#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16504 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16505
16506#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16507 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16508
16509#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16510 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16511
16512#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
16513 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16514
16515#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
16516 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16517
16518#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16519 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16520
16521#define ID3D12Device7_GetDeviceRemovedReason(This) \
16522 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16523
16524#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16525 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16526
16527#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16528 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16529
16530#define ID3D12Device7_SetStablePowerState(This,Enable) \
16531 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16532
16533#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16534 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16535
16536#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16537 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16538
16539#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
16540 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16541
16542
16543#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16544 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16545
16546#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16547 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16548
16549#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16550 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16551
16552
16553#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16554 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16555
16556
16557#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16558 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16559
16560#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16561 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16562
16563#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16564 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16565
16566
16567#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16568 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16569
16570#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16571 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16572
16573#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16574 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16575
16576#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16577 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16578
16579#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16580 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16581
16582#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16583 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16584
16585
16586#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16587 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16588
16589#define ID3D12Device7_RemoveDevice(This) \
16590 ( (This)->lpVtbl -> RemoveDevice(This) )
16591
16592#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16593 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16594
16595#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16596 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16597
16598#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16599 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16600
16601#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
16602 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16603
16604#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16605 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16606
16607#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16608 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16609
16610
16611#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
16612 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
16613
16614
16615#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
16616 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
16617
16618#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
16619 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
16620
16621#endif /* COBJMACROS */
16622
16623
16624#endif /* C style interface */
16625
16626
16627
16628
16629#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
16630
16631
16632#ifndef __ID3D12Device8_INTERFACE_DEFINED__
16633#define __ID3D12Device8_INTERFACE_DEFINED__
16634
16635/* interface ID3D12Device8 */
16636/* [unique][local][object][uuid] */
16637
16638
16639EXTERN_C const IID IID_ID3D12Device8;
16640
16641#if defined(__cplusplus) && !defined(CINTERFACE)
16642
16643 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
16644 ID3D12Device8 : public ID3D12Device7
16645 {
16646 public:
16647 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
16648 UINT visibleMask,
16649 UINT numResourceDescs,
16650 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
16651 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
16652
16653 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
16654 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16655 D3D12_HEAP_FLAGS HeapFlags,
16656 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16657 D3D12_RESOURCE_STATES InitialResourceState,
16658 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16659 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16660 REFIID riidResource,
16661 _COM_Outptr_opt_ void **ppvResource) = 0;
16662
16663 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
16664 _In_ ID3D12Heap *pHeap,
16665 UINT64 HeapOffset,
16666 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16667 D3D12_RESOURCE_STATES InitialState,
16668 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16669 REFIID riid,
16670 _COM_Outptr_opt_ void **ppvResource) = 0;
16671
16672 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
16673 _In_opt_ ID3D12Resource *pTargetedResource,
16674 _In_opt_ ID3D12Resource *pFeedbackResource,
16675 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
16676
16677 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
16678 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
16679 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16680 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16681 UINT64 BaseOffset,
16682 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16683 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16684 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16685 _Out_opt_ UINT64 *pTotalBytes) = 0;
16686
16687 };
16688
16689
16690#else /* C style interface */
16691
16692 typedef struct ID3D12Device8Vtbl
16693 {
16694 BEGIN_INTERFACE
16695
16696 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16697 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16698 ID3D12Device8 * This,
16699 REFIID riid,
16700 _COM_Outptr_ void **ppvObject);
16701
16702 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16703 ULONG ( STDMETHODCALLTYPE *AddRef )(
16704 ID3D12Device8 * This);
16705
16706 DECLSPEC_XFGVIRT(IUnknown, Release)
16707 ULONG ( STDMETHODCALLTYPE *Release )(
16708 ID3D12Device8 * This);
16709
16710 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
16711 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
16712 ID3D12Device8 * This,
16713 _In_ REFGUID guid,
16714 _Inout_ UINT *pDataSize,
16715 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
16716
16717 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
16718 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
16719 ID3D12Device8 * This,
16720 _In_ REFGUID guid,
16721 _In_ UINT DataSize,
16722 _In_reads_bytes_opt_( DataSize ) const void *pData);
16723
16724 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
16725 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
16726 ID3D12Device8 * This,
16727 _In_ REFGUID guid,
16728 _In_opt_ const IUnknown *pData);
16729
16730 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
16731 HRESULT ( STDMETHODCALLTYPE *SetName )(
16732 ID3D12Device8 * This,
16733 _In_z_ LPCWSTR Name);
16734
16735 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
16736 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
16737 ID3D12Device8 * This);
16738
16739 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
16740 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
16741 ID3D12Device8 * This,
16742 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
16743 REFIID riid,
16744 _COM_Outptr_ void **ppCommandQueue);
16745
16746 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
16747 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
16748 ID3D12Device8 * This,
16749 _In_ D3D12_COMMAND_LIST_TYPE type,
16750 REFIID riid,
16751 _COM_Outptr_ void **ppCommandAllocator);
16752
16753 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
16754 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
16755 ID3D12Device8 * This,
16756 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
16757 REFIID riid,
16758 _COM_Outptr_ void **ppPipelineState);
16759
16760 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
16761 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
16762 ID3D12Device8 * This,
16763 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
16764 REFIID riid,
16765 _COM_Outptr_ void **ppPipelineState);
16766
16767 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
16768 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
16769 ID3D12Device8 * This,
16770 _In_ UINT nodeMask,
16771 _In_ D3D12_COMMAND_LIST_TYPE type,
16772 _In_ ID3D12CommandAllocator *pCommandAllocator,
16773 _In_opt_ ID3D12PipelineState *pInitialState,
16774 REFIID riid,
16775 _COM_Outptr_ void **ppCommandList);
16776
16777 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
16778 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
16779 ID3D12Device8 * This,
16780 D3D12_FEATURE Feature,
16781 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
16782 UINT FeatureSupportDataSize);
16783
16784 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
16785 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
16786 ID3D12Device8 * This,
16787 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
16788 REFIID riid,
16789 _COM_Outptr_ void **ppvHeap);
16790
16791 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
16792 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
16793 ID3D12Device8 * This,
16794 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
16795
16796 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
16797 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
16798 ID3D12Device8 * This,
16799 _In_ UINT nodeMask,
16800 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
16801 _In_ SIZE_T blobLengthInBytes,
16802 REFIID riid,
16803 _COM_Outptr_ void **ppvRootSignature);
16804
16805 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16806 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16807 ID3D12Device8 * This,
16808 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16809 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16810
16811 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16812 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16813 ID3D12Device8 * This,
16814 _In_opt_ ID3D12Resource *pResource,
16815 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16816 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16817
16818 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16819 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16820 ID3D12Device8 * This,
16821 _In_opt_ ID3D12Resource *pResource,
16822 _In_opt_ ID3D12Resource *pCounterResource,
16823 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16824 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16825
16826 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16827 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16828 ID3D12Device8 * This,
16829 _In_opt_ ID3D12Resource *pResource,
16830 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16831 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16832
16833 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16834 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16835 ID3D12Device8 * This,
16836 _In_opt_ ID3D12Resource *pResource,
16837 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16838 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16839
16840 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16841 void ( STDMETHODCALLTYPE *CreateSampler )(
16842 ID3D12Device8 * This,
16843 _In_ const D3D12_SAMPLER_DESC *pDesc,
16844 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16845
16846 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16847 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16848 ID3D12Device8 * This,
16849 _In_ UINT NumDestDescriptorRanges,
16850 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16851 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16852 _In_ UINT NumSrcDescriptorRanges,
16853 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16854 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16855 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16856
16857 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16858 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16859 ID3D12Device8 * This,
16860 _In_ UINT NumDescriptors,
16861 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16862 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16863 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16864
16865 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16866 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16867 ID3D12Device8 * This,
16868 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16869 _In_ UINT visibleMask,
16870 _In_ UINT numResourceDescs,
16871 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16872
16873 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16874 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16875 ID3D12Device8 * This,
16876 D3D12_HEAP_PROPERTIES * RetVal,
16877 _In_ UINT nodeMask,
16878 D3D12_HEAP_TYPE heapType);
16879
16880 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16881 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16882 ID3D12Device8 * This,
16883 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16884 D3D12_HEAP_FLAGS HeapFlags,
16885 _In_ const D3D12_RESOURCE_DESC *pDesc,
16886 D3D12_RESOURCE_STATES InitialResourceState,
16887 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16888 REFIID riidResource,
16889 _COM_Outptr_opt_ void **ppvResource);
16890
16891 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16892 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16893 ID3D12Device8 * This,
16894 _In_ const D3D12_HEAP_DESC *pDesc,
16895 REFIID riid,
16896 _COM_Outptr_opt_ void **ppvHeap);
16897
16898 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16899 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16900 ID3D12Device8 * This,
16901 _In_ ID3D12Heap *pHeap,
16902 UINT64 HeapOffset,
16903 _In_ const D3D12_RESOURCE_DESC *pDesc,
16904 D3D12_RESOURCE_STATES InitialState,
16905 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16906 REFIID riid,
16907 _COM_Outptr_opt_ void **ppvResource);
16908
16909 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16910 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16911 ID3D12Device8 * This,
16912 _In_ const D3D12_RESOURCE_DESC *pDesc,
16913 D3D12_RESOURCE_STATES InitialState,
16914 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16915 REFIID riid,
16916 _COM_Outptr_opt_ void **ppvResource);
16917
16918 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16919 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16920 ID3D12Device8 * This,
16921 _In_ ID3D12DeviceChild *pObject,
16922 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16923 DWORD Access,
16924 _In_opt_ LPCWSTR Name,
16925 _Out_ HANDLE *pHandle);
16926
16927 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16928 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16929 ID3D12Device8 * This,
16930 _In_ HANDLE NTHandle,
16931 REFIID riid,
16932 _COM_Outptr_opt_ void **ppvObj);
16933
16934 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16935 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16936 ID3D12Device8 * This,
16937 _In_ LPCWSTR Name,
16938 DWORD Access,
16939 /* [annotation][out] */
16940 _Out_ HANDLE *pNTHandle);
16941
16942 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16943 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16944 ID3D12Device8 * This,
16945 UINT NumObjects,
16946 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16947
16948 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16949 HRESULT ( STDMETHODCALLTYPE *Evict )(
16950 ID3D12Device8 * This,
16951 UINT NumObjects,
16952 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16953
16954 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16955 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16956 ID3D12Device8 * This,
16957 UINT64 InitialValue,
16958 D3D12_FENCE_FLAGS Flags,
16959 REFIID riid,
16960 _COM_Outptr_ void **ppFence);
16961
16962 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16963 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16964 ID3D12Device8 * This);
16965
16966 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16967 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16968 ID3D12Device8 * This,
16969 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16970 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16971 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16972 UINT64 BaseOffset,
16973 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16974 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16975 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16976 _Out_opt_ UINT64 *pTotalBytes);
16977
16978 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16979 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16980 ID3D12Device8 * This,
16981 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16982 REFIID riid,
16983 _COM_Outptr_opt_ void **ppvHeap);
16984
16985 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16986 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16987 ID3D12Device8 * This,
16988 BOOL Enable);
16989
16990 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16991 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16992 ID3D12Device8 * This,
16993 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16994 _In_opt_ ID3D12RootSignature *pRootSignature,
16995 REFIID riid,
16996 _COM_Outptr_opt_ void **ppvCommandSignature);
16997
16998 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16999 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17000 ID3D12Device8 * This,
17001 _In_ ID3D12Resource *pTiledResource,
17002 _Out_opt_ UINT *pNumTilesForEntireResource,
17003 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17004 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17005 _Inout_opt_ UINT *pNumSubresourceTilings,
17006 _In_ UINT FirstSubresourceTilingToGet,
17007 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17008
17009 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17010 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17011 ID3D12Device8 * This,
17012 LUID * RetVal);
17013
17014 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17015 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17016 ID3D12Device8 * This,
17017 _In_reads_(BlobLength) const void *pLibraryBlob,
17018 SIZE_T BlobLength,
17019 REFIID riid,
17020 _COM_Outptr_ void **ppPipelineLibrary);
17021
17022 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17023 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17024 ID3D12Device8 * This,
17025 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17026 _In_reads_(NumFences) const UINT64 *pFenceValues,
17027 UINT NumFences,
17028 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17029 HANDLE hEvent);
17030
17031 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17032 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17033 ID3D12Device8 * This,
17034 UINT NumObjects,
17035 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17036 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17037
17038 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17039 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17040 ID3D12Device8 * This,
17041 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17042 REFIID riid,
17043 _COM_Outptr_ void **ppPipelineState);
17044
17045 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17046 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17047 ID3D12Device8 * This,
17048 _In_ const void *pAddress,
17049 REFIID riid,
17050 _COM_Outptr_ void **ppvHeap);
17051
17052 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17053 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17054 ID3D12Device8 * This,
17055 _In_ HANDLE hFileMapping,
17056 REFIID riid,
17057 _COM_Outptr_ void **ppvHeap);
17058
17059 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17060 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17061 ID3D12Device8 * This,
17062 D3D12_RESIDENCY_FLAGS Flags,
17063 UINT NumObjects,
17064 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17065 _In_ ID3D12Fence *pFenceToSignal,
17066 UINT64 FenceValueToSignal);
17067
17068 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17069 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17070 ID3D12Device8 * This,
17071 _In_ UINT nodeMask,
17072 _In_ D3D12_COMMAND_LIST_TYPE type,
17073 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17074 REFIID riid,
17075 _COM_Outptr_ void **ppCommandList);
17076
17077 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17078 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17079 ID3D12Device8 * This,
17080 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17081 _In_ REFIID riid,
17082 _COM_Outptr_ void **ppSession);
17083
17084 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17085 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17086 ID3D12Device8 * This,
17087 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17088 D3D12_HEAP_FLAGS HeapFlags,
17089 _In_ const D3D12_RESOURCE_DESC *pDesc,
17090 D3D12_RESOURCE_STATES InitialResourceState,
17091 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17092 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17093 REFIID riidResource,
17094 _COM_Outptr_opt_ void **ppvResource);
17095
17096 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17097 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17098 ID3D12Device8 * This,
17099 _In_ const D3D12_HEAP_DESC *pDesc,
17100 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17101 REFIID riid,
17102 _COM_Outptr_opt_ void **ppvHeap);
17103
17104 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17105 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17106 ID3D12Device8 * This,
17107 _In_ const D3D12_RESOURCE_DESC *pDesc,
17108 D3D12_RESOURCE_STATES InitialState,
17109 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17110 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17111 REFIID riid,
17112 _COM_Outptr_opt_ void **ppvResource);
17113
17114 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17115 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17116 ID3D12Device8 * This,
17117 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17118 UINT visibleMask,
17119 UINT numResourceDescs,
17120 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17121 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17122
17123 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
17124 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
17125 ID3D12Device8 * This,
17126 _In_ ID3D12LifetimeOwner *pOwner,
17127 REFIID riid,
17128 _COM_Outptr_ void **ppvTracker);
17129
17130 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
17131 void ( STDMETHODCALLTYPE *RemoveDevice )(
17132 ID3D12Device8 * This);
17133
17134 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
17135 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
17136 ID3D12Device8 * This,
17137 _Inout_ UINT *pNumMetaCommands,
17138 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
17139
17140 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
17141 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
17142 ID3D12Device8 * This,
17143 _In_ REFGUID CommandId,
17144 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
17145 _Out_opt_ UINT *pTotalStructureSizeInBytes,
17146 _Inout_ UINT *pParameterCount,
17147 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
17148
17149 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
17150 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
17151 ID3D12Device8 * This,
17152 _In_ REFGUID CommandId,
17153 _In_ UINT NodeMask,
17154 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
17155 _In_ SIZE_T CreationParametersDataSizeInBytes,
17156 REFIID riid,
17157 _COM_Outptr_ void **ppMetaCommand);
17158
17159 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
17160 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
17161 ID3D12Device8 * This,
17162 const D3D12_STATE_OBJECT_DESC *pDesc,
17163 REFIID riid,
17164 _COM_Outptr_ void **ppStateObject);
17165
17166 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
17167 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
17168 ID3D12Device8 * This,
17169 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
17170 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
17171
17172 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
17173 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
17174 ID3D12Device8 * This,
17175 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
17176 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
17177
17178 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
17179 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
17180 ID3D12Device8 * This,
17181 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17182 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17183 _In_opt_ HANDLE hEventToSignalUponCompletion,
17184 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
17185
17186 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
17187 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
17188 ID3D12Device8 * This,
17189 const D3D12_STATE_OBJECT_DESC *pAddition,
17190 ID3D12StateObject *pStateObjectToGrowFrom,
17191 REFIID riid,
17192 _COM_Outptr_ void **ppNewStateObject);
17193
17194 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
17195 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
17196 ID3D12Device8 * This,
17197 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
17198 _In_ REFIID riid,
17199 _COM_Outptr_ void **ppSession);
17200
17201 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
17202 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
17203 ID3D12Device8 * This,
17204 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17205 UINT visibleMask,
17206 UINT numResourceDescs,
17207 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
17208 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17209
17210 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
17211 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
17212 ID3D12Device8 * This,
17213 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17214 D3D12_HEAP_FLAGS HeapFlags,
17215 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17216 D3D12_RESOURCE_STATES InitialResourceState,
17217 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17219 REFIID riidResource,
17220 _COM_Outptr_opt_ void **ppvResource);
17221
17222 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
17223 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
17224 ID3D12Device8 * This,
17225 _In_ ID3D12Heap *pHeap,
17226 UINT64 HeapOffset,
17227 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17228 D3D12_RESOURCE_STATES InitialState,
17229 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17230 REFIID riid,
17231 _COM_Outptr_opt_ void **ppvResource);
17232
17233 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
17234 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
17235 ID3D12Device8 * This,
17236 _In_opt_ ID3D12Resource *pTargetedResource,
17237 _In_opt_ ID3D12Resource *pFeedbackResource,
17238 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17239
17240 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
17241 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
17242 ID3D12Device8 * This,
17243 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
17244 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17245 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17246 UINT64 BaseOffset,
17247 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17248 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17249 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17250 _Out_opt_ UINT64 *pTotalBytes);
17251
17252 END_INTERFACE
17253 } ID3D12Device8Vtbl;
17254
17255 interface ID3D12Device8
17256 {
17257 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
17258 };
17259
17260
17261
17262#ifdef COBJMACROS
17263
17264
17265#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
17266 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17267
17268#define ID3D12Device8_AddRef(This) \
17269 ( (This)->lpVtbl -> AddRef(This) )
17270
17271#define ID3D12Device8_Release(This) \
17272 ( (This)->lpVtbl -> Release(This) )
17273
17274
17275#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
17276 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17277
17278#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
17279 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17280
17281#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
17282 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17283
17284#define ID3D12Device8_SetName(This,Name) \
17285 ( (This)->lpVtbl -> SetName(This,Name) )
17286
17287
17288#define ID3D12Device8_GetNodeCount(This) \
17289 ( (This)->lpVtbl -> GetNodeCount(This) )
17290
17291#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
17292 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
17293
17294#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
17295 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
17296
17297#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
17298 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
17299
17300#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
17301 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
17302
17303#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
17304 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
17305
17306#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
17307 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
17308
17309#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
17310 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
17311
17312#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
17313 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
17314
17315#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
17316 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
17317
17318#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
17319 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
17320
17321#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
17322 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
17323
17324#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
17325 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
17326
17327#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
17328 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
17329
17330#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
17331 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
17332
17333#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
17334 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
17335
17336#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
17337 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
17338
17339#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
17340 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
17341
17342#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
17343 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
17344
17345#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
17346 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
17347
17348#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
17349 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
17350
17351#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
17352 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
17353
17354#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17355 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17356
17357#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17358 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17359
17360#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
17361 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
17362
17363#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
17364 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
17365
17366#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
17367 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
17368
17369#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
17370 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
17371
17372#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
17373 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
17374
17375#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
17376 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
17377
17378#define ID3D12Device8_GetDeviceRemovedReason(This) \
17379 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
17380
17381#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17382 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17383
17384#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
17385 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
17386
17387#define ID3D12Device8_SetStablePowerState(This,Enable) \
17388 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
17389
17390#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
17391 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
17392
17393#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
17394 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
17395
17396#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
17397 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
17398
17399
17400#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
17401 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
17402
17403#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
17404 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
17405
17406#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
17407 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
17408
17409
17410#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
17411 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
17412
17413
17414#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
17415 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
17416
17417#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
17418 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
17419
17420#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
17421 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
17422
17423
17424#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
17425 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
17426
17427#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
17428 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
17429
17430#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17431 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17432
17433#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
17434 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
17435
17436#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
17437 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
17438
17439#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17440 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17441
17442
17443#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
17444 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
17445
17446#define ID3D12Device8_RemoveDevice(This) \
17447 ( (This)->lpVtbl -> RemoveDevice(This) )
17448
17449#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
17450 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
17451
17452#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
17453 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
17454
17455#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
17456 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
17457
17458#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
17459 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
17460
17461#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
17462 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
17463
17464#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
17465 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
17466
17467
17468#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
17469 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
17470
17471
17472#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
17473 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
17474
17475#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
17476 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
17477
17478
17479#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17480 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17481
17482#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17483 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17484
17485#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17486 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17487
17488#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
17489 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
17490
17491#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17492 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17493
17494#endif /* COBJMACROS */
17495
17496
17497#endif /* C style interface */
17498
17499
17500
17501
17502#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
17503
17504
17505#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
17506#define __ID3D12Resource1_INTERFACE_DEFINED__
17507
17508/* interface ID3D12Resource1 */
17509/* [unique][local][object][uuid] */
17510
17511
17512EXTERN_C const IID IID_ID3D12Resource1;
17513
17514#if defined(__cplusplus) && !defined(CINTERFACE)
17515
17516 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
17517 ID3D12Resource1 : public ID3D12Resource
17518 {
17519 public:
17520 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17521 REFIID riid,
17522 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17523
17524 };
17525
17526
17527#else /* C style interface */
17528
17529 typedef struct ID3D12Resource1Vtbl
17530 {
17531 BEGIN_INTERFACE
17532
17533 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17534 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17535 ID3D12Resource1 * This,
17536 REFIID riid,
17537 _COM_Outptr_ void **ppvObject);
17538
17539 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17540 ULONG ( STDMETHODCALLTYPE *AddRef )(
17541 ID3D12Resource1 * This);
17542
17543 DECLSPEC_XFGVIRT(IUnknown, Release)
17544 ULONG ( STDMETHODCALLTYPE *Release )(
17545 ID3D12Resource1 * This);
17546
17547 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17548 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17549 ID3D12Resource1 * This,
17550 _In_ REFGUID guid,
17551 _Inout_ UINT *pDataSize,
17552 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17553
17554 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17555 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17556 ID3D12Resource1 * This,
17557 _In_ REFGUID guid,
17558 _In_ UINT DataSize,
17559 _In_reads_bytes_opt_( DataSize ) const void *pData);
17560
17561 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17562 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17563 ID3D12Resource1 * This,
17564 _In_ REFGUID guid,
17565 _In_opt_ const IUnknown *pData);
17566
17567 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17568 HRESULT ( STDMETHODCALLTYPE *SetName )(
17569 ID3D12Resource1 * This,
17570 _In_z_ LPCWSTR Name);
17571
17572 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17573 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17574 ID3D12Resource1 * This,
17575 REFIID riid,
17576 _COM_Outptr_opt_ void **ppvDevice);
17577
17578 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17579 HRESULT ( STDMETHODCALLTYPE *Map )(
17580 ID3D12Resource1 * This,
17581 UINT Subresource,
17582 _In_opt_ const D3D12_RANGE *pReadRange,
17583 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17584
17585 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17586 void ( STDMETHODCALLTYPE *Unmap )(
17587 ID3D12Resource1 * This,
17588 UINT Subresource,
17589 _In_opt_ const D3D12_RANGE *pWrittenRange);
17590
17591 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17592 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17593 ID3D12Resource1 * This,
17594 D3D12_RESOURCE_DESC * RetVal);
17595
17596 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17597 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17598 ID3D12Resource1 * This);
17599
17600 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17601 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17602 ID3D12Resource1 * This,
17603 UINT DstSubresource,
17604 _In_opt_ const D3D12_BOX *pDstBox,
17605 _In_ const void *pSrcData,
17606 UINT SrcRowPitch,
17607 UINT SrcDepthPitch);
17608
17609 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17610 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17611 ID3D12Resource1 * This,
17612 _Out_ void *pDstData,
17613 UINT DstRowPitch,
17614 UINT DstDepthPitch,
17615 UINT SrcSubresource,
17616 _In_opt_ const D3D12_BOX *pSrcBox);
17617
17618 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17619 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17620 ID3D12Resource1 * This,
17621 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17622 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17623
17624 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17625 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17626 ID3D12Resource1 * This,
17627 REFIID riid,
17628 _COM_Outptr_opt_ void **ppProtectedSession);
17629
17630 END_INTERFACE
17631 } ID3D12Resource1Vtbl;
17632
17633 interface ID3D12Resource1
17634 {
17635 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
17636 };
17637
17638
17639
17640#ifdef COBJMACROS
17641
17642
17643#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
17644 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17645
17646#define ID3D12Resource1_AddRef(This) \
17647 ( (This)->lpVtbl -> AddRef(This) )
17648
17649#define ID3D12Resource1_Release(This) \
17650 ( (This)->lpVtbl -> Release(This) )
17651
17652
17653#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
17654 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17655
17656#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
17657 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17658
17659#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
17660 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17661
17662#define ID3D12Resource1_SetName(This,Name) \
17663 ( (This)->lpVtbl -> SetName(This,Name) )
17664
17665
17666#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
17667 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17668
17669
17670
17671#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
17672 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17673
17674#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
17675 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17676
17677#define ID3D12Resource1_GetDesc(This,RetVal) \
17678 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17679
17680#define ID3D12Resource1_GetGPUVirtualAddress(This) \
17681 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17682
17683#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17684 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17685
17686#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17687 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17688
17689#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17690 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17691
17692
17693#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17694 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17695
17696#endif /* COBJMACROS */
17697
17698
17699#endif /* C style interface */
17700
17701
17702
17703
17704#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
17705
17706
17707#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
17708#define __ID3D12Resource2_INTERFACE_DEFINED__
17709
17710/* interface ID3D12Resource2 */
17711/* [unique][local][object][uuid] */
17712
17713
17714EXTERN_C const IID IID_ID3D12Resource2;
17715
17716#if defined(__cplusplus) && !defined(CINTERFACE)
17717
17718 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
17719 ID3D12Resource2 : public ID3D12Resource1
17720 {
17721 public:
17722 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
17723
17724 };
17725
17726
17727#else /* C style interface */
17728
17729 typedef struct ID3D12Resource2Vtbl
17730 {
17731 BEGIN_INTERFACE
17732
17733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17735 ID3D12Resource2 * This,
17736 REFIID riid,
17737 _COM_Outptr_ void **ppvObject);
17738
17739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17740 ULONG ( STDMETHODCALLTYPE *AddRef )(
17741 ID3D12Resource2 * This);
17742
17743 DECLSPEC_XFGVIRT(IUnknown, Release)
17744 ULONG ( STDMETHODCALLTYPE *Release )(
17745 ID3D12Resource2 * This);
17746
17747 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17748 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17749 ID3D12Resource2 * This,
17750 _In_ REFGUID guid,
17751 _Inout_ UINT *pDataSize,
17752 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17753
17754 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17755 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17756 ID3D12Resource2 * This,
17757 _In_ REFGUID guid,
17758 _In_ UINT DataSize,
17759 _In_reads_bytes_opt_( DataSize ) const void *pData);
17760
17761 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17762 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17763 ID3D12Resource2 * This,
17764 _In_ REFGUID guid,
17765 _In_opt_ const IUnknown *pData);
17766
17767 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17768 HRESULT ( STDMETHODCALLTYPE *SetName )(
17769 ID3D12Resource2 * This,
17770 _In_z_ LPCWSTR Name);
17771
17772 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17773 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17774 ID3D12Resource2 * This,
17775 REFIID riid,
17776 _COM_Outptr_opt_ void **ppvDevice);
17777
17778 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17779 HRESULT ( STDMETHODCALLTYPE *Map )(
17780 ID3D12Resource2 * This,
17781 UINT Subresource,
17782 _In_opt_ const D3D12_RANGE *pReadRange,
17783 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17784
17785 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17786 void ( STDMETHODCALLTYPE *Unmap )(
17787 ID3D12Resource2 * This,
17788 UINT Subresource,
17789 _In_opt_ const D3D12_RANGE *pWrittenRange);
17790
17791 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17792 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17793 ID3D12Resource2 * This,
17794 D3D12_RESOURCE_DESC * RetVal);
17795
17796 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17797 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17798 ID3D12Resource2 * This);
17799
17800 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17801 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17802 ID3D12Resource2 * This,
17803 UINT DstSubresource,
17804 _In_opt_ const D3D12_BOX *pDstBox,
17805 _In_ const void *pSrcData,
17806 UINT SrcRowPitch,
17807 UINT SrcDepthPitch);
17808
17809 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17810 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17811 ID3D12Resource2 * This,
17812 _Out_ void *pDstData,
17813 UINT DstRowPitch,
17814 UINT DstDepthPitch,
17815 UINT SrcSubresource,
17816 _In_opt_ const D3D12_BOX *pSrcBox);
17817
17818 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17819 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17820 ID3D12Resource2 * This,
17821 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17822 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17823
17824 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17825 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17826 ID3D12Resource2 * This,
17827 REFIID riid,
17828 _COM_Outptr_opt_ void **ppProtectedSession);
17829
17830 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
17831 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
17832 ID3D12Resource2 * This,
17833 D3D12_RESOURCE_DESC1 * RetVal);
17834
17835 END_INTERFACE
17836 } ID3D12Resource2Vtbl;
17837
17838 interface ID3D12Resource2
17839 {
17840 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
17841 };
17842
17843
17844
17845#ifdef COBJMACROS
17846
17847
17848#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
17849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17850
17851#define ID3D12Resource2_AddRef(This) \
17852 ( (This)->lpVtbl -> AddRef(This) )
17853
17854#define ID3D12Resource2_Release(This) \
17855 ( (This)->lpVtbl -> Release(This) )
17856
17857
17858#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
17859 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17860
17861#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
17862 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17863
17864#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
17865 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17866
17867#define ID3D12Resource2_SetName(This,Name) \
17868 ( (This)->lpVtbl -> SetName(This,Name) )
17869
17870
17871#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
17872 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17873
17874
17875
17876#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
17877 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17878
17879#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
17880 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17881
17882#define ID3D12Resource2_GetDesc(This,RetVal) \
17883 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17884
17885#define ID3D12Resource2_GetGPUVirtualAddress(This) \
17886 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17887
17888#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17889 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17890
17891#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17892 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17893
17894#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17895 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17896
17897
17898#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17899 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17900
17901
17902#define ID3D12Resource2_GetDesc1(This,RetVal) \
17903 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
17904
17905#endif /* COBJMACROS */
17906
17907
17908#endif /* C style interface */
17909
17910
17911
17912
17913#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
17914
17915
17916#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
17917#define __ID3D12Heap1_INTERFACE_DEFINED__
17918
17919/* interface ID3D12Heap1 */
17920/* [unique][local][object][uuid] */
17921
17922
17923EXTERN_C const IID IID_ID3D12Heap1;
17924
17925#if defined(__cplusplus) && !defined(CINTERFACE)
17926
17927 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
17928 ID3D12Heap1 : public ID3D12Heap
17929 {
17930 public:
17931 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17932 REFIID riid,
17933 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17934
17935 };
17936
17937
17938#else /* C style interface */
17939
17940 typedef struct ID3D12Heap1Vtbl
17941 {
17942 BEGIN_INTERFACE
17943
17944 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17945 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17946 ID3D12Heap1 * This,
17947 REFIID riid,
17948 _COM_Outptr_ void **ppvObject);
17949
17950 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17951 ULONG ( STDMETHODCALLTYPE *AddRef )(
17952 ID3D12Heap1 * This);
17953
17954 DECLSPEC_XFGVIRT(IUnknown, Release)
17955 ULONG ( STDMETHODCALLTYPE *Release )(
17956 ID3D12Heap1 * This);
17957
17958 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17959 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17960 ID3D12Heap1 * This,
17961 _In_ REFGUID guid,
17962 _Inout_ UINT *pDataSize,
17963 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17964
17965 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17966 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17967 ID3D12Heap1 * This,
17968 _In_ REFGUID guid,
17969 _In_ UINT DataSize,
17970 _In_reads_bytes_opt_( DataSize ) const void *pData);
17971
17972 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17973 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17974 ID3D12Heap1 * This,
17975 _In_ REFGUID guid,
17976 _In_opt_ const IUnknown *pData);
17977
17978 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17979 HRESULT ( STDMETHODCALLTYPE *SetName )(
17980 ID3D12Heap1 * This,
17981 _In_z_ LPCWSTR Name);
17982
17983 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17984 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17985 ID3D12Heap1 * This,
17986 REFIID riid,
17987 _COM_Outptr_opt_ void **ppvDevice);
17988
17989 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
17990 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
17991 ID3D12Heap1 * This,
17992 D3D12_HEAP_DESC * RetVal);
17993
17994 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
17995 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17996 ID3D12Heap1 * This,
17997 REFIID riid,
17998 _COM_Outptr_opt_ void **ppProtectedSession);
17999
18000 END_INTERFACE
18001 } ID3D12Heap1Vtbl;
18002
18003 interface ID3D12Heap1
18004 {
18005 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
18006 };
18007
18008
18009
18010#ifdef COBJMACROS
18011
18012
18013#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
18014 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18015
18016#define ID3D12Heap1_AddRef(This) \
18017 ( (This)->lpVtbl -> AddRef(This) )
18018
18019#define ID3D12Heap1_Release(This) \
18020 ( (This)->lpVtbl -> Release(This) )
18021
18022
18023#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
18024 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18025
18026#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
18027 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18028
18029#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
18030 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18031
18032#define ID3D12Heap1_SetName(This,Name) \
18033 ( (This)->lpVtbl -> SetName(This,Name) )
18034
18035
18036#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
18037 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18038
18039
18040
18041#define ID3D12Heap1_GetDesc(This,RetVal) \
18042 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18043
18044
18045#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
18046 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
18047
18048#endif /* COBJMACROS */
18049
18050
18051#endif /* C style interface */
18052
18053
18054
18055
18056#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
18057
18058
18059#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18060#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18061
18062/* interface ID3D12GraphicsCommandList3 */
18063/* [unique][local][object][uuid] */
18064
18065
18066EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
18067
18068#if defined(__cplusplus) && !defined(CINTERFACE)
18069
18070 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
18071 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
18072 {
18073 public:
18074 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
18075 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
18076
18077 };
18078
18079
18080#else /* C style interface */
18081
18082 typedef struct ID3D12GraphicsCommandList3Vtbl
18083 {
18084 BEGIN_INTERFACE
18085
18086 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18087 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18088 ID3D12GraphicsCommandList3 * This,
18089 REFIID riid,
18090 _COM_Outptr_ void **ppvObject);
18091
18092 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18093 ULONG ( STDMETHODCALLTYPE *AddRef )(
18094 ID3D12GraphicsCommandList3 * This);
18095
18096 DECLSPEC_XFGVIRT(IUnknown, Release)
18097 ULONG ( STDMETHODCALLTYPE *Release )(
18098 ID3D12GraphicsCommandList3 * This);
18099
18100 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18101 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18102 ID3D12GraphicsCommandList3 * This,
18103 _In_ REFGUID guid,
18104 _Inout_ UINT *pDataSize,
18105 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18106
18107 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18108 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18109 ID3D12GraphicsCommandList3 * This,
18110 _In_ REFGUID guid,
18111 _In_ UINT DataSize,
18112 _In_reads_bytes_opt_( DataSize ) const void *pData);
18113
18114 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18115 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18116 ID3D12GraphicsCommandList3 * This,
18117 _In_ REFGUID guid,
18118 _In_opt_ const IUnknown *pData);
18119
18120 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18121 HRESULT ( STDMETHODCALLTYPE *SetName )(
18122 ID3D12GraphicsCommandList3 * This,
18123 _In_z_ LPCWSTR Name);
18124
18125 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18126 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18127 ID3D12GraphicsCommandList3 * This,
18128 REFIID riid,
18129 _COM_Outptr_opt_ void **ppvDevice);
18130
18131 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
18132 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
18133 ID3D12GraphicsCommandList3 * This);
18134
18135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
18136 HRESULT ( STDMETHODCALLTYPE *Close )(
18137 ID3D12GraphicsCommandList3 * This);
18138
18139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
18140 HRESULT ( STDMETHODCALLTYPE *Reset )(
18141 ID3D12GraphicsCommandList3 * This,
18142 _In_ ID3D12CommandAllocator *pAllocator,
18143 _In_opt_ ID3D12PipelineState *pInitialState);
18144
18145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
18146 void ( STDMETHODCALLTYPE *ClearState )(
18147 ID3D12GraphicsCommandList3 * This,
18148 _In_opt_ ID3D12PipelineState *pPipelineState);
18149
18150 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
18151 void ( STDMETHODCALLTYPE *DrawInstanced )(
18152 ID3D12GraphicsCommandList3 * This,
18153 _In_ UINT VertexCountPerInstance,
18154 _In_ UINT InstanceCount,
18155 _In_ UINT StartVertexLocation,
18156 _In_ UINT StartInstanceLocation);
18157
18158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
18159 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
18160 ID3D12GraphicsCommandList3 * This,
18161 _In_ UINT IndexCountPerInstance,
18162 _In_ UINT InstanceCount,
18163 _In_ UINT StartIndexLocation,
18164 _In_ INT BaseVertexLocation,
18165 _In_ UINT StartInstanceLocation);
18166
18167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
18168 void ( STDMETHODCALLTYPE *Dispatch )(
18169 ID3D12GraphicsCommandList3 * This,
18170 _In_ UINT ThreadGroupCountX,
18171 _In_ UINT ThreadGroupCountY,
18172 _In_ UINT ThreadGroupCountZ);
18173
18174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
18175 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
18176 ID3D12GraphicsCommandList3 * This,
18177 _In_ ID3D12Resource *pDstBuffer,
18178 UINT64 DstOffset,
18179 _In_ ID3D12Resource *pSrcBuffer,
18180 UINT64 SrcOffset,
18181 UINT64 NumBytes);
18182
18183 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
18184 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
18185 ID3D12GraphicsCommandList3 * This,
18186 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
18187 UINT DstX,
18188 UINT DstY,
18189 UINT DstZ,
18190 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
18191 _In_opt_ const D3D12_BOX *pSrcBox);
18192
18193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
18194 void ( STDMETHODCALLTYPE *CopyResource )(
18195 ID3D12GraphicsCommandList3 * This,
18196 _In_ ID3D12Resource *pDstResource,
18197 _In_ ID3D12Resource *pSrcResource);
18198
18199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
18200 void ( STDMETHODCALLTYPE *CopyTiles )(
18201 ID3D12GraphicsCommandList3 * This,
18202 _In_ ID3D12Resource *pTiledResource,
18203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
18204 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
18205 _In_ ID3D12Resource *pBuffer,
18206 UINT64 BufferStartOffsetInBytes,
18207 D3D12_TILE_COPY_FLAGS Flags);
18208
18209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
18210 void ( STDMETHODCALLTYPE *ResolveSubresource )(
18211 ID3D12GraphicsCommandList3 * This,
18212 _In_ ID3D12Resource *pDstResource,
18213 _In_ UINT DstSubresource,
18214 _In_ ID3D12Resource *pSrcResource,
18215 _In_ UINT SrcSubresource,
18216 _In_ DXGI_FORMAT Format);
18217
18218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
18219 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
18220 ID3D12GraphicsCommandList3 * This,
18221 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
18222
18223 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
18224 void ( STDMETHODCALLTYPE *RSSetViewports )(
18225 ID3D12GraphicsCommandList3 * This,
18226 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
18227 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
18228
18229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
18230 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
18231 ID3D12GraphicsCommandList3 * This,
18232 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
18233 _In_reads_( NumRects) const D3D12_RECT *pRects);
18234
18235 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
18236 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
18237 ID3D12GraphicsCommandList3 * This,
18238 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
18239
18240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
18241 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
18242 ID3D12GraphicsCommandList3 * This,
18243 _In_ UINT StencilRef);
18244
18245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
18246 void ( STDMETHODCALLTYPE *SetPipelineState )(
18247 ID3D12GraphicsCommandList3 * This,
18248 _In_ ID3D12PipelineState *pPipelineState);
18249
18250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
18251 void ( STDMETHODCALLTYPE *ResourceBarrier )(
18252 ID3D12GraphicsCommandList3 * This,
18253 _In_ UINT NumBarriers,
18254 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
18255
18256 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
18257 void ( STDMETHODCALLTYPE *ExecuteBundle )(
18258 ID3D12GraphicsCommandList3 * This,
18259 _In_ ID3D12GraphicsCommandList *pCommandList);
18260
18261 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
18262 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
18263 ID3D12GraphicsCommandList3 * This,
18264 _In_ UINT NumDescriptorHeaps,
18265 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
18266
18267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
18268 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
18269 ID3D12GraphicsCommandList3 * This,
18270 _In_opt_ ID3D12RootSignature *pRootSignature);
18271
18272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
18273 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
18274 ID3D12GraphicsCommandList3 * This,
18275 _In_opt_ ID3D12RootSignature *pRootSignature);
18276
18277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
18278 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
18279 ID3D12GraphicsCommandList3 * This,
18280 _In_ UINT RootParameterIndex,
18281 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18282
18283 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
18284 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
18285 ID3D12GraphicsCommandList3 * This,
18286 _In_ UINT RootParameterIndex,
18287 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18288
18289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
18290 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
18291 ID3D12GraphicsCommandList3 * This,
18292 _In_ UINT RootParameterIndex,
18293 _In_ UINT SrcData,
18294 _In_ UINT DestOffsetIn32BitValues);
18295
18296 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
18297 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
18298 ID3D12GraphicsCommandList3 * This,
18299 _In_ UINT RootParameterIndex,
18300 _In_ UINT SrcData,
18301 _In_ UINT DestOffsetIn32BitValues);
18302
18303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
18304 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
18305 ID3D12GraphicsCommandList3 * This,
18306 _In_ UINT RootParameterIndex,
18307 _In_ UINT Num32BitValuesToSet,
18308 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18309 _In_ UINT DestOffsetIn32BitValues);
18310
18311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
18312 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
18313 ID3D12GraphicsCommandList3 * This,
18314 _In_ UINT RootParameterIndex,
18315 _In_ UINT Num32BitValuesToSet,
18316 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18317 _In_ UINT DestOffsetIn32BitValues);
18318
18319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
18320 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
18321 ID3D12GraphicsCommandList3 * This,
18322 _In_ UINT RootParameterIndex,
18323 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18324
18325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
18326 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
18327 ID3D12GraphicsCommandList3 * This,
18328 _In_ UINT RootParameterIndex,
18329 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18330
18331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
18332 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
18333 ID3D12GraphicsCommandList3 * This,
18334 _In_ UINT RootParameterIndex,
18335 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18336
18337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
18338 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
18339 ID3D12GraphicsCommandList3 * This,
18340 _In_ UINT RootParameterIndex,
18341 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18342
18343 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
18344 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
18345 ID3D12GraphicsCommandList3 * This,
18346 _In_ UINT RootParameterIndex,
18347 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18348
18349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
18350 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
18351 ID3D12GraphicsCommandList3 * This,
18352 _In_ UINT RootParameterIndex,
18353 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18354
18355 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
18356 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
18357 ID3D12GraphicsCommandList3 * This,
18358 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
18359
18360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
18361 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
18362 ID3D12GraphicsCommandList3 * This,
18363 _In_ UINT StartSlot,
18364 _In_ UINT NumViews,
18365 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
18366
18367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
18368 void ( STDMETHODCALLTYPE *SOSetTargets )(
18369 ID3D12GraphicsCommandList3 * This,
18370 _In_ UINT StartSlot,
18371 _In_ UINT NumViews,
18372 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
18373
18374 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
18375 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
18376 ID3D12GraphicsCommandList3 * This,
18377 _In_ UINT NumRenderTargetDescriptors,
18378 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
18379 _In_ BOOL RTsSingleHandleToDescriptorRange,
18380 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
18381
18382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
18383 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
18384 ID3D12GraphicsCommandList3 * This,
18385 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
18386 _In_ D3D12_CLEAR_FLAGS ClearFlags,
18387 _In_ FLOAT Depth,
18388 _In_ UINT8 Stencil,
18389 _In_ UINT NumRects,
18390 _In_reads_(NumRects) const D3D12_RECT *pRects);
18391
18392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
18393 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
18394 ID3D12GraphicsCommandList3 * This,
18395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
18396 _In_ const FLOAT ColorRGBA[ 4 ],
18397 _In_ UINT NumRects,
18398 _In_reads_(NumRects) const D3D12_RECT *pRects);
18399
18400 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
18401 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
18402 ID3D12GraphicsCommandList3 * This,
18403 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18404 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18405 _In_ ID3D12Resource *pResource,
18406 _In_ const UINT Values[ 4 ],
18407 _In_ UINT NumRects,
18408 _In_reads_(NumRects) const D3D12_RECT *pRects);
18409
18410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
18411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
18412 ID3D12GraphicsCommandList3 * This,
18413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18415 _In_ ID3D12Resource *pResource,
18416 _In_ const FLOAT Values[ 4 ],
18417 _In_ UINT NumRects,
18418 _In_reads_(NumRects) const D3D12_RECT *pRects);
18419
18420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
18421 void ( STDMETHODCALLTYPE *DiscardResource )(
18422 ID3D12GraphicsCommandList3 * This,
18423 _In_ ID3D12Resource *pResource,
18424 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
18425
18426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
18427 void ( STDMETHODCALLTYPE *BeginQuery )(
18428 ID3D12GraphicsCommandList3 * This,
18429 _In_ ID3D12QueryHeap *pQueryHeap,
18430 _In_ D3D12_QUERY_TYPE Type,
18431 _In_ UINT Index);
18432
18433 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
18434 void ( STDMETHODCALLTYPE *EndQuery )(
18435 ID3D12GraphicsCommandList3 * This,
18436 _In_ ID3D12QueryHeap *pQueryHeap,
18437 _In_ D3D12_QUERY_TYPE Type,
18438 _In_ UINT Index);
18439
18440 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
18441 void ( STDMETHODCALLTYPE *ResolveQueryData )(
18442 ID3D12GraphicsCommandList3 * This,
18443 _In_ ID3D12QueryHeap *pQueryHeap,
18444 _In_ D3D12_QUERY_TYPE Type,
18445 _In_ UINT StartIndex,
18446 _In_ UINT NumQueries,
18447 _In_ ID3D12Resource *pDestinationBuffer,
18448 _In_ UINT64 AlignedDestinationBufferOffset);
18449
18450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
18451 void ( STDMETHODCALLTYPE *SetPredication )(
18452 ID3D12GraphicsCommandList3 * This,
18453 _In_opt_ ID3D12Resource *pBuffer,
18454 _In_ UINT64 AlignedBufferOffset,
18455 _In_ D3D12_PREDICATION_OP Operation);
18456
18457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
18458 void ( STDMETHODCALLTYPE *SetMarker )(
18459 ID3D12GraphicsCommandList3 * This,
18460 UINT Metadata,
18461 _In_reads_bytes_opt_(Size) const void *pData,
18462 UINT Size);
18463
18464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
18465 void ( STDMETHODCALLTYPE *BeginEvent )(
18466 ID3D12GraphicsCommandList3 * This,
18467 UINT Metadata,
18468 _In_reads_bytes_opt_(Size) const void *pData,
18469 UINT Size);
18470
18471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
18472 void ( STDMETHODCALLTYPE *EndEvent )(
18473 ID3D12GraphicsCommandList3 * This);
18474
18475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
18476 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
18477 ID3D12GraphicsCommandList3 * This,
18478 _In_ ID3D12CommandSignature *pCommandSignature,
18479 _In_ UINT MaxCommandCount,
18480 _In_ ID3D12Resource *pArgumentBuffer,
18481 _In_ UINT64 ArgumentBufferOffset,
18482 _In_opt_ ID3D12Resource *pCountBuffer,
18483 _In_ UINT64 CountBufferOffset);
18484
18485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
18486 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
18487 ID3D12GraphicsCommandList3 * This,
18488 _In_ ID3D12Resource *pDstBuffer,
18489 UINT64 DstOffset,
18490 _In_ ID3D12Resource *pSrcBuffer,
18491 UINT64 SrcOffset,
18492 UINT Dependencies,
18493 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18494 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18495
18496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
18497 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
18498 ID3D12GraphicsCommandList3 * This,
18499 _In_ ID3D12Resource *pDstBuffer,
18500 UINT64 DstOffset,
18501 _In_ ID3D12Resource *pSrcBuffer,
18502 UINT64 SrcOffset,
18503 UINT Dependencies,
18504 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18505 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18506
18507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
18508 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
18509 ID3D12GraphicsCommandList3 * This,
18510 _In_ FLOAT Min,
18511 _In_ FLOAT Max);
18512
18513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
18514 void ( STDMETHODCALLTYPE *SetSamplePositions )(
18515 ID3D12GraphicsCommandList3 * This,
18516 _In_ UINT NumSamplesPerPixel,
18517 _In_ UINT NumPixels,
18518 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
18519
18520 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
18521 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
18522 ID3D12GraphicsCommandList3 * This,
18523 _In_ ID3D12Resource *pDstResource,
18524 _In_ UINT DstSubresource,
18525 _In_ UINT DstX,
18526 _In_ UINT DstY,
18527 _In_ ID3D12Resource *pSrcResource,
18528 _In_ UINT SrcSubresource,
18529 _In_opt_ D3D12_RECT *pSrcRect,
18530 _In_ DXGI_FORMAT Format,
18531 _In_ D3D12_RESOLVE_MODE ResolveMode);
18532
18533 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
18534 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
18535 ID3D12GraphicsCommandList3 * This,
18536 _In_ UINT Mask);
18537
18538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
18539 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
18540 ID3D12GraphicsCommandList3 * This,
18541 UINT Count,
18542 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
18543 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
18544
18545 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
18546 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
18547 ID3D12GraphicsCommandList3 * This,
18548 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
18549
18550 END_INTERFACE
18551 } ID3D12GraphicsCommandList3Vtbl;
18552
18553 interface ID3D12GraphicsCommandList3
18554 {
18555 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
18556 };
18557
18558
18559
18560#ifdef COBJMACROS
18561
18562
18563#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
18564 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18565
18566#define ID3D12GraphicsCommandList3_AddRef(This) \
18567 ( (This)->lpVtbl -> AddRef(This) )
18568
18569#define ID3D12GraphicsCommandList3_Release(This) \
18570 ( (This)->lpVtbl -> Release(This) )
18571
18572
18573#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
18574 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18575
18576#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
18577 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18578
18579#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
18580 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18581
18582#define ID3D12GraphicsCommandList3_SetName(This,Name) \
18583 ( (This)->lpVtbl -> SetName(This,Name) )
18584
18585
18586#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
18587 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18588
18589
18590#define ID3D12GraphicsCommandList3_GetType(This) \
18591 ( (This)->lpVtbl -> GetType(This) )
18592
18593
18594#define ID3D12GraphicsCommandList3_Close(This) \
18595 ( (This)->lpVtbl -> Close(This) )
18596
18597#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
18598 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
18599
18600#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
18601 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
18602
18603#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
18604 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
18605
18606#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
18607 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
18608
18609#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
18610 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
18611
18612#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
18613 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
18614
18615#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
18616 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
18617
18618#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
18619 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
18620
18621#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
18622 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
18623
18624#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
18625 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
18626
18627#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
18628 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
18629
18630#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
18631 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
18632
18633#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
18634 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
18635
18636#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
18637 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
18638
18639#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
18640 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
18641
18642#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
18643 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
18644
18645#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
18646 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
18647
18648#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
18649 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
18650
18651#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
18652 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
18653
18654#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
18655 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
18656
18657#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
18658 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
18659
18660#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18661 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18662
18663#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18664 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18665
18666#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18667 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18668
18669#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18670 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18671
18672#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18673 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18674
18675#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18676 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18677
18678#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18679 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18680
18681#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18682 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18683
18684#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18685 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18686
18687#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18688 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18689
18690#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18691 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18692
18693#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18694 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18695
18696#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
18697 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
18698
18699#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
18700 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
18701
18702#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
18703 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
18704
18705#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
18706 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
18707
18708#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
18709 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
18710
18711#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
18712 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
18713
18714#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18715 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18716
18717#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18718 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18719
18720#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
18721 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
18722
18723#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
18724 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
18725
18726#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
18727 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
18728
18729#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
18730 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
18731
18732#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
18733 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
18734
18735#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
18736 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
18737
18738#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
18739 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
18740
18741#define ID3D12GraphicsCommandList3_EndEvent(This) \
18742 ( (This)->lpVtbl -> EndEvent(This) )
18743
18744#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
18745 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
18746
18747
18748#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18749 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18750
18751#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18752 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18753
18754#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
18755 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
18756
18757#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
18758 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
18759
18760#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
18761 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
18762
18763#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
18764 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
18765
18766
18767#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
18768 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
18769
18770
18771#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
18772 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
18773
18774#endif /* COBJMACROS */
18775
18776
18777#endif /* C style interface */
18778
18779
18780
18781
18782#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
18783
18784
18785/* interface __MIDL_itf_d3d12_0000_0048 */
18786/* [local] */
18787
18788typedef
18789enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
18790 {
18791 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
18792 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
18793 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
18794 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 )
18795 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
18796
18797typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
18798 {
18799 D3D12_CLEAR_VALUE ClearValue;
18800 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
18801
18802typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
18803 {
18804 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
18805 union
18806 {
18807 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
18808 } ;
18809 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
18810
18811typedef
18812enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
18813 {
18814 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
18815 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
18816 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
18817 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 )
18818 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
18819
18820typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
18821 {
18822 UINT SrcSubresource;
18823 UINT DstSubresource;
18824 UINT DstX;
18825 UINT DstY;
18826 D3D12_RECT SrcRect;
18827 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
18828
18829typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
18830 {
18831 ID3D12Resource *pSrcResource;
18832 ID3D12Resource *pDstResource;
18833 UINT SubresourceCount;
18834 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
18835 DXGI_FORMAT Format;
18836 D3D12_RESOLVE_MODE ResolveMode;
18837 BOOL PreserveResolveSource;
18838 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
18839
18840typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
18841 {
18842 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
18843 union
18844 {
18845 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
18846 } ;
18847 } D3D12_RENDER_PASS_ENDING_ACCESS;
18848
18849typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
18850 {
18851 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18852 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
18853 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
18854 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
18855
18856typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
18857 {
18858 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18859 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
18860 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
18861 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
18862 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
18863 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
18864
18865typedef
18866enum D3D12_RENDER_PASS_FLAGS
18867 {
18868 D3D12_RENDER_PASS_FLAG_NONE = 0,
18869 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
18870 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
18871 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
18872 } D3D12_RENDER_PASS_FLAGS;
18873
18874DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );
18875
18876
18877extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_c_ifspec;
18878extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_s_ifspec;
18879
18880#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
18881#define __ID3D12MetaCommand_INTERFACE_DEFINED__
18882
18883/* interface ID3D12MetaCommand */
18884/* [unique][local][object][uuid] */
18885
18886
18887EXTERN_C const IID IID_ID3D12MetaCommand;
18888
18889#if defined(__cplusplus) && !defined(CINTERFACE)
18890
18891 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
18892 ID3D12MetaCommand : public ID3D12Pageable
18893 {
18894 public:
18895 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
18896 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18897 _In_ UINT ParameterIndex) = 0;
18898
18899 };
18900
18901
18902#else /* C style interface */
18903
18904 typedef struct ID3D12MetaCommandVtbl
18905 {
18906 BEGIN_INTERFACE
18907
18908 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18909 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18910 ID3D12MetaCommand * This,
18911 REFIID riid,
18912 _COM_Outptr_ void **ppvObject);
18913
18914 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18915 ULONG ( STDMETHODCALLTYPE *AddRef )(
18916 ID3D12MetaCommand * This);
18917
18918 DECLSPEC_XFGVIRT(IUnknown, Release)
18919 ULONG ( STDMETHODCALLTYPE *Release )(
18920 ID3D12MetaCommand * This);
18921
18922 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18923 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18924 ID3D12MetaCommand * This,
18925 _In_ REFGUID guid,
18926 _Inout_ UINT *pDataSize,
18927 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18928
18929 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18930 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18931 ID3D12MetaCommand * This,
18932 _In_ REFGUID guid,
18933 _In_ UINT DataSize,
18934 _In_reads_bytes_opt_( DataSize ) const void *pData);
18935
18936 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18937 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18938 ID3D12MetaCommand * This,
18939 _In_ REFGUID guid,
18940 _In_opt_ const IUnknown *pData);
18941
18942 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18943 HRESULT ( STDMETHODCALLTYPE *SetName )(
18944 ID3D12MetaCommand * This,
18945 _In_z_ LPCWSTR Name);
18946
18947 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18948 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18949 ID3D12MetaCommand * This,
18950 REFIID riid,
18951 _COM_Outptr_opt_ void **ppvDevice);
18952
18953 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
18954 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
18955 ID3D12MetaCommand * This,
18956 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18957 _In_ UINT ParameterIndex);
18958
18959 END_INTERFACE
18960 } ID3D12MetaCommandVtbl;
18961
18962 interface ID3D12MetaCommand
18963 {
18964 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
18965 };
18966
18967
18968
18969#ifdef COBJMACROS
18970
18971
18972#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
18973 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18974
18975#define ID3D12MetaCommand_AddRef(This) \
18976 ( (This)->lpVtbl -> AddRef(This) )
18977
18978#define ID3D12MetaCommand_Release(This) \
18979 ( (This)->lpVtbl -> Release(This) )
18980
18981
18982#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
18983 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18984
18985#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
18986 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18987
18988#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
18989 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18990
18991#define ID3D12MetaCommand_SetName(This,Name) \
18992 ( (This)->lpVtbl -> SetName(This,Name) )
18993
18994
18995#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
18996 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18997
18998
18999
19000#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
19001 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
19002
19003#endif /* COBJMACROS */
19004
19005
19006#endif /* C style interface */
19007
19008
19009
19010
19011#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
19012
19013
19014/* interface __MIDL_itf_d3d12_0000_0049 */
19015/* [local] */
19016
19017typedef struct D3D12_DISPATCH_RAYS_DESC
19018 {
19019 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
19020 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
19021 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
19022 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
19023 UINT Width;
19024 UINT Height;
19025 UINT Depth;
19026 } D3D12_DISPATCH_RAYS_DESC;
19027
19028
19029
19030extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_c_ifspec;
19031extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_s_ifspec;
19032
19033#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19034#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19035
19036/* interface ID3D12GraphicsCommandList4 */
19037/* [unique][local][object][uuid] */
19038
19039
19040EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
19041
19042#if defined(__cplusplus) && !defined(CINTERFACE)
19043
19044 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
19045 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
19046 {
19047 public:
19048 virtual void STDMETHODCALLTYPE BeginRenderPass(
19049 _In_ UINT NumRenderTargets,
19050 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19051 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19052 D3D12_RENDER_PASS_FLAGS Flags) = 0;
19053
19054 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
19055
19056 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
19057 _In_ ID3D12MetaCommand *pMetaCommand,
19058 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19059 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
19060
19061 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
19062 _In_ ID3D12MetaCommand *pMetaCommand,
19063 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19064 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
19065
19066 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
19067 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19068 _In_ UINT NumPostbuildInfoDescs,
19069 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
19070
19071 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
19072 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19073 _In_ UINT NumSourceAccelerationStructures,
19074 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
19075
19076 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
19077 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19078 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19079 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
19080
19081 virtual void STDMETHODCALLTYPE SetPipelineState1(
19082 _In_ ID3D12StateObject *pStateObject) = 0;
19083
19084 virtual void STDMETHODCALLTYPE DispatchRays(
19085 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
19086
19087 };
19088
19089
19090#else /* C style interface */
19091
19092 typedef struct ID3D12GraphicsCommandList4Vtbl
19093 {
19094 BEGIN_INTERFACE
19095
19096 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19097 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19098 ID3D12GraphicsCommandList4 * This,
19099 REFIID riid,
19100 _COM_Outptr_ void **ppvObject);
19101
19102 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19103 ULONG ( STDMETHODCALLTYPE *AddRef )(
19104 ID3D12GraphicsCommandList4 * This);
19105
19106 DECLSPEC_XFGVIRT(IUnknown, Release)
19107 ULONG ( STDMETHODCALLTYPE *Release )(
19108 ID3D12GraphicsCommandList4 * This);
19109
19110 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19111 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19112 ID3D12GraphicsCommandList4 * This,
19113 _In_ REFGUID guid,
19114 _Inout_ UINT *pDataSize,
19115 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19116
19117 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19118 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19119 ID3D12GraphicsCommandList4 * This,
19120 _In_ REFGUID guid,
19121 _In_ UINT DataSize,
19122 _In_reads_bytes_opt_( DataSize ) const void *pData);
19123
19124 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19125 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19126 ID3D12GraphicsCommandList4 * This,
19127 _In_ REFGUID guid,
19128 _In_opt_ const IUnknown *pData);
19129
19130 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19131 HRESULT ( STDMETHODCALLTYPE *SetName )(
19132 ID3D12GraphicsCommandList4 * This,
19133 _In_z_ LPCWSTR Name);
19134
19135 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19136 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
19137 ID3D12GraphicsCommandList4 * This,
19138 REFIID riid,
19139 _COM_Outptr_opt_ void **ppvDevice);
19140
19141 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
19142 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
19143 ID3D12GraphicsCommandList4 * This);
19144
19145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
19146 HRESULT ( STDMETHODCALLTYPE *Close )(
19147 ID3D12GraphicsCommandList4 * This);
19148
19149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
19150 HRESULT ( STDMETHODCALLTYPE *Reset )(
19151 ID3D12GraphicsCommandList4 * This,
19152 _In_ ID3D12CommandAllocator *pAllocator,
19153 _In_opt_ ID3D12PipelineState *pInitialState);
19154
19155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
19156 void ( STDMETHODCALLTYPE *ClearState )(
19157 ID3D12GraphicsCommandList4 * This,
19158 _In_opt_ ID3D12PipelineState *pPipelineState);
19159
19160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
19161 void ( STDMETHODCALLTYPE *DrawInstanced )(
19162 ID3D12GraphicsCommandList4 * This,
19163 _In_ UINT VertexCountPerInstance,
19164 _In_ UINT InstanceCount,
19165 _In_ UINT StartVertexLocation,
19166 _In_ UINT StartInstanceLocation);
19167
19168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
19169 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
19170 ID3D12GraphicsCommandList4 * This,
19171 _In_ UINT IndexCountPerInstance,
19172 _In_ UINT InstanceCount,
19173 _In_ UINT StartIndexLocation,
19174 _In_ INT BaseVertexLocation,
19175 _In_ UINT StartInstanceLocation);
19176
19177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
19178 void ( STDMETHODCALLTYPE *Dispatch )(
19179 ID3D12GraphicsCommandList4 * This,
19180 _In_ UINT ThreadGroupCountX,
19181 _In_ UINT ThreadGroupCountY,
19182 _In_ UINT ThreadGroupCountZ);
19183
19184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
19185 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
19186 ID3D12GraphicsCommandList4 * This,
19187 _In_ ID3D12Resource *pDstBuffer,
19188 UINT64 DstOffset,
19189 _In_ ID3D12Resource *pSrcBuffer,
19190 UINT64 SrcOffset,
19191 UINT64 NumBytes);
19192
19193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
19194 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
19195 ID3D12GraphicsCommandList4 * This,
19196 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
19197 UINT DstX,
19198 UINT DstY,
19199 UINT DstZ,
19200 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
19201 _In_opt_ const D3D12_BOX *pSrcBox);
19202
19203 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
19204 void ( STDMETHODCALLTYPE *CopyResource )(
19205 ID3D12GraphicsCommandList4 * This,
19206 _In_ ID3D12Resource *pDstResource,
19207 _In_ ID3D12Resource *pSrcResource);
19208
19209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
19210 void ( STDMETHODCALLTYPE *CopyTiles )(
19211 ID3D12GraphicsCommandList4 * This,
19212 _In_ ID3D12Resource *pTiledResource,
19213 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
19214 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
19215 _In_ ID3D12Resource *pBuffer,
19216 UINT64 BufferStartOffsetInBytes,
19217 D3D12_TILE_COPY_FLAGS Flags);
19218
19219 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
19220 void ( STDMETHODCALLTYPE *ResolveSubresource )(
19221 ID3D12GraphicsCommandList4 * This,
19222 _In_ ID3D12Resource *pDstResource,
19223 _In_ UINT DstSubresource,
19224 _In_ ID3D12Resource *pSrcResource,
19225 _In_ UINT SrcSubresource,
19226 _In_ DXGI_FORMAT Format);
19227
19228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
19229 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
19230 ID3D12GraphicsCommandList4 * This,
19231 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
19232
19233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
19234 void ( STDMETHODCALLTYPE *RSSetViewports )(
19235 ID3D12GraphicsCommandList4 * This,
19236 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
19237 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
19238
19239 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
19240 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
19241 ID3D12GraphicsCommandList4 * This,
19242 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
19243 _In_reads_( NumRects) const D3D12_RECT *pRects);
19244
19245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
19246 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
19247 ID3D12GraphicsCommandList4 * This,
19248 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
19249
19250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
19251 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
19252 ID3D12GraphicsCommandList4 * This,
19253 _In_ UINT StencilRef);
19254
19255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
19256 void ( STDMETHODCALLTYPE *SetPipelineState )(
19257 ID3D12GraphicsCommandList4 * This,
19258 _In_ ID3D12PipelineState *pPipelineState);
19259
19260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
19261 void ( STDMETHODCALLTYPE *ResourceBarrier )(
19262 ID3D12GraphicsCommandList4 * This,
19263 _In_ UINT NumBarriers,
19264 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
19265
19266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
19267 void ( STDMETHODCALLTYPE *ExecuteBundle )(
19268 ID3D12GraphicsCommandList4 * This,
19269 _In_ ID3D12GraphicsCommandList *pCommandList);
19270
19271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
19272 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
19273 ID3D12GraphicsCommandList4 * This,
19274 _In_ UINT NumDescriptorHeaps,
19275 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
19276
19277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
19278 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
19279 ID3D12GraphicsCommandList4 * This,
19280 _In_opt_ ID3D12RootSignature *pRootSignature);
19281
19282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
19283 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
19284 ID3D12GraphicsCommandList4 * This,
19285 _In_opt_ ID3D12RootSignature *pRootSignature);
19286
19287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
19288 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
19289 ID3D12GraphicsCommandList4 * This,
19290 _In_ UINT RootParameterIndex,
19291 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19292
19293 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
19294 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
19295 ID3D12GraphicsCommandList4 * This,
19296 _In_ UINT RootParameterIndex,
19297 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19298
19299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
19300 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
19301 ID3D12GraphicsCommandList4 * This,
19302 _In_ UINT RootParameterIndex,
19303 _In_ UINT SrcData,
19304 _In_ UINT DestOffsetIn32BitValues);
19305
19306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
19307 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
19308 ID3D12GraphicsCommandList4 * This,
19309 _In_ UINT RootParameterIndex,
19310 _In_ UINT SrcData,
19311 _In_ UINT DestOffsetIn32BitValues);
19312
19313 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
19314 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
19315 ID3D12GraphicsCommandList4 * This,
19316 _In_ UINT RootParameterIndex,
19317 _In_ UINT Num32BitValuesToSet,
19318 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19319 _In_ UINT DestOffsetIn32BitValues);
19320
19321 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
19322 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
19323 ID3D12GraphicsCommandList4 * This,
19324 _In_ UINT RootParameterIndex,
19325 _In_ UINT Num32BitValuesToSet,
19326 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19327 _In_ UINT DestOffsetIn32BitValues);
19328
19329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
19330 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
19331 ID3D12GraphicsCommandList4 * This,
19332 _In_ UINT RootParameterIndex,
19333 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19334
19335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
19336 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
19337 ID3D12GraphicsCommandList4 * This,
19338 _In_ UINT RootParameterIndex,
19339 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19340
19341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
19342 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
19343 ID3D12GraphicsCommandList4 * This,
19344 _In_ UINT RootParameterIndex,
19345 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19346
19347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
19348 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
19349 ID3D12GraphicsCommandList4 * This,
19350 _In_ UINT RootParameterIndex,
19351 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19352
19353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
19354 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
19355 ID3D12GraphicsCommandList4 * This,
19356 _In_ UINT RootParameterIndex,
19357 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19358
19359 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
19360 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
19361 ID3D12GraphicsCommandList4 * This,
19362 _In_ UINT RootParameterIndex,
19363 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19364
19365 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
19366 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
19367 ID3D12GraphicsCommandList4 * This,
19368 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
19369
19370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
19371 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
19372 ID3D12GraphicsCommandList4 * This,
19373 _In_ UINT StartSlot,
19374 _In_ UINT NumViews,
19375 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
19376
19377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
19378 void ( STDMETHODCALLTYPE *SOSetTargets )(
19379 ID3D12GraphicsCommandList4 * This,
19380 _In_ UINT StartSlot,
19381 _In_ UINT NumViews,
19382 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
19383
19384 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
19385 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
19386 ID3D12GraphicsCommandList4 * This,
19387 _In_ UINT NumRenderTargetDescriptors,
19388 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
19389 _In_ BOOL RTsSingleHandleToDescriptorRange,
19390 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
19391
19392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
19393 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
19394 ID3D12GraphicsCommandList4 * This,
19395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
19396 _In_ D3D12_CLEAR_FLAGS ClearFlags,
19397 _In_ FLOAT Depth,
19398 _In_ UINT8 Stencil,
19399 _In_ UINT NumRects,
19400 _In_reads_(NumRects) const D3D12_RECT *pRects);
19401
19402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
19403 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
19404 ID3D12GraphicsCommandList4 * This,
19405 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
19406 _In_ const FLOAT ColorRGBA[ 4 ],
19407 _In_ UINT NumRects,
19408 _In_reads_(NumRects) const D3D12_RECT *pRects);
19409
19410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
19411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
19412 ID3D12GraphicsCommandList4 * This,
19413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19415 _In_ ID3D12Resource *pResource,
19416 _In_ const UINT Values[ 4 ],
19417 _In_ UINT NumRects,
19418 _In_reads_(NumRects) const D3D12_RECT *pRects);
19419
19420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
19421 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
19422 ID3D12GraphicsCommandList4 * This,
19423 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19424 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19425 _In_ ID3D12Resource *pResource,
19426 _In_ const FLOAT Values[ 4 ],
19427 _In_ UINT NumRects,
19428 _In_reads_(NumRects) const D3D12_RECT *pRects);
19429
19430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
19431 void ( STDMETHODCALLTYPE *DiscardResource )(
19432 ID3D12GraphicsCommandList4 * This,
19433 _In_ ID3D12Resource *pResource,
19434 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
19435
19436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
19437 void ( STDMETHODCALLTYPE *BeginQuery )(
19438 ID3D12GraphicsCommandList4 * This,
19439 _In_ ID3D12QueryHeap *pQueryHeap,
19440 _In_ D3D12_QUERY_TYPE Type,
19441 _In_ UINT Index);
19442
19443 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
19444 void ( STDMETHODCALLTYPE *EndQuery )(
19445 ID3D12GraphicsCommandList4 * This,
19446 _In_ ID3D12QueryHeap *pQueryHeap,
19447 _In_ D3D12_QUERY_TYPE Type,
19448 _In_ UINT Index);
19449
19450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
19451 void ( STDMETHODCALLTYPE *ResolveQueryData )(
19452 ID3D12GraphicsCommandList4 * This,
19453 _In_ ID3D12QueryHeap *pQueryHeap,
19454 _In_ D3D12_QUERY_TYPE Type,
19455 _In_ UINT StartIndex,
19456 _In_ UINT NumQueries,
19457 _In_ ID3D12Resource *pDestinationBuffer,
19458 _In_ UINT64 AlignedDestinationBufferOffset);
19459
19460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
19461 void ( STDMETHODCALLTYPE *SetPredication )(
19462 ID3D12GraphicsCommandList4 * This,
19463 _In_opt_ ID3D12Resource *pBuffer,
19464 _In_ UINT64 AlignedBufferOffset,
19465 _In_ D3D12_PREDICATION_OP Operation);
19466
19467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
19468 void ( STDMETHODCALLTYPE *SetMarker )(
19469 ID3D12GraphicsCommandList4 * This,
19470 UINT Metadata,
19471 _In_reads_bytes_opt_(Size) const void *pData,
19472 UINT Size);
19473
19474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
19475 void ( STDMETHODCALLTYPE *BeginEvent )(
19476 ID3D12GraphicsCommandList4 * This,
19477 UINT Metadata,
19478 _In_reads_bytes_opt_(Size) const void *pData,
19479 UINT Size);
19480
19481 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
19482 void ( STDMETHODCALLTYPE *EndEvent )(
19483 ID3D12GraphicsCommandList4 * This);
19484
19485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
19486 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
19487 ID3D12GraphicsCommandList4 * This,
19488 _In_ ID3D12CommandSignature *pCommandSignature,
19489 _In_ UINT MaxCommandCount,
19490 _In_ ID3D12Resource *pArgumentBuffer,
19491 _In_ UINT64 ArgumentBufferOffset,
19492 _In_opt_ ID3D12Resource *pCountBuffer,
19493 _In_ UINT64 CountBufferOffset);
19494
19495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
19496 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
19497 ID3D12GraphicsCommandList4 * This,
19498 _In_ ID3D12Resource *pDstBuffer,
19499 UINT64 DstOffset,
19500 _In_ ID3D12Resource *pSrcBuffer,
19501 UINT64 SrcOffset,
19502 UINT Dependencies,
19503 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19504 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19505
19506 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
19507 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
19508 ID3D12GraphicsCommandList4 * This,
19509 _In_ ID3D12Resource *pDstBuffer,
19510 UINT64 DstOffset,
19511 _In_ ID3D12Resource *pSrcBuffer,
19512 UINT64 SrcOffset,
19513 UINT Dependencies,
19514 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19515 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19516
19517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
19518 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
19519 ID3D12GraphicsCommandList4 * This,
19520 _In_ FLOAT Min,
19521 _In_ FLOAT Max);
19522
19523 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
19524 void ( STDMETHODCALLTYPE *SetSamplePositions )(
19525 ID3D12GraphicsCommandList4 * This,
19526 _In_ UINT NumSamplesPerPixel,
19527 _In_ UINT NumPixels,
19528 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
19529
19530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
19531 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
19532 ID3D12GraphicsCommandList4 * This,
19533 _In_ ID3D12Resource *pDstResource,
19534 _In_ UINT DstSubresource,
19535 _In_ UINT DstX,
19536 _In_ UINT DstY,
19537 _In_ ID3D12Resource *pSrcResource,
19538 _In_ UINT SrcSubresource,
19539 _In_opt_ D3D12_RECT *pSrcRect,
19540 _In_ DXGI_FORMAT Format,
19541 _In_ D3D12_RESOLVE_MODE ResolveMode);
19542
19543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
19544 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
19545 ID3D12GraphicsCommandList4 * This,
19546 _In_ UINT Mask);
19547
19548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
19549 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
19550 ID3D12GraphicsCommandList4 * This,
19551 UINT Count,
19552 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
19553 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
19554
19555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
19556 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
19557 ID3D12GraphicsCommandList4 * This,
19558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
19559
19560 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
19561 void ( STDMETHODCALLTYPE *BeginRenderPass )(
19562 ID3D12GraphicsCommandList4 * This,
19563 _In_ UINT NumRenderTargets,
19564 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19565 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19566 D3D12_RENDER_PASS_FLAGS Flags);
19567
19568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
19569 void ( STDMETHODCALLTYPE *EndRenderPass )(
19570 ID3D12GraphicsCommandList4 * This);
19571
19572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
19573 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
19574 ID3D12GraphicsCommandList4 * This,
19575 _In_ ID3D12MetaCommand *pMetaCommand,
19576 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19577 _In_ SIZE_T InitializationParametersDataSizeInBytes);
19578
19579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
19580 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
19581 ID3D12GraphicsCommandList4 * This,
19582 _In_ ID3D12MetaCommand *pMetaCommand,
19583 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19584 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
19585
19586 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
19587 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
19588 ID3D12GraphicsCommandList4 * This,
19589 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19590 _In_ UINT NumPostbuildInfoDescs,
19591 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
19592
19593 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
19594 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
19595 ID3D12GraphicsCommandList4 * This,
19596 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19597 _In_ UINT NumSourceAccelerationStructures,
19598 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
19599
19600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
19601 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
19602 ID3D12GraphicsCommandList4 * This,
19603 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19604 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19605 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
19606
19607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
19608 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
19609 ID3D12GraphicsCommandList4 * This,
19610 _In_ ID3D12StateObject *pStateObject);
19611
19612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
19613 void ( STDMETHODCALLTYPE *DispatchRays )(
19614 ID3D12GraphicsCommandList4 * This,
19615 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
19616
19617 END_INTERFACE
19618 } ID3D12GraphicsCommandList4Vtbl;
19619
19620 interface ID3D12GraphicsCommandList4
19621 {
19622 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
19623 };
19624
19625
19626
19627#ifdef COBJMACROS
19628
19629
19630#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
19631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19632
19633#define ID3D12GraphicsCommandList4_AddRef(This) \
19634 ( (This)->lpVtbl -> AddRef(This) )
19635
19636#define ID3D12GraphicsCommandList4_Release(This) \
19637 ( (This)->lpVtbl -> Release(This) )
19638
19639
19640#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
19641 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19642
19643#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
19644 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19645
19646#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
19647 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19648
19649#define ID3D12GraphicsCommandList4_SetName(This,Name) \
19650 ( (This)->lpVtbl -> SetName(This,Name) )
19651
19652
19653#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
19654 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
19655
19656
19657#define ID3D12GraphicsCommandList4_GetType(This) \
19658 ( (This)->lpVtbl -> GetType(This) )
19659
19660
19661#define ID3D12GraphicsCommandList4_Close(This) \
19662 ( (This)->lpVtbl -> Close(This) )
19663
19664#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
19665 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
19666
19667#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
19668 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
19669
19670#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
19671 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
19672
19673#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
19674 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
19675
19676#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
19677 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
19678
19679#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
19680 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
19681
19682#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
19683 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
19684
19685#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
19686 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
19687
19688#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
19689 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
19690
19691#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
19692 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
19693
19694#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
19695 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
19696
19697#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
19698 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
19699
19700#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
19701 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
19702
19703#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
19704 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
19705
19706#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
19707 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
19708
19709#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
19710 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
19711
19712#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
19713 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
19714
19715#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
19716 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
19717
19718#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
19719 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
19720
19721#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
19722 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
19723
19724#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
19725 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
19726
19727#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19728 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19729
19730#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19731 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19732
19733#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19734 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19735
19736#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19737 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19738
19739#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19740 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19741
19742#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19743 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19744
19745#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19746 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19747
19748#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19749 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19750
19751#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19752 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19753
19754#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19755 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19756
19757#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19758 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19759
19760#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19761 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19762
19763#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
19764 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
19765
19766#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
19767 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
19768
19769#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
19770 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
19771
19772#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
19773 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
19774
19775#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
19776 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
19777
19778#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
19779 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
19780
19781#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19782 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19783
19784#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19785 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19786
19787#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
19788 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
19789
19790#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
19791 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
19792
19793#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
19794 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
19795
19796#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
19797 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
19798
19799#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
19800 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
19801
19802#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
19803 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
19804
19805#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
19806 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
19807
19808#define ID3D12GraphicsCommandList4_EndEvent(This) \
19809 ( (This)->lpVtbl -> EndEvent(This) )
19810
19811#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
19812 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
19813
19814
19815#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19816 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19817
19818#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19819 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19820
19821#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
19822 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
19823
19824#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
19825 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
19826
19827#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
19828 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
19829
19830#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
19831 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
19832
19833
19834#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
19835 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
19836
19837
19838#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
19839 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
19840
19841
19842#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
19843 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
19844
19845#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
19846 ( (This)->lpVtbl -> EndRenderPass(This) )
19847
19848#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
19849 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
19850
19851#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
19852 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
19853
19854#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
19855 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
19856
19857#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
19858 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
19859
19860#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
19861 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
19862
19863#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
19864 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
19865
19866#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
19867 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
19868
19869#endif /* COBJMACROS */
19870
19871
19872#endif /* C style interface */
19873
19874
19875
19876
19877#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
19878
19879
19880/* interface __MIDL_itf_d3d12_0000_0050 */
19881/* [local] */
19882
19883typedef
19884enum D3D12_SHADER_CACHE_MODE
19885 {
19886 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
19887 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
19888 } D3D12_SHADER_CACHE_MODE;
19889
19890typedef
19891enum D3D12_SHADER_CACHE_FLAGS
19892 {
19893 D3D12_SHADER_CACHE_FLAG_NONE = 0,
19894 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
19895 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
19896 } D3D12_SHADER_CACHE_FLAGS;
19897
19898DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );
19899typedef struct D3D12_SHADER_CACHE_SESSION_DESC
19900 {
19901 GUID Identifier;
19902 D3D12_SHADER_CACHE_MODE Mode;
19903 D3D12_SHADER_CACHE_FLAGS Flags;
19904 UINT MaximumInMemoryCacheSizeBytes;
19905 UINT MaximumInMemoryCacheEntries;
19906 UINT MaximumValueFileSizeBytes;
19907 UINT64 Version;
19908 } D3D12_SHADER_CACHE_SESSION_DESC;
19909
19910
19911
19912extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_c_ifspec;
19913extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_s_ifspec;
19914
19915#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19916#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19917
19918/* interface ID3D12ShaderCacheSession */
19919/* [unique][local][object][uuid] */
19920
19921
19922EXTERN_C const IID IID_ID3D12ShaderCacheSession;
19923
19924#if defined(__cplusplus) && !defined(CINTERFACE)
19925
19926 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
19927 ID3D12ShaderCacheSession : public ID3D12DeviceChild
19928 {
19929 public:
19930 virtual HRESULT STDMETHODCALLTYPE FindValue(
19931 /* [annotation][in] */
19932 _In_reads_bytes_(KeySize) const void *pKey,
19933 UINT KeySize,
19934 /* [annotation][out] */
19935 _Out_writes_bytes_(*pValueSize) void *pValue,
19936 _Inout_ UINT *pValueSize) = 0;
19937
19938 virtual HRESULT STDMETHODCALLTYPE StoreValue(
19939 /* [annotation][in] */
19940 _In_reads_bytes_(KeySize) const void *pKey,
19941 UINT KeySize,
19942 /* [annotation][in] */
19943 _In_reads_bytes_(ValueSize) const void *pValue,
19944 UINT ValueSize) = 0;
19945
19946 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
19947
19948 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
19949
19950 };
19951
19952
19953#else /* C style interface */
19954
19955 typedef struct ID3D12ShaderCacheSessionVtbl
19956 {
19957 BEGIN_INTERFACE
19958
19959 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19960 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19961 ID3D12ShaderCacheSession * This,
19962 REFIID riid,
19963 _COM_Outptr_ void **ppvObject);
19964
19965 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19966 ULONG ( STDMETHODCALLTYPE *AddRef )(
19967 ID3D12ShaderCacheSession * This);
19968
19969 DECLSPEC_XFGVIRT(IUnknown, Release)
19970 ULONG ( STDMETHODCALLTYPE *Release )(
19971 ID3D12ShaderCacheSession * This);
19972
19973 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19974 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19975 ID3D12ShaderCacheSession * This,
19976 _In_ REFGUID guid,
19977 _Inout_ UINT *pDataSize,
19978 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19979
19980 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19981 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19982 ID3D12ShaderCacheSession * This,
19983 _In_ REFGUID guid,
19984 _In_ UINT DataSize,
19985 _In_reads_bytes_opt_( DataSize ) const void *pData);
19986
19987 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19988 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19989 ID3D12ShaderCacheSession * This,
19990 _In_ REFGUID guid,
19991 _In_opt_ const IUnknown *pData);
19992
19993 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19994 HRESULT ( STDMETHODCALLTYPE *SetName )(
19995 ID3D12ShaderCacheSession * This,
19996 _In_z_ LPCWSTR Name);
19997
19998 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19999 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20000 ID3D12ShaderCacheSession * This,
20001 REFIID riid,
20002 _COM_Outptr_opt_ void **ppvDevice);
20003
20004 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
20005 HRESULT ( STDMETHODCALLTYPE *FindValue )(
20006 ID3D12ShaderCacheSession * This,
20007 /* [annotation][in] */
20008 _In_reads_bytes_(KeySize) const void *pKey,
20009 UINT KeySize,
20010 /* [annotation][out] */
20011 _Out_writes_bytes_(*pValueSize) void *pValue,
20012 _Inout_ UINT *pValueSize);
20013
20014 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
20015 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
20016 ID3D12ShaderCacheSession * This,
20017 /* [annotation][in] */
20018 _In_reads_bytes_(KeySize) const void *pKey,
20019 UINT KeySize,
20020 /* [annotation][in] */
20021 _In_reads_bytes_(ValueSize) const void *pValue,
20022 UINT ValueSize);
20023
20024 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
20025 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
20026 ID3D12ShaderCacheSession * This);
20027
20028 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
20029 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
20030 ID3D12ShaderCacheSession * This,
20031 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
20032
20033 END_INTERFACE
20034 } ID3D12ShaderCacheSessionVtbl;
20035
20036 interface ID3D12ShaderCacheSession
20037 {
20038 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
20039 };
20040
20041
20042
20043#ifdef COBJMACROS
20044
20045
20046#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
20047 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20048
20049#define ID3D12ShaderCacheSession_AddRef(This) \
20050 ( (This)->lpVtbl -> AddRef(This) )
20051
20052#define ID3D12ShaderCacheSession_Release(This) \
20053 ( (This)->lpVtbl -> Release(This) )
20054
20055
20056#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
20057 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20058
20059#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
20060 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20061
20062#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
20063 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20064
20065#define ID3D12ShaderCacheSession_SetName(This,Name) \
20066 ( (This)->lpVtbl -> SetName(This,Name) )
20067
20068
20069#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
20070 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20071
20072
20073#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
20074 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
20075
20076#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
20077 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
20078
20079#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
20080 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
20081
20082#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
20083 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20084
20085#endif /* COBJMACROS */
20086
20087
20088#endif /* C style interface */
20089
20090
20091
20092
20093#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
20094
20095
20096/* interface __MIDL_itf_d3d12_0000_0051 */
20097/* [local] */
20098
20099typedef
20100enum D3D12_SHADER_CACHE_KIND_FLAGS
20101 {
20102 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
20103 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
20104 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
20105 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
20106 } D3D12_SHADER_CACHE_KIND_FLAGS;
20107
20108DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );
20109typedef
20110enum D3D12_SHADER_CACHE_CONTROL_FLAGS
20111 {
20112 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
20113 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
20114 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
20115 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
20116
20117DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );
20118
20119
20120extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_c_ifspec;
20121extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_s_ifspec;
20122
20123#ifndef __ID3D12Device9_INTERFACE_DEFINED__
20124#define __ID3D12Device9_INTERFACE_DEFINED__
20125
20126/* interface ID3D12Device9 */
20127/* [unique][local][object][uuid] */
20128
20129
20130EXTERN_C const IID IID_ID3D12Device9;
20131
20132#if defined(__cplusplus) && !defined(CINTERFACE)
20133
20134 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
20135 ID3D12Device9 : public ID3D12Device8
20136 {
20137 public:
20138 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
20139 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20140 REFIID riid,
20141 _COM_Outptr_opt_ void **ppvSession) = 0;
20142
20143 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
20144 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20145 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
20146
20147 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
20148 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20149 REFIID CreatorID,
20150 REFIID riid,
20151 _COM_Outptr_ void **ppCommandQueue) = 0;
20152
20153 };
20154
20155
20156#else /* C style interface */
20157
20158 typedef struct ID3D12Device9Vtbl
20159 {
20160 BEGIN_INTERFACE
20161
20162 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20163 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20164 ID3D12Device9 * This,
20165 REFIID riid,
20166 _COM_Outptr_ void **ppvObject);
20167
20168 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20169 ULONG ( STDMETHODCALLTYPE *AddRef )(
20170 ID3D12Device9 * This);
20171
20172 DECLSPEC_XFGVIRT(IUnknown, Release)
20173 ULONG ( STDMETHODCALLTYPE *Release )(
20174 ID3D12Device9 * This);
20175
20176 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20177 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20178 ID3D12Device9 * This,
20179 _In_ REFGUID guid,
20180 _Inout_ UINT *pDataSize,
20181 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20182
20183 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20184 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20185 ID3D12Device9 * This,
20186 _In_ REFGUID guid,
20187 _In_ UINT DataSize,
20188 _In_reads_bytes_opt_( DataSize ) const void *pData);
20189
20190 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20191 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20192 ID3D12Device9 * This,
20193 _In_ REFGUID guid,
20194 _In_opt_ const IUnknown *pData);
20195
20196 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20197 HRESULT ( STDMETHODCALLTYPE *SetName )(
20198 ID3D12Device9 * This,
20199 _In_z_ LPCWSTR Name);
20200
20201 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
20202 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
20203 ID3D12Device9 * This);
20204
20205 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
20206 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
20207 ID3D12Device9 * This,
20208 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20209 REFIID riid,
20210 _COM_Outptr_ void **ppCommandQueue);
20211
20212 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
20213 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
20214 ID3D12Device9 * This,
20215 _In_ D3D12_COMMAND_LIST_TYPE type,
20216 REFIID riid,
20217 _COM_Outptr_ void **ppCommandAllocator);
20218
20219 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
20220 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
20221 ID3D12Device9 * This,
20222 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
20223 REFIID riid,
20224 _COM_Outptr_ void **ppPipelineState);
20225
20226 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
20227 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
20228 ID3D12Device9 * This,
20229 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
20230 REFIID riid,
20231 _COM_Outptr_ void **ppPipelineState);
20232
20233 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
20234 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
20235 ID3D12Device9 * This,
20236 _In_ UINT nodeMask,
20237 _In_ D3D12_COMMAND_LIST_TYPE type,
20238 _In_ ID3D12CommandAllocator *pCommandAllocator,
20239 _In_opt_ ID3D12PipelineState *pInitialState,
20240 REFIID riid,
20241 _COM_Outptr_ void **ppCommandList);
20242
20243 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
20244 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
20245 ID3D12Device9 * This,
20246 D3D12_FEATURE Feature,
20247 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
20248 UINT FeatureSupportDataSize);
20249
20250 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
20251 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
20252 ID3D12Device9 * This,
20253 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
20254 REFIID riid,
20255 _COM_Outptr_ void **ppvHeap);
20256
20257 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
20258 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
20259 ID3D12Device9 * This,
20260 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
20261
20262 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
20263 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
20264 ID3D12Device9 * This,
20265 _In_ UINT nodeMask,
20266 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
20267 _In_ SIZE_T blobLengthInBytes,
20268 REFIID riid,
20269 _COM_Outptr_ void **ppvRootSignature);
20270
20271 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
20272 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
20273 ID3D12Device9 * This,
20274 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
20275 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20276
20277 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
20278 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
20279 ID3D12Device9 * This,
20280 _In_opt_ ID3D12Resource *pResource,
20281 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
20282 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20283
20284 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
20285 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
20286 ID3D12Device9 * This,
20287 _In_opt_ ID3D12Resource *pResource,
20288 _In_opt_ ID3D12Resource *pCounterResource,
20289 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
20290 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20291
20292 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
20293 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
20294 ID3D12Device9 * This,
20295 _In_opt_ ID3D12Resource *pResource,
20296 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
20297 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20298
20299 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
20300 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
20301 ID3D12Device9 * This,
20302 _In_opt_ ID3D12Resource *pResource,
20303 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
20304 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20305
20306 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
20307 void ( STDMETHODCALLTYPE *CreateSampler )(
20308 ID3D12Device9 * This,
20309 _In_ const D3D12_SAMPLER_DESC *pDesc,
20310 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20311
20312 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
20313 void ( STDMETHODCALLTYPE *CopyDescriptors )(
20314 ID3D12Device9 * This,
20315 _In_ UINT NumDestDescriptorRanges,
20316 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
20317 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
20318 _In_ UINT NumSrcDescriptorRanges,
20319 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
20320 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
20321 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20322
20323 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
20324 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
20325 ID3D12Device9 * This,
20326 _In_ UINT NumDescriptors,
20327 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
20328 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
20329 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20330
20331 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
20332 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
20333 ID3D12Device9 * This,
20334 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20335 _In_ UINT visibleMask,
20336 _In_ UINT numResourceDescs,
20337 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
20338
20339 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
20340 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
20341 ID3D12Device9 * This,
20342 D3D12_HEAP_PROPERTIES * RetVal,
20343 _In_ UINT nodeMask,
20344 D3D12_HEAP_TYPE heapType);
20345
20346 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
20347 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
20348 ID3D12Device9 * This,
20349 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20350 D3D12_HEAP_FLAGS HeapFlags,
20351 _In_ const D3D12_RESOURCE_DESC *pDesc,
20352 D3D12_RESOURCE_STATES InitialResourceState,
20353 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20354 REFIID riidResource,
20355 _COM_Outptr_opt_ void **ppvResource);
20356
20357 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
20358 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
20359 ID3D12Device9 * This,
20360 _In_ const D3D12_HEAP_DESC *pDesc,
20361 REFIID riid,
20362 _COM_Outptr_opt_ void **ppvHeap);
20363
20364 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
20365 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
20366 ID3D12Device9 * This,
20367 _In_ ID3D12Heap *pHeap,
20368 UINT64 HeapOffset,
20369 _In_ const D3D12_RESOURCE_DESC *pDesc,
20370 D3D12_RESOURCE_STATES InitialState,
20371 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20372 REFIID riid,
20373 _COM_Outptr_opt_ void **ppvResource);
20374
20375 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
20376 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
20377 ID3D12Device9 * This,
20378 _In_ const D3D12_RESOURCE_DESC *pDesc,
20379 D3D12_RESOURCE_STATES InitialState,
20380 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20381 REFIID riid,
20382 _COM_Outptr_opt_ void **ppvResource);
20383
20384 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
20385 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
20386 ID3D12Device9 * This,
20387 _In_ ID3D12DeviceChild *pObject,
20388 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
20389 DWORD Access,
20390 _In_opt_ LPCWSTR Name,
20391 _Out_ HANDLE *pHandle);
20392
20393 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
20394 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
20395 ID3D12Device9 * This,
20396 _In_ HANDLE NTHandle,
20397 REFIID riid,
20398 _COM_Outptr_opt_ void **ppvObj);
20399
20400 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
20401 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
20402 ID3D12Device9 * This,
20403 _In_ LPCWSTR Name,
20404 DWORD Access,
20405 /* [annotation][out] */
20406 _Out_ HANDLE *pNTHandle);
20407
20408 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
20409 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
20410 ID3D12Device9 * This,
20411 UINT NumObjects,
20412 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20413
20414 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
20415 HRESULT ( STDMETHODCALLTYPE *Evict )(
20416 ID3D12Device9 * This,
20417 UINT NumObjects,
20418 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20419
20420 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
20421 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
20422 ID3D12Device9 * This,
20423 UINT64 InitialValue,
20424 D3D12_FENCE_FLAGS Flags,
20425 REFIID riid,
20426 _COM_Outptr_ void **ppFence);
20427
20428 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
20429 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
20430 ID3D12Device9 * This);
20431
20432 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
20433 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
20434 ID3D12Device9 * This,
20435 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
20436 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20437 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20438 UINT64 BaseOffset,
20439 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20440 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20441 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20442 _Out_opt_ UINT64 *pTotalBytes);
20443
20444 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
20445 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
20446 ID3D12Device9 * This,
20447 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
20448 REFIID riid,
20449 _COM_Outptr_opt_ void **ppvHeap);
20450
20451 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
20452 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
20453 ID3D12Device9 * This,
20454 BOOL Enable);
20455
20456 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
20457 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
20458 ID3D12Device9 * This,
20459 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
20460 _In_opt_ ID3D12RootSignature *pRootSignature,
20461 REFIID riid,
20462 _COM_Outptr_opt_ void **ppvCommandSignature);
20463
20464 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
20465 void ( STDMETHODCALLTYPE *GetResourceTiling )(
20466 ID3D12Device9 * This,
20467 _In_ ID3D12Resource *pTiledResource,
20468 _Out_opt_ UINT *pNumTilesForEntireResource,
20469 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
20470 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
20471 _Inout_opt_ UINT *pNumSubresourceTilings,
20472 _In_ UINT FirstSubresourceTilingToGet,
20473 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
20474
20475 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
20476 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
20477 ID3D12Device9 * This,
20478 LUID * RetVal);
20479
20480 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
20481 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
20482 ID3D12Device9 * This,
20483 _In_reads_(BlobLength) const void *pLibraryBlob,
20484 SIZE_T BlobLength,
20485 REFIID riid,
20486 _COM_Outptr_ void **ppPipelineLibrary);
20487
20488 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
20489 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
20490 ID3D12Device9 * This,
20491 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
20492 _In_reads_(NumFences) const UINT64 *pFenceValues,
20493 UINT NumFences,
20494 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
20495 HANDLE hEvent);
20496
20497 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
20498 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
20499 ID3D12Device9 * This,
20500 UINT NumObjects,
20501 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20502 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
20503
20504 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
20505 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
20506 ID3D12Device9 * This,
20507 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
20508 REFIID riid,
20509 _COM_Outptr_ void **ppPipelineState);
20510
20511 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
20512 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
20513 ID3D12Device9 * This,
20514 _In_ const void *pAddress,
20515 REFIID riid,
20516 _COM_Outptr_ void **ppvHeap);
20517
20518 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
20519 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
20520 ID3D12Device9 * This,
20521 _In_ HANDLE hFileMapping,
20522 REFIID riid,
20523 _COM_Outptr_ void **ppvHeap);
20524
20525 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
20526 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
20527 ID3D12Device9 * This,
20528 D3D12_RESIDENCY_FLAGS Flags,
20529 UINT NumObjects,
20530 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20531 _In_ ID3D12Fence *pFenceToSignal,
20532 UINT64 FenceValueToSignal);
20533
20534 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
20535 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
20536 ID3D12Device9 * This,
20537 _In_ UINT nodeMask,
20538 _In_ D3D12_COMMAND_LIST_TYPE type,
20539 _In_ D3D12_COMMAND_LIST_FLAGS flags,
20540 REFIID riid,
20541 _COM_Outptr_ void **ppCommandList);
20542
20543 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
20544 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
20545 ID3D12Device9 * This,
20546 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
20547 _In_ REFIID riid,
20548 _COM_Outptr_ void **ppSession);
20549
20550 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
20551 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
20552 ID3D12Device9 * This,
20553 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20554 D3D12_HEAP_FLAGS HeapFlags,
20555 _In_ const D3D12_RESOURCE_DESC *pDesc,
20556 D3D12_RESOURCE_STATES InitialResourceState,
20557 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20559 REFIID riidResource,
20560 _COM_Outptr_opt_ void **ppvResource);
20561
20562 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
20563 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
20564 ID3D12Device9 * This,
20565 _In_ const D3D12_HEAP_DESC *pDesc,
20566 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20567 REFIID riid,
20568 _COM_Outptr_opt_ void **ppvHeap);
20569
20570 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
20571 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
20572 ID3D12Device9 * This,
20573 _In_ const D3D12_RESOURCE_DESC *pDesc,
20574 D3D12_RESOURCE_STATES InitialState,
20575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20577 REFIID riid,
20578 _COM_Outptr_opt_ void **ppvResource);
20579
20580 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
20581 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
20582 ID3D12Device9 * This,
20583 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20584 UINT visibleMask,
20585 UINT numResourceDescs,
20586 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
20587 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20588
20589 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
20590 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
20591 ID3D12Device9 * This,
20592 _In_ ID3D12LifetimeOwner *pOwner,
20593 REFIID riid,
20594 _COM_Outptr_ void **ppvTracker);
20595
20596 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
20597 void ( STDMETHODCALLTYPE *RemoveDevice )(
20598 ID3D12Device9 * This);
20599
20600 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
20601 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
20602 ID3D12Device9 * This,
20603 _Inout_ UINT *pNumMetaCommands,
20604 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
20605
20606 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
20607 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
20608 ID3D12Device9 * This,
20609 _In_ REFGUID CommandId,
20610 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
20611 _Out_opt_ UINT *pTotalStructureSizeInBytes,
20612 _Inout_ UINT *pParameterCount,
20613 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
20614
20615 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
20616 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
20617 ID3D12Device9 * This,
20618 _In_ REFGUID CommandId,
20619 _In_ UINT NodeMask,
20620 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
20621 _In_ SIZE_T CreationParametersDataSizeInBytes,
20622 REFIID riid,
20623 _COM_Outptr_ void **ppMetaCommand);
20624
20625 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
20626 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
20627 ID3D12Device9 * This,
20628 const D3D12_STATE_OBJECT_DESC *pDesc,
20629 REFIID riid,
20630 _COM_Outptr_ void **ppStateObject);
20631
20632 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
20633 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
20634 ID3D12Device9 * This,
20635 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
20636 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
20637
20638 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
20639 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
20640 ID3D12Device9 * This,
20641 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
20642 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
20643
20644 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
20645 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
20646 ID3D12Device9 * This,
20647 D3D12_BACKGROUND_PROCESSING_MODE Mode,
20648 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
20649 _In_opt_ HANDLE hEventToSignalUponCompletion,
20650 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
20651
20652 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
20653 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
20654 ID3D12Device9 * This,
20655 const D3D12_STATE_OBJECT_DESC *pAddition,
20656 ID3D12StateObject *pStateObjectToGrowFrom,
20657 REFIID riid,
20658 _COM_Outptr_ void **ppNewStateObject);
20659
20660 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
20661 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
20662 ID3D12Device9 * This,
20663 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
20664 _In_ REFIID riid,
20665 _COM_Outptr_ void **ppSession);
20666
20667 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
20668 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
20669 ID3D12Device9 * This,
20670 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20671 UINT visibleMask,
20672 UINT numResourceDescs,
20673 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
20674 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20675
20676 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
20677 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
20678 ID3D12Device9 * This,
20679 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20680 D3D12_HEAP_FLAGS HeapFlags,
20681 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20682 D3D12_RESOURCE_STATES InitialResourceState,
20683 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20684 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20685 REFIID riidResource,
20686 _COM_Outptr_opt_ void **ppvResource);
20687
20688 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20689 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20690 ID3D12Device9 * This,
20691 _In_ ID3D12Heap *pHeap,
20692 UINT64 HeapOffset,
20693 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20694 D3D12_RESOURCE_STATES InitialState,
20695 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20696 REFIID riid,
20697 _COM_Outptr_opt_ void **ppvResource);
20698
20699 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20700 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20701 ID3D12Device9 * This,
20702 _In_opt_ ID3D12Resource *pTargetedResource,
20703 _In_opt_ ID3D12Resource *pFeedbackResource,
20704 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20705
20706 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20707 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20708 ID3D12Device9 * This,
20709 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20710 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20711 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20712 UINT64 BaseOffset,
20713 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20714 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20715 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20716 _Out_opt_ UINT64 *pTotalBytes);
20717
20718 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
20719 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
20720 ID3D12Device9 * This,
20721 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20722 REFIID riid,
20723 _COM_Outptr_opt_ void **ppvSession);
20724
20725 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
20726 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
20727 ID3D12Device9 * This,
20728 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20729 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
20730
20731 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
20732 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
20733 ID3D12Device9 * This,
20734 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20735 REFIID CreatorID,
20736 REFIID riid,
20737 _COM_Outptr_ void **ppCommandQueue);
20738
20739 END_INTERFACE
20740 } ID3D12Device9Vtbl;
20741
20742 interface ID3D12Device9
20743 {
20744 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
20745 };
20746
20747
20748
20749#ifdef COBJMACROS
20750
20751
20752#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
20753 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20754
20755#define ID3D12Device9_AddRef(This) \
20756 ( (This)->lpVtbl -> AddRef(This) )
20757
20758#define ID3D12Device9_Release(This) \
20759 ( (This)->lpVtbl -> Release(This) )
20760
20761
20762#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
20763 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20764
20765#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
20766 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20767
20768#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
20769 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20770
20771#define ID3D12Device9_SetName(This,Name) \
20772 ( (This)->lpVtbl -> SetName(This,Name) )
20773
20774
20775#define ID3D12Device9_GetNodeCount(This) \
20776 ( (This)->lpVtbl -> GetNodeCount(This) )
20777
20778#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20779 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20780
20781#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20782 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20783
20784#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20785 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20786
20787#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20788 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20789
20790#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20791 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20792
20793#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20794 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20795
20796#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20797 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20798
20799#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20800 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20801
20802#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20803 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20804
20805#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20806 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20807
20808#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20809 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20810
20811#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20812 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20813
20814#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20815 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20816
20817#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20818 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20819
20820#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
20821 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20822
20823#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20824 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20825
20826#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20827 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20828
20829#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20830 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20831
20832#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20833 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20834
20835#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20836 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20837
20838#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
20839 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20840
20841#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20842 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20843
20844#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20845 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20846
20847#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20848 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20849
20850#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20851 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20852
20853#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20854 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20855
20856#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
20857 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20858
20859#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
20860 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20861
20862#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20863 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20864
20865#define ID3D12Device9_GetDeviceRemovedReason(This) \
20866 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20867
20868#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20869 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20870
20871#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20872 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20873
20874#define ID3D12Device9_SetStablePowerState(This,Enable) \
20875 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20876
20877#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20878 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20879
20880#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20881 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20882
20883#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
20884 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20885
20886
20887#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20888 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20889
20890#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20891 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20892
20893#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20894 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20895
20896
20897#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20898 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20899
20900
20901#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20902 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20903
20904#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20905 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20906
20907#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20908 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20909
20910
20911#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20912 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20913
20914#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20915 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20916
20917#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20918 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20919
20920#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20921 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20922
20923#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20924 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20925
20926#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20927 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20928
20929
20930#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20931 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20932
20933#define ID3D12Device9_RemoveDevice(This) \
20934 ( (This)->lpVtbl -> RemoveDevice(This) )
20935
20936#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20937 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20938
20939#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20940 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20941
20942#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20943 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20944
20945#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
20946 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20947
20948#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20949 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20950
20951#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20952 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20953
20954
20955#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20956 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20957
20958
20959#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20960 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20961
20962#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20963 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20964
20965
20966#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20967 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20968
20969#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20970 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20971
20972#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20973 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20974
20975#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20976 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20977
20978#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20979 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20980
20981
20982#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
20983 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
20984
20985#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
20986 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
20987
20988#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
20989 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
20990
20991#endif /* COBJMACROS */
20992
20993
20994#endif /* C style interface */
20995
20996
20997
20998
20999#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
21000
21001
21002#ifndef __ID3D12Tools_INTERFACE_DEFINED__
21003#define __ID3D12Tools_INTERFACE_DEFINED__
21004
21005/* interface ID3D12Tools */
21006/* [unique][local][object][uuid] */
21007
21008
21009EXTERN_C const IID IID_ID3D12Tools;
21010
21011#if defined(__cplusplus) && !defined(CINTERFACE)
21012
21013 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
21014 ID3D12Tools : public IUnknown
21015 {
21016 public:
21017 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
21018 BOOL bEnable) = 0;
21019
21020 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
21021
21022 };
21023
21024
21025#else /* C style interface */
21026
21027 typedef struct ID3D12ToolsVtbl
21028 {
21029 BEGIN_INTERFACE
21030
21031 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21032 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21033 ID3D12Tools * This,
21034 REFIID riid,
21035 _COM_Outptr_ void **ppvObject);
21036
21037 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21038 ULONG ( STDMETHODCALLTYPE *AddRef )(
21039 ID3D12Tools * This);
21040
21041 DECLSPEC_XFGVIRT(IUnknown, Release)
21042 ULONG ( STDMETHODCALLTYPE *Release )(
21043 ID3D12Tools * This);
21044
21045 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
21046 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
21047 ID3D12Tools * This,
21048 BOOL bEnable);
21049
21050 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
21051 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
21052 ID3D12Tools * This);
21053
21054 END_INTERFACE
21055 } ID3D12ToolsVtbl;
21056
21057 interface ID3D12Tools
21058 {
21059 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
21060 };
21061
21062
21063
21064#ifdef COBJMACROS
21065
21066
21067#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
21068 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21069
21070#define ID3D12Tools_AddRef(This) \
21071 ( (This)->lpVtbl -> AddRef(This) )
21072
21073#define ID3D12Tools_Release(This) \
21074 ( (This)->lpVtbl -> Release(This) )
21075
21076
21077#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
21078 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
21079
21080#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
21081 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
21082
21083#endif /* COBJMACROS */
21084
21085
21086#endif /* C style interface */
21087
21088
21089
21090
21091#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
21092
21093
21094/* interface __MIDL_itf_d3d12_0000_0053 */
21095/* [local] */
21096
21097typedef struct D3D12_SUBRESOURCE_DATA
21098 {
21099 const void *pData;
21100 LONG_PTR RowPitch;
21101 LONG_PTR SlicePitch;
21102 } D3D12_SUBRESOURCE_DATA;
21103
21104typedef struct D3D12_MEMCPY_DEST
21105 {
21106 void *pData;
21107 SIZE_T RowPitch;
21108 SIZE_T SlicePitch;
21109 } D3D12_MEMCPY_DEST;
21110
21111#if !defined( D3D12_IGNORE_SDK_LAYERS )
21112#include "d3d12sdklayers.h"
21113#endif
21114
21115///////////////////////////////////////////////////////////////////////////
21116// D3D12CreateDevice
21117// ------------------
21118//
21119// pAdapter
21120// If NULL, D3D12CreateDevice will choose the primary adapter.
21121// If non-NULL, D3D12CreateDevice will use the provided adapter.
21122// MinimumFeatureLevel
21123// The minimum feature level required for successful device creation.
21124// riid
21125// The interface IID of the device to be returned. Expected: ID3D12Device.
21126// ppDevice
21127// Pointer to returned interface. May be NULL.
21128//
21129// Return Values
21130// Any of those documented for
21131// CreateDXGIFactory1
21132// IDXGIFactory::EnumAdapters
21133// D3D12CreateDevice
21134//
21135///////////////////////////////////////////////////////////////////////////
21136typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
21137 D3D_FEATURE_LEVEL,
21138 _In_ REFIID, _COM_Outptr_opt_ void** );
21139
21140HRESULT WINAPI D3D12CreateDevice(
21141 _In_opt_ IUnknown* pAdapter,
21142 D3D_FEATURE_LEVEL MinimumFeatureLevel,
21143 _In_ REFIID riid, // Expected: ID3D12Device
21144 _COM_Outptr_opt_ void** ppDevice );
21145
21146
21147typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
21148
21149HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21150
21151// --------------------------------------------------------------------------------------------------------------------------------
21152// D3D12EnableExperimentalFeatures
21153//
21154// Pass in a list of feature GUIDs to be enabled together.
21155//
21156// If a particular feature requires some configuration information on enablement, it will have
21157// a configuration struct that can be passed alongside the GUID.
21158//
21159// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
21160// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
21161// for manipulating the feature. This allows for control that might not cleanly be expressed by just
21162// the configuration struct that D3D12EnableExperimentalFeatures provides.
21163//
21164// If this method is called and a change to existing feature enablement is made,
21165// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
21166// singleton device for a process. Removing the devices when configuration changes prevents
21167// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
21168//
21169// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
21170// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
21171// in are known to be incompatible with each other, or other errors.
21172// Returns S_OK otherwise.
21173//
21174// --------------------------------------------------------------------------------------------------------------------------------
21175HRESULT WINAPI D3D12EnableExperimentalFeatures(
21176 UINT NumFeatures,
21177 _In_count_(NumFeatures) const IID* pIIDs,
21178 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
21179 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
21180
21181// --------------------------------------------------------------------------------------------------------------------------------
21182// Experimental Feature: D3D12ExperimentalShaderModels
21183//
21184// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
21185// meaning shader models that haven't been finalized for use in retail.
21186//
21187// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
21188//
21189// --------------------------------------------------------------------------------------------------------------------------------
21190static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
21191 0x76f5573e,
21192 0xf13a,
21193 0x40f5,
21194 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
21195};
21196// --------------------------------------------------------------------------------------------------------------------------------
21197// Experimental Feature: D3D12TiledResourceTier4
21198//
21199// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
21200// meaning texture tile data-inheritance is allowed.
21201//
21202// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
21203//
21204// --------------------------------------------------------------------------------------------------------------------------------
21205static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
21206 0xc9c4725f,
21207 0xa81a,
21208 0x4f56,
21209 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
21210};
21211// --------------------------------------------------------------------------------------------------------------------------------
21212// Experimental Feature: D3D12MetaCommand
21213//
21214// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.
21215//
21216// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.
21217//
21218// --------------------------------------------------------------------------------------------------------------------------------
21219static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */
21220 0xc734c97e,
21221 0x8077,
21222 0x48c8,
21223 { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }
21224};
21225// --------------------------------------------------------------------------------------------------------------------------------
21226// D3D12GetInterface
21227//
21228// Retrieve Global D3D12 Interface.
21229//
21230
21231DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
21232DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
21233DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
21234DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
21235
21236typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
21237
21238HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21239
21240
21241
21242extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_c_ifspec;
21243extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_s_ifspec;
21244
21245#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21246#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21247
21248/* interface ID3D12SDKConfiguration */
21249/* [unique][local][object][uuid] */
21250
21251
21252EXTERN_C const IID IID_ID3D12SDKConfiguration;
21253
21254#if defined(__cplusplus) && !defined(CINTERFACE)
21255
21256 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
21257 ID3D12SDKConfiguration : public IUnknown
21258 {
21259 public:
21260 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
21261 UINT SDKVersion,
21262 _In_z_ LPCSTR SDKPath) = 0;
21263
21264 };
21265
21266
21267#else /* C style interface */
21268
21269 typedef struct ID3D12SDKConfigurationVtbl
21270 {
21271 BEGIN_INTERFACE
21272
21273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21275 ID3D12SDKConfiguration * This,
21276 REFIID riid,
21277 _COM_Outptr_ void **ppvObject);
21278
21279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21280 ULONG ( STDMETHODCALLTYPE *AddRef )(
21281 ID3D12SDKConfiguration * This);
21282
21283 DECLSPEC_XFGVIRT(IUnknown, Release)
21284 ULONG ( STDMETHODCALLTYPE *Release )(
21285 ID3D12SDKConfiguration * This);
21286
21287 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
21288 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
21289 ID3D12SDKConfiguration * This,
21290 UINT SDKVersion,
21291 _In_z_ LPCSTR SDKPath);
21292
21293 END_INTERFACE
21294 } ID3D12SDKConfigurationVtbl;
21295
21296 interface ID3D12SDKConfiguration
21297 {
21298 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
21299 };
21300
21301
21302
21303#ifdef COBJMACROS
21304
21305
21306#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
21307 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21308
21309#define ID3D12SDKConfiguration_AddRef(This) \
21310 ( (This)->lpVtbl -> AddRef(This) )
21311
21312#define ID3D12SDKConfiguration_Release(This) \
21313 ( (This)->lpVtbl -> Release(This) )
21314
21315
21316#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
21317 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
21318
21319#endif /* COBJMACROS */
21320
21321
21322#endif /* C style interface */
21323
21324
21325
21326
21327#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
21328
21329
21330/* interface __MIDL_itf_d3d12_0000_0054 */
21331/* [local] */
21332
21333typedef
21334enum D3D12_AXIS_SHADING_RATE
21335 {
21336 D3D12_AXIS_SHADING_RATE_1X = 0,
21337 D3D12_AXIS_SHADING_RATE_2X = 0x1,
21338 D3D12_AXIS_SHADING_RATE_4X = 0x2
21339 } D3D12_AXIS_SHADING_RATE;
21340
21341#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
21342#define D3D12_SHADING_RATE_VALID_MASK 3
21343#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
21344#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
21345#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
21346typedef
21347enum D3D12_SHADING_RATE
21348 {
21349 D3D12_SHADING_RATE_1X1 = 0,
21350 D3D12_SHADING_RATE_1X2 = 0x1,
21351 D3D12_SHADING_RATE_2X1 = 0x4,
21352 D3D12_SHADING_RATE_2X2 = 0x5,
21353 D3D12_SHADING_RATE_2X4 = 0x6,
21354 D3D12_SHADING_RATE_4X2 = 0x9,
21355 D3D12_SHADING_RATE_4X4 = 0xa
21356 } D3D12_SHADING_RATE;
21357
21358typedef
21359enum D3D12_SHADING_RATE_COMBINER
21360 {
21361 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
21362 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
21363 D3D12_SHADING_RATE_COMBINER_MIN = 2,
21364 D3D12_SHADING_RATE_COMBINER_MAX = 3,
21365 D3D12_SHADING_RATE_COMBINER_SUM = 4
21366 } D3D12_SHADING_RATE_COMBINER;
21367
21368
21369
21370extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21371extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21372
21373#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21374#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21375
21376/* interface ID3D12GraphicsCommandList5 */
21377/* [unique][local][object][uuid] */
21378
21379
21380EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
21381
21382#if defined(__cplusplus) && !defined(CINTERFACE)
21383
21384 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
21385 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
21386 {
21387 public:
21388 virtual void STDMETHODCALLTYPE RSSetShadingRate(
21389 _In_ D3D12_SHADING_RATE baseShadingRate,
21390 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
21391
21392 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
21393 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
21394
21395 };
21396
21397
21398#else /* C style interface */
21399
21400 typedef struct ID3D12GraphicsCommandList5Vtbl
21401 {
21402 BEGIN_INTERFACE
21403
21404 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21405 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21406 ID3D12GraphicsCommandList5 * This,
21407 REFIID riid,
21408 _COM_Outptr_ void **ppvObject);
21409
21410 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21411 ULONG ( STDMETHODCALLTYPE *AddRef )(
21412 ID3D12GraphicsCommandList5 * This);
21413
21414 DECLSPEC_XFGVIRT(IUnknown, Release)
21415 ULONG ( STDMETHODCALLTYPE *Release )(
21416 ID3D12GraphicsCommandList5 * This);
21417
21418 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21419 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21420 ID3D12GraphicsCommandList5 * This,
21421 _In_ REFGUID guid,
21422 _Inout_ UINT *pDataSize,
21423 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21424
21425 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21426 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21427 ID3D12GraphicsCommandList5 * This,
21428 _In_ REFGUID guid,
21429 _In_ UINT DataSize,
21430 _In_reads_bytes_opt_( DataSize ) const void *pData);
21431
21432 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21433 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21434 ID3D12GraphicsCommandList5 * This,
21435 _In_ REFGUID guid,
21436 _In_opt_ const IUnknown *pData);
21437
21438 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21439 HRESULT ( STDMETHODCALLTYPE *SetName )(
21440 ID3D12GraphicsCommandList5 * This,
21441 _In_z_ LPCWSTR Name);
21442
21443 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21444 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21445 ID3D12GraphicsCommandList5 * This,
21446 REFIID riid,
21447 _COM_Outptr_opt_ void **ppvDevice);
21448
21449 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
21450 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
21451 ID3D12GraphicsCommandList5 * This);
21452
21453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
21454 HRESULT ( STDMETHODCALLTYPE *Close )(
21455 ID3D12GraphicsCommandList5 * This);
21456
21457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21458 HRESULT ( STDMETHODCALLTYPE *Reset )(
21459 ID3D12GraphicsCommandList5 * This,
21460 _In_ ID3D12CommandAllocator *pAllocator,
21461 _In_opt_ ID3D12PipelineState *pInitialState);
21462
21463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21464 void ( STDMETHODCALLTYPE *ClearState )(
21465 ID3D12GraphicsCommandList5 * This,
21466 _In_opt_ ID3D12PipelineState *pPipelineState);
21467
21468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21469 void ( STDMETHODCALLTYPE *DrawInstanced )(
21470 ID3D12GraphicsCommandList5 * This,
21471 _In_ UINT VertexCountPerInstance,
21472 _In_ UINT InstanceCount,
21473 _In_ UINT StartVertexLocation,
21474 _In_ UINT StartInstanceLocation);
21475
21476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21477 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21478 ID3D12GraphicsCommandList5 * This,
21479 _In_ UINT IndexCountPerInstance,
21480 _In_ UINT InstanceCount,
21481 _In_ UINT StartIndexLocation,
21482 _In_ INT BaseVertexLocation,
21483 _In_ UINT StartInstanceLocation);
21484
21485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21486 void ( STDMETHODCALLTYPE *Dispatch )(
21487 ID3D12GraphicsCommandList5 * This,
21488 _In_ UINT ThreadGroupCountX,
21489 _In_ UINT ThreadGroupCountY,
21490 _In_ UINT ThreadGroupCountZ);
21491
21492 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21493 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21494 ID3D12GraphicsCommandList5 * This,
21495 _In_ ID3D12Resource *pDstBuffer,
21496 UINT64 DstOffset,
21497 _In_ ID3D12Resource *pSrcBuffer,
21498 UINT64 SrcOffset,
21499 UINT64 NumBytes);
21500
21501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21502 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21503 ID3D12GraphicsCommandList5 * This,
21504 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21505 UINT DstX,
21506 UINT DstY,
21507 UINT DstZ,
21508 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21509 _In_opt_ const D3D12_BOX *pSrcBox);
21510
21511 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21512 void ( STDMETHODCALLTYPE *CopyResource )(
21513 ID3D12GraphicsCommandList5 * This,
21514 _In_ ID3D12Resource *pDstResource,
21515 _In_ ID3D12Resource *pSrcResource);
21516
21517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21518 void ( STDMETHODCALLTYPE *CopyTiles )(
21519 ID3D12GraphicsCommandList5 * This,
21520 _In_ ID3D12Resource *pTiledResource,
21521 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21522 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21523 _In_ ID3D12Resource *pBuffer,
21524 UINT64 BufferStartOffsetInBytes,
21525 D3D12_TILE_COPY_FLAGS Flags);
21526
21527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21528 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21529 ID3D12GraphicsCommandList5 * This,
21530 _In_ ID3D12Resource *pDstResource,
21531 _In_ UINT DstSubresource,
21532 _In_ ID3D12Resource *pSrcResource,
21533 _In_ UINT SrcSubresource,
21534 _In_ DXGI_FORMAT Format);
21535
21536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21537 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21538 ID3D12GraphicsCommandList5 * This,
21539 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21540
21541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21542 void ( STDMETHODCALLTYPE *RSSetViewports )(
21543 ID3D12GraphicsCommandList5 * This,
21544 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21545 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21546
21547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21548 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21549 ID3D12GraphicsCommandList5 * This,
21550 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21551 _In_reads_( NumRects) const D3D12_RECT *pRects);
21552
21553 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21554 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21555 ID3D12GraphicsCommandList5 * This,
21556 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21557
21558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21559 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21560 ID3D12GraphicsCommandList5 * This,
21561 _In_ UINT StencilRef);
21562
21563 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21564 void ( STDMETHODCALLTYPE *SetPipelineState )(
21565 ID3D12GraphicsCommandList5 * This,
21566 _In_ ID3D12PipelineState *pPipelineState);
21567
21568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21569 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21570 ID3D12GraphicsCommandList5 * This,
21571 _In_ UINT NumBarriers,
21572 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21573
21574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21575 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21576 ID3D12GraphicsCommandList5 * This,
21577 _In_ ID3D12GraphicsCommandList *pCommandList);
21578
21579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21580 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21581 ID3D12GraphicsCommandList5 * This,
21582 _In_ UINT NumDescriptorHeaps,
21583 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21584
21585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21586 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21587 ID3D12GraphicsCommandList5 * This,
21588 _In_opt_ ID3D12RootSignature *pRootSignature);
21589
21590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21591 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21592 ID3D12GraphicsCommandList5 * This,
21593 _In_opt_ ID3D12RootSignature *pRootSignature);
21594
21595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21596 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21597 ID3D12GraphicsCommandList5 * This,
21598 _In_ UINT RootParameterIndex,
21599 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21600
21601 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21602 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21603 ID3D12GraphicsCommandList5 * This,
21604 _In_ UINT RootParameterIndex,
21605 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21606
21607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21608 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21609 ID3D12GraphicsCommandList5 * This,
21610 _In_ UINT RootParameterIndex,
21611 _In_ UINT SrcData,
21612 _In_ UINT DestOffsetIn32BitValues);
21613
21614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21615 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21616 ID3D12GraphicsCommandList5 * This,
21617 _In_ UINT RootParameterIndex,
21618 _In_ UINT SrcData,
21619 _In_ UINT DestOffsetIn32BitValues);
21620
21621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21622 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21623 ID3D12GraphicsCommandList5 * This,
21624 _In_ UINT RootParameterIndex,
21625 _In_ UINT Num32BitValuesToSet,
21626 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21627 _In_ UINT DestOffsetIn32BitValues);
21628
21629 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21630 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21631 ID3D12GraphicsCommandList5 * This,
21632 _In_ UINT RootParameterIndex,
21633 _In_ UINT Num32BitValuesToSet,
21634 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21635 _In_ UINT DestOffsetIn32BitValues);
21636
21637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21638 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21639 ID3D12GraphicsCommandList5 * This,
21640 _In_ UINT RootParameterIndex,
21641 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21642
21643 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21644 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21645 ID3D12GraphicsCommandList5 * This,
21646 _In_ UINT RootParameterIndex,
21647 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21648
21649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21650 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21651 ID3D12GraphicsCommandList5 * This,
21652 _In_ UINT RootParameterIndex,
21653 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21654
21655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21656 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21657 ID3D12GraphicsCommandList5 * This,
21658 _In_ UINT RootParameterIndex,
21659 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21660
21661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21662 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21663 ID3D12GraphicsCommandList5 * This,
21664 _In_ UINT RootParameterIndex,
21665 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21666
21667 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21668 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21669 ID3D12GraphicsCommandList5 * This,
21670 _In_ UINT RootParameterIndex,
21671 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21672
21673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21674 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21675 ID3D12GraphicsCommandList5 * This,
21676 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21677
21678 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21679 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21680 ID3D12GraphicsCommandList5 * This,
21681 _In_ UINT StartSlot,
21682 _In_ UINT NumViews,
21683 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21684
21685 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21686 void ( STDMETHODCALLTYPE *SOSetTargets )(
21687 ID3D12GraphicsCommandList5 * This,
21688 _In_ UINT StartSlot,
21689 _In_ UINT NumViews,
21690 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21691
21692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21693 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21694 ID3D12GraphicsCommandList5 * This,
21695 _In_ UINT NumRenderTargetDescriptors,
21696 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21697 _In_ BOOL RTsSingleHandleToDescriptorRange,
21698 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21699
21700 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21701 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21702 ID3D12GraphicsCommandList5 * This,
21703 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21704 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21705 _In_ FLOAT Depth,
21706 _In_ UINT8 Stencil,
21707 _In_ UINT NumRects,
21708 _In_reads_(NumRects) const D3D12_RECT *pRects);
21709
21710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21711 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21712 ID3D12GraphicsCommandList5 * This,
21713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21714 _In_ const FLOAT ColorRGBA[ 4 ],
21715 _In_ UINT NumRects,
21716 _In_reads_(NumRects) const D3D12_RECT *pRects);
21717
21718 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21719 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21720 ID3D12GraphicsCommandList5 * This,
21721 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21723 _In_ ID3D12Resource *pResource,
21724 _In_ const UINT Values[ 4 ],
21725 _In_ UINT NumRects,
21726 _In_reads_(NumRects) const D3D12_RECT *pRects);
21727
21728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21729 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21730 ID3D12GraphicsCommandList5 * This,
21731 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21732 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21733 _In_ ID3D12Resource *pResource,
21734 _In_ const FLOAT Values[ 4 ],
21735 _In_ UINT NumRects,
21736 _In_reads_(NumRects) const D3D12_RECT *pRects);
21737
21738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21739 void ( STDMETHODCALLTYPE *DiscardResource )(
21740 ID3D12GraphicsCommandList5 * This,
21741 _In_ ID3D12Resource *pResource,
21742 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21743
21744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21745 void ( STDMETHODCALLTYPE *BeginQuery )(
21746 ID3D12GraphicsCommandList5 * This,
21747 _In_ ID3D12QueryHeap *pQueryHeap,
21748 _In_ D3D12_QUERY_TYPE Type,
21749 _In_ UINT Index);
21750
21751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21752 void ( STDMETHODCALLTYPE *EndQuery )(
21753 ID3D12GraphicsCommandList5 * This,
21754 _In_ ID3D12QueryHeap *pQueryHeap,
21755 _In_ D3D12_QUERY_TYPE Type,
21756 _In_ UINT Index);
21757
21758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21759 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21760 ID3D12GraphicsCommandList5 * This,
21761 _In_ ID3D12QueryHeap *pQueryHeap,
21762 _In_ D3D12_QUERY_TYPE Type,
21763 _In_ UINT StartIndex,
21764 _In_ UINT NumQueries,
21765 _In_ ID3D12Resource *pDestinationBuffer,
21766 _In_ UINT64 AlignedDestinationBufferOffset);
21767
21768 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21769 void ( STDMETHODCALLTYPE *SetPredication )(
21770 ID3D12GraphicsCommandList5 * This,
21771 _In_opt_ ID3D12Resource *pBuffer,
21772 _In_ UINT64 AlignedBufferOffset,
21773 _In_ D3D12_PREDICATION_OP Operation);
21774
21775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21776 void ( STDMETHODCALLTYPE *SetMarker )(
21777 ID3D12GraphicsCommandList5 * This,
21778 UINT Metadata,
21779 _In_reads_bytes_opt_(Size) const void *pData,
21780 UINT Size);
21781
21782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21783 void ( STDMETHODCALLTYPE *BeginEvent )(
21784 ID3D12GraphicsCommandList5 * This,
21785 UINT Metadata,
21786 _In_reads_bytes_opt_(Size) const void *pData,
21787 UINT Size);
21788
21789 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21790 void ( STDMETHODCALLTYPE *EndEvent )(
21791 ID3D12GraphicsCommandList5 * This);
21792
21793 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21794 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21795 ID3D12GraphicsCommandList5 * This,
21796 _In_ ID3D12CommandSignature *pCommandSignature,
21797 _In_ UINT MaxCommandCount,
21798 _In_ ID3D12Resource *pArgumentBuffer,
21799 _In_ UINT64 ArgumentBufferOffset,
21800 _In_opt_ ID3D12Resource *pCountBuffer,
21801 _In_ UINT64 CountBufferOffset);
21802
21803 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21804 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21805 ID3D12GraphicsCommandList5 * This,
21806 _In_ ID3D12Resource *pDstBuffer,
21807 UINT64 DstOffset,
21808 _In_ ID3D12Resource *pSrcBuffer,
21809 UINT64 SrcOffset,
21810 UINT Dependencies,
21811 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21812 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21813
21814 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21815 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21816 ID3D12GraphicsCommandList5 * This,
21817 _In_ ID3D12Resource *pDstBuffer,
21818 UINT64 DstOffset,
21819 _In_ ID3D12Resource *pSrcBuffer,
21820 UINT64 SrcOffset,
21821 UINT Dependencies,
21822 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21823 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21824
21825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21826 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21827 ID3D12GraphicsCommandList5 * This,
21828 _In_ FLOAT Min,
21829 _In_ FLOAT Max);
21830
21831 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21832 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21833 ID3D12GraphicsCommandList5 * This,
21834 _In_ UINT NumSamplesPerPixel,
21835 _In_ UINT NumPixels,
21836 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21837
21838 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21839 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21840 ID3D12GraphicsCommandList5 * This,
21841 _In_ ID3D12Resource *pDstResource,
21842 _In_ UINT DstSubresource,
21843 _In_ UINT DstX,
21844 _In_ UINT DstY,
21845 _In_ ID3D12Resource *pSrcResource,
21846 _In_ UINT SrcSubresource,
21847 _In_opt_ D3D12_RECT *pSrcRect,
21848 _In_ DXGI_FORMAT Format,
21849 _In_ D3D12_RESOLVE_MODE ResolveMode);
21850
21851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21852 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21853 ID3D12GraphicsCommandList5 * This,
21854 _In_ UINT Mask);
21855
21856 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21857 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21858 ID3D12GraphicsCommandList5 * This,
21859 UINT Count,
21860 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21861 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21862
21863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21864 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21865 ID3D12GraphicsCommandList5 * This,
21866 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21867
21868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
21869 void ( STDMETHODCALLTYPE *BeginRenderPass )(
21870 ID3D12GraphicsCommandList5 * This,
21871 _In_ UINT NumRenderTargets,
21872 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
21873 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
21874 D3D12_RENDER_PASS_FLAGS Flags);
21875
21876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
21877 void ( STDMETHODCALLTYPE *EndRenderPass )(
21878 ID3D12GraphicsCommandList5 * This);
21879
21880 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
21881 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
21882 ID3D12GraphicsCommandList5 * This,
21883 _In_ ID3D12MetaCommand *pMetaCommand,
21884 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
21885 _In_ SIZE_T InitializationParametersDataSizeInBytes);
21886
21887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
21888 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
21889 ID3D12GraphicsCommandList5 * This,
21890 _In_ ID3D12MetaCommand *pMetaCommand,
21891 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
21892 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
21893
21894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
21895 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
21896 ID3D12GraphicsCommandList5 * This,
21897 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
21898 _In_ UINT NumPostbuildInfoDescs,
21899 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
21900
21901 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
21902 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
21903 ID3D12GraphicsCommandList5 * This,
21904 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
21905 _In_ UINT NumSourceAccelerationStructures,
21906 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
21907
21908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
21909 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
21910 ID3D12GraphicsCommandList5 * This,
21911 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
21912 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
21913 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
21914
21915 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
21916 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
21917 ID3D12GraphicsCommandList5 * This,
21918 _In_ ID3D12StateObject *pStateObject);
21919
21920 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
21921 void ( STDMETHODCALLTYPE *DispatchRays )(
21922 ID3D12GraphicsCommandList5 * This,
21923 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
21924
21925 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
21926 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
21927 ID3D12GraphicsCommandList5 * This,
21928 _In_ D3D12_SHADING_RATE baseShadingRate,
21929 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
21930
21931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
21932 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
21933 ID3D12GraphicsCommandList5 * This,
21934 _In_opt_ ID3D12Resource *shadingRateImage);
21935
21936 END_INTERFACE
21937 } ID3D12GraphicsCommandList5Vtbl;
21938
21939 interface ID3D12GraphicsCommandList5
21940 {
21941 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
21942 };
21943
21944
21945
21946#ifdef COBJMACROS
21947
21948
21949#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
21950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21951
21952#define ID3D12GraphicsCommandList5_AddRef(This) \
21953 ( (This)->lpVtbl -> AddRef(This) )
21954
21955#define ID3D12GraphicsCommandList5_Release(This) \
21956 ( (This)->lpVtbl -> Release(This) )
21957
21958
21959#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
21960 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21961
21962#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
21963 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21964
21965#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
21966 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21967
21968#define ID3D12GraphicsCommandList5_SetName(This,Name) \
21969 ( (This)->lpVtbl -> SetName(This,Name) )
21970
21971
21972#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
21973 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21974
21975
21976#define ID3D12GraphicsCommandList5_GetType(This) \
21977 ( (This)->lpVtbl -> GetType(This) )
21978
21979
21980#define ID3D12GraphicsCommandList5_Close(This) \
21981 ( (This)->lpVtbl -> Close(This) )
21982
21983#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
21984 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21985
21986#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
21987 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21988
21989#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21990 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21991
21992#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21993 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21994
21995#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21996 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21997
21998#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21999 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22000
22001#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22002 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22003
22004#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
22005 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22006
22007#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22008 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22009
22010#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22011 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22012
22013#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
22014 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22015
22016#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
22017 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22018
22019#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
22020 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22021
22022#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
22023 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22024
22025#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
22026 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22027
22028#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
22029 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22030
22031#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
22032 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22033
22034#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
22035 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22036
22037#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22038 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22039
22040#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
22041 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22042
22043#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
22044 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22045
22046#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22047 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22048
22049#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22050 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22051
22052#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22053 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22054
22055#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22056 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22057
22058#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22059 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22060
22061#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22062 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22063
22064#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22065 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22066
22067#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22068 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22069
22070#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22071 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22072
22073#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22074 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22075
22076#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22077 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22078
22079#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22080 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22081
22082#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
22083 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22084
22085#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22086 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22087
22088#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
22089 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22090
22091#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22092 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22093
22094#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22095 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22096
22097#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22098 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22099
22100#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22101 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22102
22103#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22104 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22105
22106#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
22107 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22108
22109#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
22110 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22111
22112#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
22113 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22114
22115#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22116 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22117
22118#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22119 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22120
22121#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
22122 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22123
22124#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
22125 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22126
22127#define ID3D12GraphicsCommandList5_EndEvent(This) \
22128 ( (This)->lpVtbl -> EndEvent(This) )
22129
22130#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22131 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22132
22133
22134#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22135 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22136
22137#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22138 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22139
22140#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
22141 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22142
22143#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22144 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22145
22146#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22147 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22148
22149#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
22150 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22151
22152
22153#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
22154 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22155
22156
22157#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
22158 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22159
22160
22161#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22162 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22163
22164#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
22165 ( (This)->lpVtbl -> EndRenderPass(This) )
22166
22167#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22168 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22169
22170#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22171 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22172
22173#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22174 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22175
22176#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22177 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22178
22179#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22180 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22181
22182#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
22183 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22184
22185#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
22186 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22187
22188
22189#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
22190 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
22191
22192#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
22193 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
22194
22195#endif /* COBJMACROS */
22196
22197
22198#endif /* C style interface */
22199
22200
22201
22202
22203#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
22204
22205
22206/* interface __MIDL_itf_d3d12_0000_0055 */
22207/* [local] */
22208
22209typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
22210 {
22211 UINT ThreadGroupCountX;
22212 UINT ThreadGroupCountY;
22213 UINT ThreadGroupCountZ;
22214 } D3D12_DISPATCH_MESH_ARGUMENTS;
22215
22216
22217
22218extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22219extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22220
22221#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22222#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22223
22224/* interface ID3D12GraphicsCommandList6 */
22225/* [unique][local][object][uuid] */
22226
22227
22228EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
22229
22230#if defined(__cplusplus) && !defined(CINTERFACE)
22231
22232 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
22233 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
22234 {
22235 public:
22236 virtual void STDMETHODCALLTYPE DispatchMesh(
22237 _In_ UINT ThreadGroupCountX,
22238 _In_ UINT ThreadGroupCountY,
22239 _In_ UINT ThreadGroupCountZ) = 0;
22240
22241 };
22242
22243
22244#else /* C style interface */
22245
22246 typedef struct ID3D12GraphicsCommandList6Vtbl
22247 {
22248 BEGIN_INTERFACE
22249
22250 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22251 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22252 ID3D12GraphicsCommandList6 * This,
22253 REFIID riid,
22254 _COM_Outptr_ void **ppvObject);
22255
22256 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22257 ULONG ( STDMETHODCALLTYPE *AddRef )(
22258 ID3D12GraphicsCommandList6 * This);
22259
22260 DECLSPEC_XFGVIRT(IUnknown, Release)
22261 ULONG ( STDMETHODCALLTYPE *Release )(
22262 ID3D12GraphicsCommandList6 * This);
22263
22264 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22265 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22266 ID3D12GraphicsCommandList6 * This,
22267 _In_ REFGUID guid,
22268 _Inout_ UINT *pDataSize,
22269 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22270
22271 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22272 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22273 ID3D12GraphicsCommandList6 * This,
22274 _In_ REFGUID guid,
22275 _In_ UINT DataSize,
22276 _In_reads_bytes_opt_( DataSize ) const void *pData);
22277
22278 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22279 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22280 ID3D12GraphicsCommandList6 * This,
22281 _In_ REFGUID guid,
22282 _In_opt_ const IUnknown *pData);
22283
22284 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22285 HRESULT ( STDMETHODCALLTYPE *SetName )(
22286 ID3D12GraphicsCommandList6 * This,
22287 _In_z_ LPCWSTR Name);
22288
22289 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22290 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22291 ID3D12GraphicsCommandList6 * This,
22292 REFIID riid,
22293 _COM_Outptr_opt_ void **ppvDevice);
22294
22295 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22296 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22297 ID3D12GraphicsCommandList6 * This);
22298
22299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22300 HRESULT ( STDMETHODCALLTYPE *Close )(
22301 ID3D12GraphicsCommandList6 * This);
22302
22303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22304 HRESULT ( STDMETHODCALLTYPE *Reset )(
22305 ID3D12GraphicsCommandList6 * This,
22306 _In_ ID3D12CommandAllocator *pAllocator,
22307 _In_opt_ ID3D12PipelineState *pInitialState);
22308
22309 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22310 void ( STDMETHODCALLTYPE *ClearState )(
22311 ID3D12GraphicsCommandList6 * This,
22312 _In_opt_ ID3D12PipelineState *pPipelineState);
22313
22314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22315 void ( STDMETHODCALLTYPE *DrawInstanced )(
22316 ID3D12GraphicsCommandList6 * This,
22317 _In_ UINT VertexCountPerInstance,
22318 _In_ UINT InstanceCount,
22319 _In_ UINT StartVertexLocation,
22320 _In_ UINT StartInstanceLocation);
22321
22322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22323 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22324 ID3D12GraphicsCommandList6 * This,
22325 _In_ UINT IndexCountPerInstance,
22326 _In_ UINT InstanceCount,
22327 _In_ UINT StartIndexLocation,
22328 _In_ INT BaseVertexLocation,
22329 _In_ UINT StartInstanceLocation);
22330
22331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22332 void ( STDMETHODCALLTYPE *Dispatch )(
22333 ID3D12GraphicsCommandList6 * This,
22334 _In_ UINT ThreadGroupCountX,
22335 _In_ UINT ThreadGroupCountY,
22336 _In_ UINT ThreadGroupCountZ);
22337
22338 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22339 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22340 ID3D12GraphicsCommandList6 * This,
22341 _In_ ID3D12Resource *pDstBuffer,
22342 UINT64 DstOffset,
22343 _In_ ID3D12Resource *pSrcBuffer,
22344 UINT64 SrcOffset,
22345 UINT64 NumBytes);
22346
22347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22348 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22349 ID3D12GraphicsCommandList6 * This,
22350 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22351 UINT DstX,
22352 UINT DstY,
22353 UINT DstZ,
22354 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22355 _In_opt_ const D3D12_BOX *pSrcBox);
22356
22357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22358 void ( STDMETHODCALLTYPE *CopyResource )(
22359 ID3D12GraphicsCommandList6 * This,
22360 _In_ ID3D12Resource *pDstResource,
22361 _In_ ID3D12Resource *pSrcResource);
22362
22363 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22364 void ( STDMETHODCALLTYPE *CopyTiles )(
22365 ID3D12GraphicsCommandList6 * This,
22366 _In_ ID3D12Resource *pTiledResource,
22367 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22368 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22369 _In_ ID3D12Resource *pBuffer,
22370 UINT64 BufferStartOffsetInBytes,
22371 D3D12_TILE_COPY_FLAGS Flags);
22372
22373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22374 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22375 ID3D12GraphicsCommandList6 * This,
22376 _In_ ID3D12Resource *pDstResource,
22377 _In_ UINT DstSubresource,
22378 _In_ ID3D12Resource *pSrcResource,
22379 _In_ UINT SrcSubresource,
22380 _In_ DXGI_FORMAT Format);
22381
22382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22383 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22384 ID3D12GraphicsCommandList6 * This,
22385 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22386
22387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22388 void ( STDMETHODCALLTYPE *RSSetViewports )(
22389 ID3D12GraphicsCommandList6 * This,
22390 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22391 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22392
22393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22394 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22395 ID3D12GraphicsCommandList6 * This,
22396 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22397 _In_reads_( NumRects) const D3D12_RECT *pRects);
22398
22399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22400 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22401 ID3D12GraphicsCommandList6 * This,
22402 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22403
22404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22405 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22406 ID3D12GraphicsCommandList6 * This,
22407 _In_ UINT StencilRef);
22408
22409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22410 void ( STDMETHODCALLTYPE *SetPipelineState )(
22411 ID3D12GraphicsCommandList6 * This,
22412 _In_ ID3D12PipelineState *pPipelineState);
22413
22414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22415 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22416 ID3D12GraphicsCommandList6 * This,
22417 _In_ UINT NumBarriers,
22418 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22419
22420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22421 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22422 ID3D12GraphicsCommandList6 * This,
22423 _In_ ID3D12GraphicsCommandList *pCommandList);
22424
22425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22426 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22427 ID3D12GraphicsCommandList6 * This,
22428 _In_ UINT NumDescriptorHeaps,
22429 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22430
22431 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22432 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22433 ID3D12GraphicsCommandList6 * This,
22434 _In_opt_ ID3D12RootSignature *pRootSignature);
22435
22436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22437 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22438 ID3D12GraphicsCommandList6 * This,
22439 _In_opt_ ID3D12RootSignature *pRootSignature);
22440
22441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22442 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22443 ID3D12GraphicsCommandList6 * This,
22444 _In_ UINT RootParameterIndex,
22445 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22446
22447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22448 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22449 ID3D12GraphicsCommandList6 * This,
22450 _In_ UINT RootParameterIndex,
22451 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22452
22453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22454 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22455 ID3D12GraphicsCommandList6 * This,
22456 _In_ UINT RootParameterIndex,
22457 _In_ UINT SrcData,
22458 _In_ UINT DestOffsetIn32BitValues);
22459
22460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22461 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22462 ID3D12GraphicsCommandList6 * This,
22463 _In_ UINT RootParameterIndex,
22464 _In_ UINT SrcData,
22465 _In_ UINT DestOffsetIn32BitValues);
22466
22467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22468 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22469 ID3D12GraphicsCommandList6 * This,
22470 _In_ UINT RootParameterIndex,
22471 _In_ UINT Num32BitValuesToSet,
22472 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22473 _In_ UINT DestOffsetIn32BitValues);
22474
22475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22476 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22477 ID3D12GraphicsCommandList6 * This,
22478 _In_ UINT RootParameterIndex,
22479 _In_ UINT Num32BitValuesToSet,
22480 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22481 _In_ UINT DestOffsetIn32BitValues);
22482
22483 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22484 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22485 ID3D12GraphicsCommandList6 * This,
22486 _In_ UINT RootParameterIndex,
22487 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22488
22489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22490 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22491 ID3D12GraphicsCommandList6 * This,
22492 _In_ UINT RootParameterIndex,
22493 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22494
22495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22496 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22497 ID3D12GraphicsCommandList6 * This,
22498 _In_ UINT RootParameterIndex,
22499 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22500
22501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22502 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22503 ID3D12GraphicsCommandList6 * This,
22504 _In_ UINT RootParameterIndex,
22505 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22506
22507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22508 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22509 ID3D12GraphicsCommandList6 * This,
22510 _In_ UINT RootParameterIndex,
22511 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22512
22513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22514 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22515 ID3D12GraphicsCommandList6 * This,
22516 _In_ UINT RootParameterIndex,
22517 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22518
22519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22520 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22521 ID3D12GraphicsCommandList6 * This,
22522 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22523
22524 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22525 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22526 ID3D12GraphicsCommandList6 * This,
22527 _In_ UINT StartSlot,
22528 _In_ UINT NumViews,
22529 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22530
22531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22532 void ( STDMETHODCALLTYPE *SOSetTargets )(
22533 ID3D12GraphicsCommandList6 * This,
22534 _In_ UINT StartSlot,
22535 _In_ UINT NumViews,
22536 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22537
22538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22539 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22540 ID3D12GraphicsCommandList6 * This,
22541 _In_ UINT NumRenderTargetDescriptors,
22542 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22543 _In_ BOOL RTsSingleHandleToDescriptorRange,
22544 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22545
22546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22547 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22548 ID3D12GraphicsCommandList6 * This,
22549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22550 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22551 _In_ FLOAT Depth,
22552 _In_ UINT8 Stencil,
22553 _In_ UINT NumRects,
22554 _In_reads_(NumRects) const D3D12_RECT *pRects);
22555
22556 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22557 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22558 ID3D12GraphicsCommandList6 * This,
22559 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22560 _In_ const FLOAT ColorRGBA[ 4 ],
22561 _In_ UINT NumRects,
22562 _In_reads_(NumRects) const D3D12_RECT *pRects);
22563
22564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22565 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22566 ID3D12GraphicsCommandList6 * This,
22567 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22568 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22569 _In_ ID3D12Resource *pResource,
22570 _In_ const UINT Values[ 4 ],
22571 _In_ UINT NumRects,
22572 _In_reads_(NumRects) const D3D12_RECT *pRects);
22573
22574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22575 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22576 ID3D12GraphicsCommandList6 * This,
22577 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22578 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22579 _In_ ID3D12Resource *pResource,
22580 _In_ const FLOAT Values[ 4 ],
22581 _In_ UINT NumRects,
22582 _In_reads_(NumRects) const D3D12_RECT *pRects);
22583
22584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22585 void ( STDMETHODCALLTYPE *DiscardResource )(
22586 ID3D12GraphicsCommandList6 * This,
22587 _In_ ID3D12Resource *pResource,
22588 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22589
22590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22591 void ( STDMETHODCALLTYPE *BeginQuery )(
22592 ID3D12GraphicsCommandList6 * This,
22593 _In_ ID3D12QueryHeap *pQueryHeap,
22594 _In_ D3D12_QUERY_TYPE Type,
22595 _In_ UINT Index);
22596
22597 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22598 void ( STDMETHODCALLTYPE *EndQuery )(
22599 ID3D12GraphicsCommandList6 * This,
22600 _In_ ID3D12QueryHeap *pQueryHeap,
22601 _In_ D3D12_QUERY_TYPE Type,
22602 _In_ UINT Index);
22603
22604 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22605 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22606 ID3D12GraphicsCommandList6 * This,
22607 _In_ ID3D12QueryHeap *pQueryHeap,
22608 _In_ D3D12_QUERY_TYPE Type,
22609 _In_ UINT StartIndex,
22610 _In_ UINT NumQueries,
22611 _In_ ID3D12Resource *pDestinationBuffer,
22612 _In_ UINT64 AlignedDestinationBufferOffset);
22613
22614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22615 void ( STDMETHODCALLTYPE *SetPredication )(
22616 ID3D12GraphicsCommandList6 * This,
22617 _In_opt_ ID3D12Resource *pBuffer,
22618 _In_ UINT64 AlignedBufferOffset,
22619 _In_ D3D12_PREDICATION_OP Operation);
22620
22621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22622 void ( STDMETHODCALLTYPE *SetMarker )(
22623 ID3D12GraphicsCommandList6 * This,
22624 UINT Metadata,
22625 _In_reads_bytes_opt_(Size) const void *pData,
22626 UINT Size);
22627
22628 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22629 void ( STDMETHODCALLTYPE *BeginEvent )(
22630 ID3D12GraphicsCommandList6 * This,
22631 UINT Metadata,
22632 _In_reads_bytes_opt_(Size) const void *pData,
22633 UINT Size);
22634
22635 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22636 void ( STDMETHODCALLTYPE *EndEvent )(
22637 ID3D12GraphicsCommandList6 * This);
22638
22639 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22640 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22641 ID3D12GraphicsCommandList6 * This,
22642 _In_ ID3D12CommandSignature *pCommandSignature,
22643 _In_ UINT MaxCommandCount,
22644 _In_ ID3D12Resource *pArgumentBuffer,
22645 _In_ UINT64 ArgumentBufferOffset,
22646 _In_opt_ ID3D12Resource *pCountBuffer,
22647 _In_ UINT64 CountBufferOffset);
22648
22649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22650 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22651 ID3D12GraphicsCommandList6 * This,
22652 _In_ ID3D12Resource *pDstBuffer,
22653 UINT64 DstOffset,
22654 _In_ ID3D12Resource *pSrcBuffer,
22655 UINT64 SrcOffset,
22656 UINT Dependencies,
22657 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22658 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22659
22660 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22661 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22662 ID3D12GraphicsCommandList6 * This,
22663 _In_ ID3D12Resource *pDstBuffer,
22664 UINT64 DstOffset,
22665 _In_ ID3D12Resource *pSrcBuffer,
22666 UINT64 SrcOffset,
22667 UINT Dependencies,
22668 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22669 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22670
22671 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22672 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22673 ID3D12GraphicsCommandList6 * This,
22674 _In_ FLOAT Min,
22675 _In_ FLOAT Max);
22676
22677 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22678 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22679 ID3D12GraphicsCommandList6 * This,
22680 _In_ UINT NumSamplesPerPixel,
22681 _In_ UINT NumPixels,
22682 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22683
22684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22685 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22686 ID3D12GraphicsCommandList6 * This,
22687 _In_ ID3D12Resource *pDstResource,
22688 _In_ UINT DstSubresource,
22689 _In_ UINT DstX,
22690 _In_ UINT DstY,
22691 _In_ ID3D12Resource *pSrcResource,
22692 _In_ UINT SrcSubresource,
22693 _In_opt_ D3D12_RECT *pSrcRect,
22694 _In_ DXGI_FORMAT Format,
22695 _In_ D3D12_RESOLVE_MODE ResolveMode);
22696
22697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22698 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22699 ID3D12GraphicsCommandList6 * This,
22700 _In_ UINT Mask);
22701
22702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22703 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22704 ID3D12GraphicsCommandList6 * This,
22705 UINT Count,
22706 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22707 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22708
22709 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22710 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22711 ID3D12GraphicsCommandList6 * This,
22712 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22713
22714 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22715 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22716 ID3D12GraphicsCommandList6 * This,
22717 _In_ UINT NumRenderTargets,
22718 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22719 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22720 D3D12_RENDER_PASS_FLAGS Flags);
22721
22722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22723 void ( STDMETHODCALLTYPE *EndRenderPass )(
22724 ID3D12GraphicsCommandList6 * This);
22725
22726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22727 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22728 ID3D12GraphicsCommandList6 * This,
22729 _In_ ID3D12MetaCommand *pMetaCommand,
22730 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22731 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22732
22733 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22734 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22735 ID3D12GraphicsCommandList6 * This,
22736 _In_ ID3D12MetaCommand *pMetaCommand,
22737 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22738 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22739
22740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22741 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22742 ID3D12GraphicsCommandList6 * This,
22743 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22744 _In_ UINT NumPostbuildInfoDescs,
22745 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22746
22747 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22748 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22749 ID3D12GraphicsCommandList6 * This,
22750 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22751 _In_ UINT NumSourceAccelerationStructures,
22752 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22753
22754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22755 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22756 ID3D12GraphicsCommandList6 * This,
22757 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22758 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22759 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22760
22761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22762 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22763 ID3D12GraphicsCommandList6 * This,
22764 _In_ ID3D12StateObject *pStateObject);
22765
22766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22767 void ( STDMETHODCALLTYPE *DispatchRays )(
22768 ID3D12GraphicsCommandList6 * This,
22769 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22770
22771 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
22772 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
22773 ID3D12GraphicsCommandList6 * This,
22774 _In_ D3D12_SHADING_RATE baseShadingRate,
22775 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
22776
22777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
22778 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
22779 ID3D12GraphicsCommandList6 * This,
22780 _In_opt_ ID3D12Resource *shadingRateImage);
22781
22782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
22783 void ( STDMETHODCALLTYPE *DispatchMesh )(
22784 ID3D12GraphicsCommandList6 * This,
22785 _In_ UINT ThreadGroupCountX,
22786 _In_ UINT ThreadGroupCountY,
22787 _In_ UINT ThreadGroupCountZ);
22788
22789 END_INTERFACE
22790 } ID3D12GraphicsCommandList6Vtbl;
22791
22792 interface ID3D12GraphicsCommandList6
22793 {
22794 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
22795 };
22796
22797
22798
22799#ifdef COBJMACROS
22800
22801
22802#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
22803 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22804
22805#define ID3D12GraphicsCommandList6_AddRef(This) \
22806 ( (This)->lpVtbl -> AddRef(This) )
22807
22808#define ID3D12GraphicsCommandList6_Release(This) \
22809 ( (This)->lpVtbl -> Release(This) )
22810
22811
22812#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
22813 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22814
22815#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
22816 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22817
22818#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
22819 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22820
22821#define ID3D12GraphicsCommandList6_SetName(This,Name) \
22822 ( (This)->lpVtbl -> SetName(This,Name) )
22823
22824
22825#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
22826 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22827
22828
22829#define ID3D12GraphicsCommandList6_GetType(This) \
22830 ( (This)->lpVtbl -> GetType(This) )
22831
22832
22833#define ID3D12GraphicsCommandList6_Close(This) \
22834 ( (This)->lpVtbl -> Close(This) )
22835
22836#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
22837 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22838
22839#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
22840 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22841
22842#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22843 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22844
22845#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22846 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22847
22848#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22849 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22850
22851#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22852 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22853
22854#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22855 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22856
22857#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
22858 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22859
22860#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22861 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22862
22863#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22864 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22865
22866#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
22867 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22868
22869#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
22870 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22871
22872#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
22873 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22874
22875#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
22876 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22877
22878#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
22879 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22880
22881#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
22882 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22883
22884#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
22885 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22886
22887#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
22888 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22889
22890#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22891 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22892
22893#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
22894 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22895
22896#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
22897 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22898
22899#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22900 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22901
22902#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22903 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22904
22905#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22906 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22907
22908#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22909 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22910
22911#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22912 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22913
22914#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22915 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22916
22917#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22918 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22919
22920#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22921 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22922
22923#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22924 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22925
22926#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22927 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22928
22929#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22930 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22931
22932#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22933 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22934
22935#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
22936 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22937
22938#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22939 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22940
22941#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
22942 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22943
22944#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22945 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22946
22947#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22948 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22949
22950#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22951 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22952
22953#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22954 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22955
22956#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22957 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22958
22959#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
22960 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22961
22962#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
22963 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22964
22965#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
22966 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22967
22968#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22969 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22970
22971#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22972 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22973
22974#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
22975 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22976
22977#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
22978 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22979
22980#define ID3D12GraphicsCommandList6_EndEvent(This) \
22981 ( (This)->lpVtbl -> EndEvent(This) )
22982
22983#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22984 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22985
22986
22987#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22988 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22989
22990#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22991 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22992
22993#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
22994 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22995
22996#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22997 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22998
22999#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
23000 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
23001
23002#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
23003 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
23004
23005
23006#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
23007 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
23008
23009
23010#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
23011 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
23012
23013
23014#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
23015 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
23016
23017#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
23018 ( (This)->lpVtbl -> EndRenderPass(This) )
23019
23020#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
23021 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
23022
23023#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
23024 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
23025
23026#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
23027 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
23028
23029#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
23030 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
23031
23032#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
23033 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
23034
23035#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
23036 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
23037
23038#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
23039 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
23040
23041
23042#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
23043 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
23044
23045#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
23046 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
23047
23048
23049#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
23050 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
23051
23052#endif /* COBJMACROS */
23053
23054
23055#endif /* C style interface */
23056
23057
23058
23059
23060#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
23061
23062
23063/* interface __MIDL_itf_d3d12_0000_0056 */
23064/* [local] */
23065
23066#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
23067#pragma endregion
23068DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
23069DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
23070DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
23071DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
23072DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
23073DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
23074DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
23075DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
23076DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
23077DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
23078DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
23079DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
23080DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
23081DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
23082DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
23083DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
23084DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
23085DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
23086DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
23087DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
23088DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
23089DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
23090DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
23091DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
23092DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
23093DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
23094DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
23095DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
23096DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
23097DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
23098DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
23099DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
23100DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
23101DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
23102DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
23103DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
23104DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
23105DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
23106DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
23107DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
23108DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
23109DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
23110DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
23111DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
23112DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
23113DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
23114DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
23115DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
23116DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
23117DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
23118DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
23119DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
23120DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
23121DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
23122DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
23123DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
23124
23125
23126extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23127extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23128
23129/* Additional Prototypes for ALL interfaces */
23130
23131/* end of Additional Prototypes */
23132
23133#ifdef __cplusplus
23134}
23135#endif
23136
23137#endif
23138
23139
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.idl b/contrib/DirectX-Headers/include/directx/d3d12.idl
new file mode 100644
index 0000000..838dea0
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.idl
@@ -0,0 +1,5457 @@
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;
290cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )" )
291const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
292const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
294const UINT D3D12_PACKED_TILE = 0xffffffff;
295const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
296const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
297const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
298const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
299const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
300const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
301const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
302const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
303const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
304const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
305const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
306const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
307const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
308const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
309cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )" )
310const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
311const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
313const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
314const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
316const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
317const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
318const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
319cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )" )
320const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
321const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
322const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
323const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
324const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
325const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
326const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
327const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
328const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
329const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
330const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
331const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
332const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
333const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
334const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
335const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
336const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
337const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
338const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
339const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
340const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
341const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
342const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
343const UINT D3D12_REQ_MAXANISOTROPY = 16;
344const UINT D3D12_REQ_MIP_LEVELS = 15;
345const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
346const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
347const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
348const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
349cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )" )
350const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
351const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
352const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
353const UINT D3D12_REQ_SUBRESOURCES = 30720;
354const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
355const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
356const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
357const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
358const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
359const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
360const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
361const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
362const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
363const UINT D3D12_SDK_VERSION = 4;
364const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
365const UINT D3D12_SHADER_MAJOR_VERSION = 5;
366const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
367const UINT D3D12_SHADER_MAX_INTERFACES = 253;
368const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
369const UINT D3D12_SHADER_MAX_TYPES = 65535;
370const UINT D3D12_SHADER_MINOR_VERSION = 1;
371const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
372const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
373const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
374const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
375const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
376const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
377const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
378const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
379const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
380const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
381const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
382const UINT D3D12_SO_STREAM_COUNT = 4;
383const UINT D3D12_SPEC_DATE_DAY = 14;
384const UINT D3D12_SPEC_DATE_MONTH = 11;
385const UINT D3D12_SPEC_DATE_YEAR = 2014;
386cpp_quote( "#define D3D12_SPEC_VERSION ( 1.16 )" )
387cpp_quote( "#define D3D12_SRGB_GAMMA ( 2.2f )" )
388cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )" )
389cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )" )
390cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )" )
391cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )" )
392cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )" )
393cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )" )
394const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
395const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
396const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
397const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
398const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
399const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
400const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
401const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
402const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
403const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
404const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
405const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
406const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
407const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
408const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
409const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
410const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
411const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
412const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
413const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
414const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
415const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
416const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
417const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
418const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
419const UINT D3D12_UAV_SLOT_COUNT = 64;
420const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
421const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
422const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
423const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
424const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
425const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
426const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
427const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
428const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
429const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
430const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
431const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
432const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
433const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
434const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
435const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
436const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
437const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
438const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
439const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
440const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
441const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
442const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
443cpp_quote( "#endif" )
444
445
446// Forward declarations
447interface ID3D12CommandQueue;
448
449
450typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
451
452typedef enum D3D12_COMMAND_LIST_TYPE
453{
454 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
455 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
456 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
457 D3D12_COMMAND_LIST_TYPE_COPY = 3,
458 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
459 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
460 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
461
462} D3D12_COMMAND_LIST_TYPE;
463
464typedef enum D3D12_COMMAND_QUEUE_FLAGS
465{
466 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
467 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
468} D3D12_COMMAND_QUEUE_FLAGS;
469cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );" )
470
471typedef enum D3D12_COMMAND_QUEUE_PRIORITY
472{
473 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
474 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
475 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
476} D3D12_COMMAND_QUEUE_PRIORITY;
477
478typedef struct D3D12_COMMAND_QUEUE_DESC
479{
480 D3D12_COMMAND_LIST_TYPE Type;
481 INT Priority;
482 D3D12_COMMAND_QUEUE_FLAGS Flags;
483 UINT NodeMask;
484} D3D12_COMMAND_QUEUE_DESC;
485
486typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
487{
488 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
489 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
490 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
491 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
492 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
493} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
494
495typedef enum D3D12_INPUT_CLASSIFICATION
496{
497 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
498 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
499} D3D12_INPUT_CLASSIFICATION;
500
501typedef struct D3D12_INPUT_ELEMENT_DESC
502{
503 LPCSTR SemanticName;
504 UINT SemanticIndex;
505 DXGI_FORMAT Format;
506 UINT InputSlot;
507 UINT AlignedByteOffset;
508 D3D12_INPUT_CLASSIFICATION InputSlotClass;
509 UINT InstanceDataStepRate;
510} D3D12_INPUT_ELEMENT_DESC;
511
512// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
513typedef enum D3D12_FILL_MODE
514{
515 // 1 was POINT in D3D, unused in D3D12
516 D3D12_FILL_MODE_WIREFRAME = 2,
517 D3D12_FILL_MODE_SOLID = 3
518} D3D12_FILL_MODE;
519
520typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
521
522typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
523
524// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
525typedef enum D3D12_CULL_MODE
526{
527 D3D12_CULL_MODE_NONE = 1,
528 D3D12_CULL_MODE_FRONT = 2,
529 D3D12_CULL_MODE_BACK = 3
530} D3D12_CULL_MODE;
531
532typedef struct D3D12_SO_DECLARATION_ENTRY
533{
534 UINT Stream;
535 LPCSTR SemanticName;
536 UINT SemanticIndex;
537 BYTE StartComponent;
538 BYTE ComponentCount;
539 BYTE OutputSlot;
540} D3D12_SO_DECLARATION_ENTRY;
541
542typedef struct D3D12_VIEWPORT
543{
544 FLOAT TopLeftX;
545 FLOAT TopLeftY;
546 FLOAT Width;
547 FLOAT Height;
548 FLOAT MinDepth;
549 FLOAT MaxDepth;
550} D3D12_VIEWPORT;
551
552
553typedef RECT D3D12_RECT;
554
555
556typedef struct D3D12_BOX
557{
558 UINT left;
559 UINT top;
560 UINT front;
561 UINT right;
562 UINT bottom;
563 UINT back;
564} D3D12_BOX;
565
566
567////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
568//
569// Depth-Stencil State
570//
571////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
572
573// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
574typedef enum D3D12_COMPARISON_FUNC
575{
576 D3D12_COMPARISON_FUNC_NEVER = 1,
577 D3D12_COMPARISON_FUNC_LESS = 2,
578 D3D12_COMPARISON_FUNC_EQUAL = 3,
579 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
580 D3D12_COMPARISON_FUNC_GREATER = 5,
581 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
582 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
583 D3D12_COMPARISON_FUNC_ALWAYS = 8
584} D3D12_COMPARISON_FUNC;
585
586typedef enum D3D12_DEPTH_WRITE_MASK
587{
588 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
589 D3D12_DEPTH_WRITE_MASK_ALL = 1
590} D3D12_DEPTH_WRITE_MASK;
591
592// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
593typedef enum D3D12_STENCIL_OP
594{
595 D3D12_STENCIL_OP_KEEP = 1,
596 D3D12_STENCIL_OP_ZERO = 2,
597 D3D12_STENCIL_OP_REPLACE = 3,
598 D3D12_STENCIL_OP_INCR_SAT = 4,
599 D3D12_STENCIL_OP_DECR_SAT = 5,
600 D3D12_STENCIL_OP_INVERT = 6,
601 D3D12_STENCIL_OP_INCR = 7,
602 D3D12_STENCIL_OP_DECR = 8
603} D3D12_STENCIL_OP;
604
605typedef struct D3D12_DEPTH_STENCILOP_DESC
606{
607 D3D12_STENCIL_OP StencilFailOp;
608 D3D12_STENCIL_OP StencilDepthFailOp;
609 D3D12_STENCIL_OP StencilPassOp;
610 D3D12_COMPARISON_FUNC StencilFunc;
611} D3D12_DEPTH_STENCILOP_DESC;
612
613typedef struct D3D12_DEPTH_STENCIL_DESC
614{
615 BOOL DepthEnable;
616 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
617 D3D12_COMPARISON_FUNC DepthFunc;
618 BOOL StencilEnable;
619 UINT8 StencilReadMask;
620 UINT8 StencilWriteMask;
621 D3D12_DEPTH_STENCILOP_DESC FrontFace;
622 D3D12_DEPTH_STENCILOP_DESC BackFace;
623} D3D12_DEPTH_STENCIL_DESC;
624
625typedef struct D3D12_DEPTH_STENCIL_DESC1
626{
627 BOOL DepthEnable;
628 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
629 D3D12_COMPARISON_FUNC DepthFunc;
630 BOOL StencilEnable;
631 UINT8 StencilReadMask;
632 UINT8 StencilWriteMask;
633 D3D12_DEPTH_STENCILOP_DESC FrontFace;
634 D3D12_DEPTH_STENCILOP_DESC BackFace;
635 BOOL DepthBoundsTestEnable;
636} D3D12_DEPTH_STENCIL_DESC1;
637
638
639////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
640//
641// Blend State
642//
643////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
644
645// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
646typedef enum D3D12_BLEND
647{
648 D3D12_BLEND_ZERO = 1,
649 D3D12_BLEND_ONE = 2,
650 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
651 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
652 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
653 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
654 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
655 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
656 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
657 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
658 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
659 // 12 reserved (was BOTHSRCALPHA)
660 // 13 reserved (was BOTHSRCALPHA)
661 D3D12_BLEND_BLEND_FACTOR = 14,
662 D3D12_BLEND_INV_BLEND_FACTOR = 15,
663 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
664 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
665 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
666 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
667} D3D12_BLEND;
668
669// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
670typedef enum D3D12_BLEND_OP
671{
672 D3D12_BLEND_OP_ADD = 1,
673 D3D12_BLEND_OP_SUBTRACT = 2,
674 D3D12_BLEND_OP_REV_SUBTRACT = 3,
675 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
676 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
677} D3D12_BLEND_OP;
678
679typedef enum D3D12_COLOR_WRITE_ENABLE
680{
681 D3D12_COLOR_WRITE_ENABLE_RED = 1,
682 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
683 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
684 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
685 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
686 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
687} D3D12_COLOR_WRITE_ENABLE;
688
689typedef enum D3D12_LOGIC_OP
690{
691 // Operation:
692 // (s == PS output, d = RTV contents)
693 D3D12_LOGIC_OP_CLEAR = 0, // 0
694 D3D12_LOGIC_OP_SET, // 1
695 D3D12_LOGIC_OP_COPY, // s
696 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
697 D3D12_LOGIC_OP_NOOP, // d
698 D3D12_LOGIC_OP_INVERT, // ~d
699 D3D12_LOGIC_OP_AND, // s & d
700 D3D12_LOGIC_OP_NAND, // ~(s & d)
701 D3D12_LOGIC_OP_OR, // s | d
702 D3D12_LOGIC_OP_NOR, // ~(s | d)
703 D3D12_LOGIC_OP_XOR, // s ^ d
704 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
705 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
706 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
707 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
708 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
709} D3D12_LOGIC_OP;
710
711typedef struct D3D12_RENDER_TARGET_BLEND_DESC
712{
713 BOOL BlendEnable;
714 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
715 D3D12_BLEND SrcBlend;
716 D3D12_BLEND DestBlend;
717 D3D12_BLEND_OP BlendOp;
718 D3D12_BLEND SrcBlendAlpha;
719 D3D12_BLEND DestBlendAlpha;
720 D3D12_BLEND_OP BlendOpAlpha;
721 D3D12_LOGIC_OP LogicOp; // applies to RGBA
722 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
723} D3D12_RENDER_TARGET_BLEND_DESC;
724
725typedef struct D3D12_BLEND_DESC
726{
727 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
728 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
729 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
730} D3D12_BLEND_DESC;
731
732cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
733cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
734
735
736////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
737//
738// Rasterizer State
739//
740////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
741
742typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
743{
744 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
745 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
746} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
747
748typedef struct D3D12_RASTERIZER_DESC
749{
750 D3D12_FILL_MODE FillMode;
751 D3D12_CULL_MODE CullMode;
752 BOOL FrontCounterClockwise;
753 INT DepthBias;
754 FLOAT DepthBiasClamp;
755 FLOAT SlopeScaledDepthBias;
756 BOOL DepthClipEnable;
757 BOOL MultisampleEnable;
758 BOOL AntialiasedLineEnable;
759 UINT ForcedSampleCount;
760 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
761} D3D12_RASTERIZER_DESC;
762
763////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
764//
765// Pipeline State v1
766//
767////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
768
769[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
770interface ID3D12RootSignature
771 : ID3D12DeviceChild
772{
773}
774
775typedef struct D3D12_SHADER_BYTECODE
776{
777 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
778 SIZE_T BytecodeLength;
779} D3D12_SHADER_BYTECODE;
780
781typedef struct D3D12_STREAM_OUTPUT_DESC
782{
783 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
784 UINT NumEntries;
785 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
786 UINT NumStrides;
787 UINT RasterizedStream;
788} D3D12_STREAM_OUTPUT_DESC;
789
790typedef struct D3D12_INPUT_LAYOUT_DESC
791{
792 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
793 UINT NumElements;
794} D3D12_INPUT_LAYOUT_DESC;
795
796typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
797{
798 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
799 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
800 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
801} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
802
803typedef struct D3D12_CACHED_PIPELINE_STATE
804{
805 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
806 SIZE_T CachedBlobSizeInBytes;
807} D3D12_CACHED_PIPELINE_STATE;
808
809typedef enum D3D12_PIPELINE_STATE_FLAGS
810{
811 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
812 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
813
814} D3D12_PIPELINE_STATE_FLAGS;
815cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );" )
816
817typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
818{
819 ID3D12RootSignature* pRootSignature;
820 D3D12_SHADER_BYTECODE VS;
821 D3D12_SHADER_BYTECODE PS;
822 D3D12_SHADER_BYTECODE DS;
823 D3D12_SHADER_BYTECODE HS;
824 D3D12_SHADER_BYTECODE GS;
825 D3D12_STREAM_OUTPUT_DESC StreamOutput;
826 D3D12_BLEND_DESC BlendState;
827 UINT SampleMask;
828 D3D12_RASTERIZER_DESC RasterizerState;
829 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
830 D3D12_INPUT_LAYOUT_DESC InputLayout;
831 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
832 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
833 UINT NumRenderTargets;
834 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
835 DXGI_FORMAT DSVFormat;
836 DXGI_SAMPLE_DESC SampleDesc;
837 UINT NodeMask;
838 D3D12_CACHED_PIPELINE_STATE CachedPSO;
839 D3D12_PIPELINE_STATE_FLAGS Flags;
840} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
841
842typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
843{
844 ID3D12RootSignature* pRootSignature;
845 D3D12_SHADER_BYTECODE CS;
846 UINT NodeMask;
847 D3D12_CACHED_PIPELINE_STATE CachedPSO;
848 D3D12_PIPELINE_STATE_FLAGS Flags;
849} D3D12_COMPUTE_PIPELINE_STATE_DESC;
850
851////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
852//
853// Pipeline State v2
854//
855////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
856
857struct D3D12_RT_FORMAT_ARRAY
858{
859 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
860 UINT NumRenderTargets;
861};
862
863typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
864{
865 [annotation("_In_")] SIZE_T SizeInBytes;
866 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
867} D3D12_PIPELINE_STATE_STREAM_DESC;
868
869typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
870{
871 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
872 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
873 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
874 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
875 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
876 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
877 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
878 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
879 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
880 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
881 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
882 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
883 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
884 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
885 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
886 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
887 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
888 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
889 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
890 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
891 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
892 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
893 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
894 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
895 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
896 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
897} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
898
899////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
900//
901// D3D12 Caps
902//
903////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
904
905typedef enum D3D12_FEATURE
906{
907 D3D12_FEATURE_D3D12_OPTIONS = 0,
908 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
909 D3D12_FEATURE_FEATURE_LEVELS = 2,
910 D3D12_FEATURE_FORMAT_SUPPORT = 3,
911 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
912 D3D12_FEATURE_FORMAT_INFO = 5,
913 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
914 D3D12_FEATURE_SHADER_MODEL = 7,
915 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
916 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
917 D3D12_FEATURE_ROOT_SIGNATURE = 12,
918 D3D12_FEATURE_ARCHITECTURE1 = 16,
919 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
920 D3D12_FEATURE_SHADER_CACHE = 19,
921 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
922 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
923 D3D12_FEATURE_EXISTING_HEAPS = 22,
924 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
925 D3D12_FEATURE_SERIALIZATION = 24,
926 D3D12_FEATURE_CROSS_NODE = 25,
927 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
928 D3D12_FEATURE_DISPLAYABLE = 28,
929 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
930 D3D12_FEATURE_QUERY_META_COMMAND = 31,
931 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
932 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
933 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
934 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
935 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
936 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
937 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
938} D3D12_FEATURE;
939
940typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
941{
942 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
943 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
944 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
945} D3D12_SHADER_MIN_PRECISION_SUPPORT;
946cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );" )
947
948typedef enum D3D12_TILED_RESOURCES_TIER
949{
950 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
951 D3D12_TILED_RESOURCES_TIER_1 = 1,
952 D3D12_TILED_RESOURCES_TIER_2 = 2,
953 D3D12_TILED_RESOURCES_TIER_3 = 3,
954 D3D12_TILED_RESOURCES_TIER_4 = 4,
955} D3D12_TILED_RESOURCES_TIER;
956
957typedef enum D3D12_RESOURCE_BINDING_TIER
958{
959 D3D12_RESOURCE_BINDING_TIER_1 = 1,
960 D3D12_RESOURCE_BINDING_TIER_2 = 2,
961 D3D12_RESOURCE_BINDING_TIER_3 = 3,
962} D3D12_RESOURCE_BINDING_TIER;
963
964typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
965 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
966 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
967 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
968 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
969} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
970
971
972typedef enum D3D12_FORMAT_SUPPORT1
973{
974 D3D12_FORMAT_SUPPORT1_NONE = 0,
975 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
976 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
977 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
978 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
979 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
980 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
981 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
982 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
983 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
984 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
985 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
986 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
987 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
988 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
989 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
990 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
991 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
992 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
993 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
994 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
995 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
996 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
997 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
998 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
999 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1000 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1001 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1002 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1003 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1004} D3D12_FORMAT_SUPPORT1;
1005cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );" )
1006
1007typedef enum D3D12_FORMAT_SUPPORT2
1008{
1009 D3D12_FORMAT_SUPPORT2_NONE = 0,
1010 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1011 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1012 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1013 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1014 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1015 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1016 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1017 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1018 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1019 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1020 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1021 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1022} D3D12_FORMAT_SUPPORT2;
1023cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );" )
1024
1025typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1026{
1027 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1028 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1029} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1030cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );" )
1031
1032typedef enum D3D12_CROSS_NODE_SHARING_TIER
1033{
1034 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1035 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1036 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1037 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1038 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1039} D3D12_CROSS_NODE_SHARING_TIER;
1040
1041typedef enum D3D12_RESOURCE_HEAP_TIER
1042{
1043 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1044 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1045} D3D12_RESOURCE_HEAP_TIER;
1046
1047typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1048{
1049 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1050 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1051 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1052} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1053
1054typedef enum D3D12_VIEW_INSTANCING_TIER
1055{
1056 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1057 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1058 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1059 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1060} D3D12_VIEW_INSTANCING_TIER;
1061
1062// D3D12_FEATURE_D3D12_OPTIONS
1063typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1064{
1065 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1066 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1067 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1068 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1069 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1070 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1071 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1072 [annotation("_Out_")] BOOL ROVsSupported;
1073 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1074 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1075 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1076 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1077 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1078 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1079 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1080} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1081
1082// D3D12_FEATURE_D3D12_OPTIONS1
1083typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1084{
1085 [annotation("_Out_")] BOOL WaveOps;
1086 [annotation("_Out_")] UINT WaveLaneCountMin;
1087 [annotation("_Out_")] UINT WaveLaneCountMax;
1088 [annotation("_Out_")] UINT TotalLaneCount;
1089 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1090 [annotation("_Out_")] BOOL Int64ShaderOps;
1091} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1092
1093// D3D12_FEATURE_D3D12_OPTIONS2
1094typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1095{
1096 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1097 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1098} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1099
1100// D3D12_FEATURE_ROOT_SIGNATURE
1101typedef enum D3D_ROOT_SIGNATURE_VERSION
1102{
1103 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
1104 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
1105 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
1106} D3D_ROOT_SIGNATURE_VERSION;
1107
1108typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1109{
1110 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1111} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1112
1113// D3D12_FEATURE_ARCHITECTURE
1114typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1115{
1116 [annotation("_In_")] UINT NodeIndex;
1117 [annotation("_Out_")] BOOL TileBasedRenderer;
1118 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1119 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1120} D3D12_FEATURE_DATA_ARCHITECTURE;
1121
1122// D3D12_FEATURE_ARCHITECTURE1
1123typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1124{
1125 [annotation("_In_")] UINT NodeIndex;
1126 [annotation("_Out_")] BOOL TileBasedRenderer;
1127 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1128 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1129 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1130} D3D12_FEATURE_DATA_ARCHITECTURE1;
1131
1132// D3D12_FEATURE_FEATURE_LEVELS
1133typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1134{
1135 [annotation("_In_")] UINT NumFeatureLevels;
1136 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1137 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1138} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1139
1140// D3D_SHADER_MODEL
1141typedef enum D3D_SHADER_MODEL
1142{
1143 D3D_SHADER_MODEL_5_1 = 0x51,
1144 D3D_SHADER_MODEL_6_0 = 0x60,
1145 D3D_SHADER_MODEL_6_1 = 0x61,
1146 D3D_SHADER_MODEL_6_2 = 0x62,
1147 D3D_SHADER_MODEL_6_3 = 0x63,
1148 D3D_SHADER_MODEL_6_4 = 0x64,
1149 D3D_SHADER_MODEL_6_5 = 0x65,
1150 D3D_SHADER_MODEL_6_6 = 0x66,
1151 D3D_SHADER_MODEL_6_7 = 0x67,
1152} D3D_SHADER_MODEL;
1153
1154typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1155{
1156 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1157} D3D12_FEATURE_DATA_SHADER_MODEL;
1158
1159// D3D12_FEATURE_FORMAT_SUPPORT
1160typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1161{
1162 [annotation("_In_")] DXGI_FORMAT Format;
1163 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1164 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1165} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1166
1167// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1168typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1169{
1170 [annotation("_In_")] DXGI_FORMAT Format;
1171 [annotation("_In_")] UINT SampleCount;
1172 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1173 [annotation("_Out_")] UINT NumQualityLevels;
1174} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1175
1176// D3D12_FEATURE_FORMAT_INFO
1177typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1178{
1179 DXGI_FORMAT Format;
1180 UINT8 PlaneCount;
1181} D3D12_FEATURE_DATA_FORMAT_INFO;
1182
1183// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1184typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1185{
1186 UINT MaxGPUVirtualAddressBitsPerResource;
1187 UINT MaxGPUVirtualAddressBitsPerProcess;
1188} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1189
1190
1191typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1192{
1193 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1194 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1195 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1196 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1197 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1198 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1199 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1200 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1201} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1202cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );" )
1203
1204// D3D12_FEATURE_SHADER_CACHE
1205typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1206{
1207 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1208} D3D12_FEATURE_DATA_SHADER_CACHE;
1209
1210// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1211typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1212{
1213 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1214 [annotation("_In_")] UINT Priority;
1215 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1216} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1217
1218typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1219{
1220 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1221 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1222 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1223 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1224 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1225 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1226 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1227 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1228
1229} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1230cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );")
1231
1232// D3D12_FEATURE_D3D12_OPTIONS3
1233typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1234{
1235 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1236 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1237 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1238 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1239 [annotation("_Out_")] BOOL BarycentricsSupported;
1240} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1241
1242// D3D12_FEATURE_EXISTING_HEAPS
1243typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1244{
1245 [annotation("_Out_")] BOOL Supported;
1246} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1247
1248typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1249{
1250 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1251 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1252 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1253 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3,
1254} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1255
1256typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1257{
1258 [annotation("_Out_")] BOOL DisplayableTexture;
1259 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1260} D3D12_FEATURE_DATA_DISPLAYABLE;
1261
1262// D3D12_FEATURE_D3D12_OPTIONS4
1263typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1264{
1265 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1266 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1267 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1268} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1269
1270typedef enum D3D12_HEAP_SERIALIZATION_TIER
1271{
1272 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1273 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1274} D3D12_HEAP_SERIALIZATION_TIER;
1275
1276// D3D12_FEATURE_SERIALIZATION
1277typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1278{
1279 [annotation("_In_")] UINT NodeIndex;
1280 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1281} D3D12_FEATURE_DATA_SERIALIZATION;
1282
1283// D3D12_FEATURE_CROSS_NODE
1284typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1285{
1286 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1287 BOOL AtomicShaderInstructions;
1288} D3D12_FEATURE_DATA_CROSS_NODE;
1289
1290
1291typedef enum D3D12_RENDER_PASS_TIER
1292{
1293 D3D12_RENDER_PASS_TIER_0 = 0,
1294 D3D12_RENDER_PASS_TIER_1 = 1,
1295 D3D12_RENDER_PASS_TIER_2 = 2,
1296
1297
1298} D3D12_RENDER_PASS_TIER;
1299
1300typedef enum D3D12_RAYTRACING_TIER
1301{
1302 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1303 D3D12_RAYTRACING_TIER_1_0 = 10,
1304 D3D12_RAYTRACING_TIER_1_1 = 11,
1305} D3D12_RAYTRACING_TIER;
1306
1307// D3D12_FEATURE_D3D12_OPTIONS5
1308typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1309{
1310 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1311 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1312 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1313} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1314
1315typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1316{
1317 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1318 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1319 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1320} D3D12_VARIABLE_SHADING_RATE_TIER;
1321
1322// D3D12_FEATURE_D3D12_OPTIONS6
1323typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1324{
1325 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1326 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1327 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1328 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1329 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1330} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1331
1332typedef enum D3D12_MESH_SHADER_TIER
1333{
1334 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1335 D3D12_MESH_SHADER_TIER_1 = 10,
1336} D3D12_MESH_SHADER_TIER;
1337
1338typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1339{
1340 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1341 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1342 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1343} D3D12_SAMPLER_FEEDBACK_TIER;
1344
1345// D3D12_FEATURE_D3D12_OPTIONS7
1346typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1347{
1348 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1349 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1350
1351} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1352
1353typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1354{
1355 [annotation("_In_")] GUID CommandId;
1356 [annotation("_In_")] UINT NodeMask;
1357 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1358 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1359 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1360 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1361} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1362
1363// D3D12_FEATURE_D3D12_OPTIONS8
1364typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1365{
1366 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1367} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1368
1369typedef enum D3D12_WAVE_MMA_TIER {
1370 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1371 D3D12_WAVE_MMA_TIER_1_0 = 10,
1372} D3D12_WAVE_MMA_TIER;
1373
1374// D3D12_FEATURE_D3D12_OPTIONS9
1375typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1376{
1377 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1378 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1379 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1380 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1381 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1382 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1383} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1384
1385// D3D12_FEATURE_D3D12_OPTIONS10
1386typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1387{
1388 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1389 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1390} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1391
1392// D3D12_FEATURE_D3D12_OPTIONS11
1393typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1394{
1395 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1396} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1397
1398
1399typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1400{
1401 UINT64 SizeInBytes;
1402 UINT64 Alignment;
1403} D3D12_RESOURCE_ALLOCATION_INFO;
1404
1405typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1406{
1407 UINT64 Offset;
1408 UINT64 Alignment;
1409 UINT64 SizeInBytes;
1410} D3D12_RESOURCE_ALLOCATION_INFO1;
1411
1412typedef enum D3D12_HEAP_TYPE
1413{
1414 D3D12_HEAP_TYPE_DEFAULT = 1,
1415 D3D12_HEAP_TYPE_UPLOAD = 2,
1416 D3D12_HEAP_TYPE_READBACK = 3,
1417 D3D12_HEAP_TYPE_CUSTOM = 4,
1418} D3D12_HEAP_TYPE;
1419
1420typedef enum D3D12_CPU_PAGE_PROPERTY
1421{
1422 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1423 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1424 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1425 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1426} D3D12_CPU_PAGE_PROPERTY;
1427
1428typedef enum D3D12_MEMORY_POOL
1429{
1430 D3D12_MEMORY_POOL_UNKNOWN = 0,
1431 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1432 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1433} D3D12_MEMORY_POOL;
1434
1435typedef struct D3D12_HEAP_PROPERTIES
1436{
1437 D3D12_HEAP_TYPE Type;
1438 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1439 D3D12_MEMORY_POOL MemoryPoolPreference;
1440 UINT CreationNodeMask;
1441 UINT VisibleNodeMask;
1442} D3D12_HEAP_PROPERTIES;
1443
1444typedef enum D3D12_HEAP_FLAGS
1445{
1446 D3D12_HEAP_FLAG_NONE = 0x0,
1447 D3D12_HEAP_FLAG_SHARED = 0x1,
1448 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1449 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1450 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1451 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1452 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1453 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1454 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1455 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1456 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1457 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1458
1459 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1460 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1461 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1462 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1463 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1464
1465
1466} D3D12_HEAP_FLAGS;
1467cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );" )
1468
1469typedef struct D3D12_HEAP_DESC
1470{
1471 UINT64 SizeInBytes;
1472 D3D12_HEAP_PROPERTIES Properties;
1473 UINT64 Alignment;
1474 D3D12_HEAP_FLAGS Flags;
1475} D3D12_HEAP_DESC;
1476
1477typedef enum D3D12_RESOURCE_DIMENSION
1478{
1479 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1480 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1481 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1482 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1483 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1484} D3D12_RESOURCE_DIMENSION;
1485
1486typedef enum D3D12_TEXTURE_LAYOUT
1487{
1488 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1489 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1490 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1491 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1492} D3D12_TEXTURE_LAYOUT;
1493
1494typedef enum D3D12_RESOURCE_FLAGS
1495{
1496 D3D12_RESOURCE_FLAG_NONE = 0x0,
1497 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1498 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1499 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1500 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1501 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1502 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1503 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1504 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1505
1506} D3D12_RESOURCE_FLAGS;
1507cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );" )
1508
1509typedef struct D3D12_MIP_REGION
1510{
1511 UINT Width;
1512 UINT Height;
1513 UINT Depth;
1514} D3D12_MIP_REGION;
1515
1516typedef struct D3D12_RESOURCE_DESC
1517{
1518 D3D12_RESOURCE_DIMENSION Dimension;
1519 UINT64 Alignment;
1520 UINT64 Width;
1521 UINT Height;
1522 UINT16 DepthOrArraySize;
1523 UINT16 MipLevels;
1524 DXGI_FORMAT Format;
1525 DXGI_SAMPLE_DESC SampleDesc;
1526 D3D12_TEXTURE_LAYOUT Layout;
1527 D3D12_RESOURCE_FLAGS Flags;
1528} D3D12_RESOURCE_DESC;
1529
1530typedef struct D3D12_RESOURCE_DESC1
1531{
1532 D3D12_RESOURCE_DIMENSION Dimension;
1533 UINT64 Alignment;
1534 UINT64 Width;
1535 UINT Height;
1536 UINT16 DepthOrArraySize;
1537 UINT16 MipLevels;
1538 DXGI_FORMAT Format;
1539 DXGI_SAMPLE_DESC SampleDesc;
1540 D3D12_TEXTURE_LAYOUT Layout;
1541 D3D12_RESOURCE_FLAGS Flags;
1542 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1543} D3D12_RESOURCE_DESC1;
1544
1545
1546typedef struct D3D12_DEPTH_STENCIL_VALUE
1547{
1548 FLOAT Depth;
1549 UINT8 Stencil;
1550} D3D12_DEPTH_STENCIL_VALUE;
1551
1552typedef struct D3D12_CLEAR_VALUE
1553{
1554 DXGI_FORMAT Format;
1555 union
1556 {
1557 FLOAT Color[4];
1558 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1559 };
1560} D3D12_CLEAR_VALUE;
1561
1562typedef struct D3D12_RANGE
1563{
1564 SIZE_T Begin;
1565 SIZE_T End; // One past end, so (End - Begin) = Size
1566} D3D12_RANGE;
1567
1568typedef struct D3D12_RANGE_UINT64
1569{
1570 UINT64 Begin;
1571 UINT64 End; // One past end, so (End - Begin) = Size
1572} D3D12_RANGE_UINT64;
1573
1574typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1575{
1576 UINT Subresource;
1577 D3D12_RANGE_UINT64 Range;
1578} D3D12_SUBRESOURCE_RANGE_UINT64;
1579
1580typedef struct D3D12_SUBRESOURCE_INFO
1581{
1582 UINT64 Offset;
1583 UINT RowPitch;
1584 UINT DepthPitch;
1585} D3D12_SUBRESOURCE_INFO;
1586
1587typedef struct D3D12_TILED_RESOURCE_COORDINATE
1588{
1589 UINT X;
1590 UINT Y;
1591 UINT Z;
1592 UINT Subresource;
1593} D3D12_TILED_RESOURCE_COORDINATE;
1594
1595typedef struct D3D12_TILE_REGION_SIZE
1596{
1597 UINT NumTiles;
1598 BOOL UseBox;
1599 UINT Width;
1600 UINT16 Height;
1601 UINT16 Depth;
1602} D3D12_TILE_REGION_SIZE;
1603
1604typedef enum D3D12_TILE_RANGE_FLAGS
1605{
1606 D3D12_TILE_RANGE_FLAG_NONE = 0,
1607 D3D12_TILE_RANGE_FLAG_NULL = 1,
1608 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1609 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1610
1611} D3D12_TILE_RANGE_FLAGS;
1612
1613typedef struct D3D12_SUBRESOURCE_TILING
1614{
1615 UINT WidthInTiles;
1616 UINT16 HeightInTiles;
1617 UINT16 DepthInTiles;
1618 UINT StartTileIndexInOverallResource;
1619} D3D12_SUBRESOURCE_TILING;
1620
1621typedef struct D3D12_TILE_SHAPE
1622{
1623 UINT WidthInTexels;
1624 UINT HeightInTexels;
1625 UINT DepthInTexels;
1626} D3D12_TILE_SHAPE;
1627
1628typedef struct D3D12_PACKED_MIP_INFO
1629{
1630 UINT8 NumStandardMips;
1631 UINT8 NumPackedMips;
1632 UINT NumTilesForPackedMips;
1633 UINT StartTileIndexInOverallResource;
1634} D3D12_PACKED_MIP_INFO;
1635
1636typedef enum D3D12_TILE_MAPPING_FLAGS
1637{
1638 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1639 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1640} D3D12_TILE_MAPPING_FLAGS;
1641cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );" )
1642
1643typedef enum D3D12_TILE_COPY_FLAGS
1644{
1645 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1646 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1647 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1648 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1649} D3D12_TILE_COPY_FLAGS;
1650cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );")
1651
1652// Resource Barrier
1653typedef enum D3D12_RESOURCE_STATES
1654{
1655 D3D12_RESOURCE_STATE_COMMON = 0,
1656
1657 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1658 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1659 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1660 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1661 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1662 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1663 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1664 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1665 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1666 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1667 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1668 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1669 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1670 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1671 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1672 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1673
1674 D3D12_RESOURCE_STATE_GENERIC_READ =
1675 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1676 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1677 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1678 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1679 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1680 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1681
1682 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
1683 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
1684 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
1685
1686 D3D12_RESOURCE_STATE_PRESENT = 0,
1687 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
1688
1689 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
1690 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
1691 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
1692 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
1693 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
1694 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
1695
1696} D3D12_RESOURCE_STATES;
1697cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );" )
1698
1699typedef enum D3D12_RESOURCE_BARRIER_TYPE
1700{
1701 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
1702 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
1703 D3D12_RESOURCE_BARRIER_TYPE_UAV,
1704} D3D12_RESOURCE_BARRIER_TYPE;
1705
1706interface ID3D12Resource;
1707
1708typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
1709{
1710 ID3D12Resource* pResource;
1711 UINT Subresource;
1712 D3D12_RESOURCE_STATES StateBefore;
1713 D3D12_RESOURCE_STATES StateAfter;
1714} D3D12_RESOURCE_TRANSITION_BARRIER;
1715
1716typedef struct D3D12_RESOURCE_ALIASING_BARRIER
1717{
1718 ID3D12Resource* pResourceBefore;
1719 ID3D12Resource* pResourceAfter;
1720} D3D12_RESOURCE_ALIASING_BARRIER;
1721
1722typedef struct D3D12_RESOURCE_UAV_BARRIER
1723{
1724 ID3D12Resource* pResource;
1725} D3D12_RESOURCE_UAV_BARRIER;
1726
1727typedef enum D3D12_RESOURCE_BARRIER_FLAGS
1728{
1729 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
1730 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
1731 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
1732} D3D12_RESOURCE_BARRIER_FLAGS;
1733cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );" )
1734
1735typedef struct D3D12_RESOURCE_BARRIER
1736{
1737 D3D12_RESOURCE_BARRIER_TYPE Type;
1738 D3D12_RESOURCE_BARRIER_FLAGS Flags;
1739
1740 union
1741 {
1742 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
1743 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
1744 D3D12_RESOURCE_UAV_BARRIER UAV;
1745 };
1746} D3D12_RESOURCE_BARRIER;
1747
1748typedef struct D3D12_SUBRESOURCE_FOOTPRINT
1749{
1750 DXGI_FORMAT Format;
1751 UINT Width;
1752 UINT Height;
1753 UINT Depth;
1754 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
1755} D3D12_SUBRESOURCE_FOOTPRINT;
1756
1757typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
1758{
1759 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
1760 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
1761} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
1762
1763typedef enum D3D12_TEXTURE_COPY_TYPE
1764{
1765 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
1766 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
1767} D3D12_TEXTURE_COPY_TYPE;
1768
1769typedef struct D3D12_TEXTURE_COPY_LOCATION
1770{
1771 ID3D12Resource* pResource;
1772 D3D12_TEXTURE_COPY_TYPE Type;
1773 union
1774 {
1775 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
1776 UINT SubresourceIndex;
1777 };
1778} D3D12_TEXTURE_COPY_LOCATION;
1779
1780typedef enum D3D12_RESOLVE_MODE
1781{
1782 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
1783 D3D12_RESOLVE_MODE_MIN = 1,
1784 D3D12_RESOLVE_MODE_MAX = 2,
1785 D3D12_RESOLVE_MODE_AVERAGE = 3,
1786 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
1787 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
1788} D3D12_RESOLVE_MODE;
1789
1790typedef struct D3D12_SAMPLE_POSITION
1791{
1792 INT8 X;
1793 INT8 Y;
1794} D3D12_SAMPLE_POSITION;
1795
1796typedef struct D3D12_VIEW_INSTANCE_LOCATION
1797{
1798 UINT ViewportArrayIndex;
1799 UINT RenderTargetArrayIndex;
1800} D3D12_VIEW_INSTANCE_LOCATION;
1801
1802typedef enum D3D12_VIEW_INSTANCING_FLAGS
1803{
1804 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
1805 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
1806} D3D12_VIEW_INSTANCING_FLAGS;
1807cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );")
1808
1809typedef struct D3D12_VIEW_INSTANCING_DESC
1810{
1811 UINT ViewInstanceCount;
1812 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
1813 D3D12_VIEW_INSTANCING_FLAGS Flags;
1814} D3D12_VIEW_INSTANCING_DESC;
1815
1816// D3D12 view descriptions
1817typedef enum D3D12_SHADER_COMPONENT_MAPPING
1818{
1819 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
1820 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
1821 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
1822 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
1823 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
1824 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
1825} D3D12_SHADER_COMPONENT_MAPPING;
1826
1827cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
1828cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
1829cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
1830cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
1831cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
1832cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
1833cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
1834cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
1835cpp_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))")
1836cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
1837typedef enum D3D12_BUFFER_SRV_FLAGS
1838{
1839 D3D12_BUFFER_SRV_FLAG_NONE = 0,
1840 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
1841} D3D12_BUFFER_SRV_FLAGS;
1842cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );" )
1843
1844typedef struct D3D12_BUFFER_SRV
1845{
1846 UINT64 FirstElement;
1847 UINT NumElements;
1848 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
1849 D3D12_BUFFER_SRV_FLAGS Flags;
1850} D3D12_BUFFER_SRV;
1851
1852typedef struct D3D12_TEX1D_SRV
1853{
1854 UINT MostDetailedMip;
1855 UINT MipLevels;
1856 FLOAT ResourceMinLODClamp;
1857} D3D12_TEX1D_SRV;
1858
1859typedef struct D3D12_TEX1D_ARRAY_SRV
1860{
1861 UINT MostDetailedMip;
1862 UINT MipLevels;
1863 UINT FirstArraySlice;
1864 UINT ArraySize;
1865 FLOAT ResourceMinLODClamp;
1866} D3D12_TEX1D_ARRAY_SRV;
1867
1868typedef struct D3D12_TEX2D_SRV
1869{
1870 UINT MostDetailedMip;
1871 UINT MipLevels;
1872 UINT PlaneSlice;
1873 FLOAT ResourceMinLODClamp;
1874} D3D12_TEX2D_SRV;
1875
1876typedef struct D3D12_TEX2D_ARRAY_SRV
1877{
1878 UINT MostDetailedMip;
1879 UINT MipLevels;
1880 UINT FirstArraySlice;
1881 UINT ArraySize;
1882 UINT PlaneSlice;
1883 FLOAT ResourceMinLODClamp;
1884} D3D12_TEX2D_ARRAY_SRV;
1885
1886typedef struct D3D12_TEX3D_SRV
1887{
1888 UINT MostDetailedMip;
1889 UINT MipLevels;
1890 FLOAT ResourceMinLODClamp;
1891} D3D12_TEX3D_SRV;
1892
1893typedef struct D3D12_TEXCUBE_SRV
1894{
1895 UINT MostDetailedMip;
1896 UINT MipLevels;
1897 FLOAT ResourceMinLODClamp;
1898} D3D12_TEXCUBE_SRV;
1899
1900typedef struct D3D12_TEXCUBE_ARRAY_SRV
1901{
1902 UINT MostDetailedMip;
1903 UINT MipLevels;
1904 UINT First2DArrayFace;
1905 UINT NumCubes;
1906 FLOAT ResourceMinLODClamp;
1907} D3D12_TEXCUBE_ARRAY_SRV;
1908
1909typedef struct D3D12_TEX2DMS_SRV
1910{
1911 // don't need to define anything specific for this view dimension
1912 UINT UnusedField_NothingToDefine;
1913} D3D12_TEX2DMS_SRV;
1914
1915typedef struct D3D12_TEX2DMS_ARRAY_SRV
1916{
1917 UINT FirstArraySlice;
1918 UINT ArraySize;
1919} D3D12_TEX2DMS_ARRAY_SRV;
1920
1921typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
1922{
1923 D3D12_GPU_VIRTUAL_ADDRESS Location;
1924} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
1925
1926typedef enum D3D12_SRV_DIMENSION {
1927 D3D12_SRV_DIMENSION_UNKNOWN = 0,
1928 D3D12_SRV_DIMENSION_BUFFER = 1,
1929 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
1930 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
1931 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
1932 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
1933 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
1934 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
1935 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
1936 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
1937 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
1938 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
1939} D3D12_SRV_DIMENSION;
1940
1941typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
1942{
1943 DXGI_FORMAT Format;
1944 D3D12_SRV_DIMENSION ViewDimension;
1945 UINT Shader4ComponentMapping;
1946
1947 union
1948 {
1949 D3D12_BUFFER_SRV Buffer;
1950 D3D12_TEX1D_SRV Texture1D;
1951 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
1952 D3D12_TEX2D_SRV Texture2D;
1953 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
1954 D3D12_TEX2DMS_SRV Texture2DMS;
1955 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1956 D3D12_TEX3D_SRV Texture3D;
1957 D3D12_TEXCUBE_SRV TextureCube;
1958 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
1959 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
1960 };
1961} D3D12_SHADER_RESOURCE_VIEW_DESC;
1962
1963typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
1964{
1965 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
1966 UINT SizeInBytes;
1967} D3D12_CONSTANT_BUFFER_VIEW_DESC;
1968
1969////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1970//
1971// Sampler
1972//
1973////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1974typedef enum D3D12_FILTER
1975{
1976 // Bits used in defining enumeration of valid filters:
1977 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
1978 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
1979 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
1980 // bit [6] - aniso
1981 // bits [8:7] - reduction type:
1982 // 0 == standard filtering
1983 // 1 == comparison
1984 // 2 == min
1985 // 3 == max
1986 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
1987
1988 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
1989 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
1990 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
1991 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
1992 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
1993 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
1994 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
1995 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
1996 D3D12_FILTER_ANISOTROPIC = 0x00000055,
1997 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
1998 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
1999 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2000 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2001 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2002 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2003 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2004 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2005 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2006 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2007 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2008 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2009 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2010 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2011 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2012 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2013 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2014 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2015 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2016 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2017 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2018 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2019 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2020 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2021 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2022 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2023 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2024} D3D12_FILTER;
2025
2026typedef enum D3D12_FILTER_TYPE
2027{
2028 D3D12_FILTER_TYPE_POINT = 0,
2029 D3D12_FILTER_TYPE_LINEAR = 1,
2030} D3D12_FILTER_TYPE;
2031
2032typedef enum D3D12_FILTER_REDUCTION_TYPE
2033{
2034 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2035 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2036 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2037 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2038} D3D12_FILTER_REDUCTION_TYPE;
2039
2040const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2041const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2042
2043const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2044const UINT D3D12_MIN_FILTER_SHIFT = 4;
2045const UINT D3D12_MAG_FILTER_SHIFT = 2;
2046const UINT D3D12_MIP_FILTER_SHIFT = 0;
2047
2048const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2049
2050// encode enum entry for most filters except anisotropic filtering
2051cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2052cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2053cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2054cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2055cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2056cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2057
2058// encode enum entry for anisotropic filtering (with or without comparison filtering)
2059cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2060cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2061cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2062cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2063cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2064cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2065cpp_quote( " reduction ) ) ) " )
2066
2067cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2068cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2069cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2070
2071cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2072cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2073cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2074
2075cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2076cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2077cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2078
2079cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2080cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2081cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2082
2083cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2084cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2085
2086cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2087cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2088cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2089cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \\" )
2090cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) ) " )
2091
2092typedef enum D3D12_TEXTURE_ADDRESS_MODE
2093{
2094 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2095 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2096 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2097 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2098 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2099} D3D12_TEXTURE_ADDRESS_MODE;
2100
2101typedef struct D3D12_SAMPLER_DESC
2102{
2103 D3D12_FILTER Filter;
2104 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2105 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2106 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2107 FLOAT MipLODBias;
2108 UINT MaxAnisotropy;
2109 D3D12_COMPARISON_FUNC ComparisonFunc;
2110 FLOAT BorderColor[4]; // RGBA
2111 FLOAT MinLOD;
2112 FLOAT MaxLOD;
2113} D3D12_SAMPLER_DESC;
2114
2115typedef enum D3D12_BUFFER_UAV_FLAGS
2116{
2117 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2118 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2119} D3D12_BUFFER_UAV_FLAGS;
2120cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );" )
2121
2122typedef struct D3D12_BUFFER_UAV
2123{
2124 UINT64 FirstElement;
2125 UINT NumElements;
2126 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2127 UINT64 CounterOffsetInBytes;
2128 D3D12_BUFFER_UAV_FLAGS Flags;
2129} D3D12_BUFFER_UAV;
2130
2131typedef struct D3D12_TEX1D_UAV
2132{
2133 UINT MipSlice;
2134} D3D12_TEX1D_UAV;
2135
2136typedef struct D3D12_TEX1D_ARRAY_UAV
2137{
2138 UINT MipSlice;
2139 UINT FirstArraySlice;
2140 UINT ArraySize;
2141} D3D12_TEX1D_ARRAY_UAV;
2142
2143typedef struct D3D12_TEX2D_UAV
2144{
2145 UINT MipSlice;
2146 UINT PlaneSlice;
2147} D3D12_TEX2D_UAV;
2148
2149typedef struct D3D12_TEX2D_ARRAY_UAV
2150{
2151 UINT MipSlice;
2152 UINT FirstArraySlice;
2153 UINT ArraySize;
2154 UINT PlaneSlice;
2155} D3D12_TEX2D_ARRAY_UAV;
2156
2157typedef struct D3D12_TEX3D_UAV
2158{
2159 UINT MipSlice;
2160 UINT FirstWSlice;
2161 UINT WSize;
2162} D3D12_TEX3D_UAV;
2163
2164typedef enum D3D12_UAV_DIMENSION
2165{
2166 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2167 D3D12_UAV_DIMENSION_BUFFER = 1,
2168 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2169 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2170 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2171 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2172 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2173} D3D12_UAV_DIMENSION;
2174
2175typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2176{
2177 DXGI_FORMAT Format;
2178 D3D12_UAV_DIMENSION ViewDimension;
2179
2180 union
2181 {
2182 D3D12_BUFFER_UAV Buffer;
2183 D3D12_TEX1D_UAV Texture1D;
2184 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2185 D3D12_TEX2D_UAV Texture2D;
2186 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2187 D3D12_TEX3D_UAV Texture3D;
2188 };
2189} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2190
2191typedef struct D3D12_BUFFER_RTV
2192{
2193 UINT64 FirstElement;
2194 UINT NumElements;
2195} D3D12_BUFFER_RTV;
2196
2197typedef struct D3D12_TEX1D_RTV
2198{
2199 UINT MipSlice;
2200} D3D12_TEX1D_RTV;
2201
2202typedef struct D3D12_TEX1D_ARRAY_RTV
2203{
2204 UINT MipSlice;
2205 UINT FirstArraySlice;
2206 UINT ArraySize;
2207} D3D12_TEX1D_ARRAY_RTV;
2208
2209typedef struct D3D12_TEX2D_RTV
2210{
2211 UINT MipSlice;
2212 UINT PlaneSlice;
2213} D3D12_TEX2D_RTV;
2214
2215typedef struct D3D12_TEX2DMS_RTV
2216{
2217 UINT UnusedField_NothingToDefine;
2218} D3D12_TEX2DMS_RTV;
2219
2220typedef struct D3D12_TEX2D_ARRAY_RTV
2221{
2222 UINT MipSlice;
2223 UINT FirstArraySlice;
2224 UINT ArraySize;
2225 UINT PlaneSlice;
2226} D3D12_TEX2D_ARRAY_RTV;
2227
2228typedef struct D3D12_TEX2DMS_ARRAY_RTV
2229{
2230 UINT FirstArraySlice;
2231 UINT ArraySize;
2232} D3D12_TEX2DMS_ARRAY_RTV;
2233
2234typedef struct D3D12_TEX3D_RTV
2235{
2236 UINT MipSlice;
2237 UINT FirstWSlice;
2238 UINT WSize;
2239} D3D12_TEX3D_RTV;
2240
2241typedef enum D3D12_RTV_DIMENSION
2242{
2243 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2244 D3D12_RTV_DIMENSION_BUFFER = 1,
2245 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2246 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2247 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2248 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2249 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2250 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2251 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2252} D3D12_RTV_DIMENSION;
2253
2254typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2255{
2256 DXGI_FORMAT Format;
2257 D3D12_RTV_DIMENSION ViewDimension;
2258
2259 union
2260 {
2261 D3D12_BUFFER_RTV Buffer;
2262 D3D12_TEX1D_RTV Texture1D;
2263 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2264 D3D12_TEX2D_RTV Texture2D;
2265 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2266 D3D12_TEX2DMS_RTV Texture2DMS;
2267 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2268 D3D12_TEX3D_RTV Texture3D;
2269 };
2270} D3D12_RENDER_TARGET_VIEW_DESC;
2271
2272typedef struct D3D12_TEX1D_DSV
2273{
2274 UINT MipSlice;
2275} D3D12_TEX1D_DSV;
2276
2277typedef struct D3D12_TEX1D_ARRAY_DSV
2278{
2279 UINT MipSlice;
2280 UINT FirstArraySlice;
2281 UINT ArraySize;
2282} D3D12_TEX1D_ARRAY_DSV;
2283
2284typedef struct D3D12_TEX2D_DSV
2285{
2286 UINT MipSlice;
2287} D3D12_TEX2D_DSV;
2288
2289typedef struct D3D12_TEX2D_ARRAY_DSV
2290{
2291 UINT MipSlice;
2292 UINT FirstArraySlice;
2293 UINT ArraySize;
2294} D3D12_TEX2D_ARRAY_DSV;
2295
2296typedef struct D3D12_TEX2DMS_DSV
2297{
2298 UINT UnusedField_NothingToDefine;
2299} D3D12_TEX2DMS_DSV;
2300
2301typedef struct D3D12_TEX2DMS_ARRAY_DSV
2302{
2303 UINT FirstArraySlice;
2304 UINT ArraySize;
2305} D3D12_TEX2DMS_ARRAY_DSV;
2306
2307typedef enum D3D12_DSV_FLAGS
2308{
2309 D3D12_DSV_FLAG_NONE = 0x0,
2310 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2311 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2312} D3D12_DSV_FLAGS;
2313cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );" )
2314
2315typedef enum D3D12_DSV_DIMENSION
2316{
2317 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2318 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2319 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2320 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2321 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2322 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2323 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2324} D3D12_DSV_DIMENSION;
2325
2326typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2327{
2328 DXGI_FORMAT Format;
2329 D3D12_DSV_DIMENSION ViewDimension;
2330 D3D12_DSV_FLAGS Flags;
2331
2332 union
2333 {
2334 D3D12_TEX1D_DSV Texture1D;
2335 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2336 D3D12_TEX2D_DSV Texture2D;
2337 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2338 D3D12_TEX2DMS_DSV Texture2DMS;
2339 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2340 };
2341} D3D12_DEPTH_STENCIL_VIEW_DESC;
2342
2343typedef enum D3D12_CLEAR_FLAGS
2344{
2345 // Intentionally no flag for NONE
2346 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2347 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2348} D3D12_CLEAR_FLAGS;
2349cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );" )
2350
2351typedef enum D3D12_FENCE_FLAGS
2352{
2353 D3D12_FENCE_FLAG_NONE = 0x0,
2354 D3D12_FENCE_FLAG_SHARED = 0x1,
2355 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2356 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2357} D3D12_FENCE_FLAGS;
2358cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );" )
2359
2360typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2361{
2362 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2363 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2364 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2365 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2366 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2367} D3D12_DESCRIPTOR_HEAP_TYPE;
2368
2369typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2370{
2371 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2372 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2373} D3D12_DESCRIPTOR_HEAP_FLAGS;
2374cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );" )
2375
2376typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2377{
2378 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2379 UINT NumDescriptors;
2380 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2381 UINT NodeMask;
2382} D3D12_DESCRIPTOR_HEAP_DESC;
2383
2384typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2385{
2386 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2387 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2388 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2389 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2390} D3D12_DESCRIPTOR_RANGE_TYPE;
2391
2392typedef struct D3D12_DESCRIPTOR_RANGE
2393{
2394 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2395 UINT NumDescriptors;
2396 UINT BaseShaderRegister;
2397 UINT RegisterSpace;
2398 UINT OffsetInDescriptorsFromTableStart;
2399} D3D12_DESCRIPTOR_RANGE;
2400
2401
2402typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2403{
2404 UINT NumDescriptorRanges;
2405 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2406} D3D12_ROOT_DESCRIPTOR_TABLE;
2407
2408
2409typedef struct D3D12_ROOT_CONSTANTS
2410{
2411 UINT ShaderRegister;
2412 UINT RegisterSpace;
2413 UINT Num32BitValues;
2414} D3D12_ROOT_CONSTANTS;
2415
2416typedef struct D3D12_ROOT_DESCRIPTOR
2417{
2418 UINT ShaderRegister;
2419 UINT RegisterSpace;
2420} D3D12_ROOT_DESCRIPTOR;
2421
2422typedef enum D3D12_SHADER_VISIBILITY
2423{
2424 D3D12_SHADER_VISIBILITY_ALL = 0,
2425 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2426 D3D12_SHADER_VISIBILITY_HULL = 2,
2427 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2428 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2429 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2430 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2431 D3D12_SHADER_VISIBILITY_MESH = 7,
2432} D3D12_SHADER_VISIBILITY;
2433
2434typedef enum D3D12_ROOT_PARAMETER_TYPE
2435{
2436 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2437 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2438 D3D12_ROOT_PARAMETER_TYPE_CBV,
2439 D3D12_ROOT_PARAMETER_TYPE_SRV,
2440 D3D12_ROOT_PARAMETER_TYPE_UAV
2441} D3D12_ROOT_PARAMETER_TYPE;
2442
2443typedef struct D3D12_ROOT_PARAMETER
2444{
2445 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2446 union
2447 {
2448 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2449 D3D12_ROOT_CONSTANTS Constants;
2450 D3D12_ROOT_DESCRIPTOR Descriptor;
2451 };
2452 D3D12_SHADER_VISIBILITY ShaderVisibility;
2453} D3D12_ROOT_PARAMETER;
2454
2455typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2456{
2457 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2458 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2459 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2460 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2461 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2462 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2463 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2464 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2465 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2466 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2467 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2468 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2469 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2470} D3D12_ROOT_SIGNATURE_FLAGS;
2471cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );" )
2472
2473typedef enum D3D12_STATIC_BORDER_COLOR
2474{
2475 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2476 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2477 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2478} D3D12_STATIC_BORDER_COLOR;
2479
2480typedef struct D3D12_STATIC_SAMPLER_DESC
2481{
2482 D3D12_FILTER Filter;
2483 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2484 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2485 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2486 FLOAT MipLODBias;
2487 UINT MaxAnisotropy;
2488 D3D12_COMPARISON_FUNC ComparisonFunc;
2489 D3D12_STATIC_BORDER_COLOR BorderColor;
2490 FLOAT MinLOD;
2491 FLOAT MaxLOD;
2492 UINT ShaderRegister;
2493 UINT RegisterSpace;
2494 D3D12_SHADER_VISIBILITY ShaderVisibility;
2495} D3D12_STATIC_SAMPLER_DESC;
2496
2497
2498typedef struct D3D12_ROOT_SIGNATURE_DESC
2499{
2500 UINT NumParameters;
2501 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2502 UINT NumStaticSamplers;
2503 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2504 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2505} D3D12_ROOT_SIGNATURE_DESC;
2506
2507typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2508{
2509 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2510 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2511 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2512 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2513 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2514 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2515} D3D12_DESCRIPTOR_RANGE_FLAGS;
2516cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );")
2517
2518typedef struct D3D12_DESCRIPTOR_RANGE1
2519{
2520 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2521 UINT NumDescriptors;
2522 UINT BaseShaderRegister;
2523 UINT RegisterSpace;
2524 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2525 UINT OffsetInDescriptorsFromTableStart;
2526} D3D12_DESCRIPTOR_RANGE1;
2527
2528typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2529{
2530 UINT NumDescriptorRanges;
2531 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2532} D3D12_ROOT_DESCRIPTOR_TABLE1;
2533
2534typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2535{
2536 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2537 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2538 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2539 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2540} D3D12_ROOT_DESCRIPTOR_FLAGS;
2541cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );")
2542
2543typedef struct D3D12_ROOT_DESCRIPTOR1
2544{
2545 UINT ShaderRegister;
2546 UINT RegisterSpace;
2547 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2548} D3D12_ROOT_DESCRIPTOR1;
2549
2550typedef struct D3D12_ROOT_PARAMETER1
2551{
2552 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2553 union
2554 {
2555 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2556 D3D12_ROOT_CONSTANTS Constants;
2557 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2558 };
2559 D3D12_SHADER_VISIBILITY ShaderVisibility;
2560} D3D12_ROOT_PARAMETER1;
2561
2562typedef struct D3D12_ROOT_SIGNATURE_DESC1
2563{
2564 UINT NumParameters;
2565 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2566 UINT NumStaticSamplers;
2567 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2568 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2569} D3D12_ROOT_SIGNATURE_DESC1;
2570
2571
2572typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2573{
2574 D3D_ROOT_SIGNATURE_VERSION Version;
2575 union
2576 {
2577 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2578 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2579 };
2580} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2581
2582[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2583interface ID3D12RootSignatureDeserializer
2584 : IUnknown
2585{
2586 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2587};
2588
2589[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2590interface ID3D12VersionedRootSignatureDeserializer
2591 : IUnknown
2592{
2593 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
2594 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2595};
2596
2597cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
2598cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2599cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2600cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2601cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2602cpp_quote( "" )
2603cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
2604cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2605cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2606cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2607cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2608cpp_quote( "" )
2609cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
2610cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2611cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2612cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2613cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2614cpp_quote( "" )
2615cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
2616cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2617cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2618cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2619cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2620cpp_quote( "" )
2621cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
2622cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2623cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2624cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2625cpp_quote( "" )
2626cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
2627cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2628cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2629cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2630cpp_quote( "" )
2631cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
2632cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2633cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2634cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2635cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2636cpp_quote( "" )
2637cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
2638cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2639cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2640cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2641cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2642cpp_quote( "" )
2643
2644
2645
2646typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
2647{
2648 SIZE_T ptr;
2649} D3D12_CPU_DESCRIPTOR_HANDLE;
2650
2651
2652typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
2653{
2654 UINT64 ptr;
2655} D3D12_GPU_DESCRIPTOR_HANDLE;
2656
2657cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
2658cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
2659typedef struct D3D12_DISCARD_REGION
2660{
2661 UINT NumRects;
2662 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
2663 UINT FirstSubresource;
2664 UINT NumSubresources;
2665} D3D12_DISCARD_REGION;
2666
2667typedef enum D3D12_QUERY_HEAP_TYPE
2668{
2669 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
2670 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
2671 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
2672 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
2673 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
2674 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
2675 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
2676
2677} D3D12_QUERY_HEAP_TYPE;
2678
2679typedef struct D3D12_QUERY_HEAP_DESC
2680{
2681 D3D12_QUERY_HEAP_TYPE Type;
2682 UINT Count;
2683 UINT NodeMask;
2684} D3D12_QUERY_HEAP_DESC;
2685
2686typedef enum D3D12_QUERY_TYPE
2687{
2688 D3D12_QUERY_TYPE_OCCLUSION = 0,
2689 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
2690 D3D12_QUERY_TYPE_TIMESTAMP = 2,
2691 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
2692 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
2693 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
2694 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
2695 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
2696 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
2697 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
2698
2699} D3D12_QUERY_TYPE;
2700
2701typedef enum D3D12_PREDICATION_OP
2702{
2703 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
2704 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
2705} D3D12_PREDICATION_OP;
2706
2707typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
2708{
2709 UINT64 IAVertices;
2710 UINT64 IAPrimitives;
2711 UINT64 VSInvocations;
2712 UINT64 GSInvocations;
2713 UINT64 GSPrimitives;
2714 UINT64 CInvocations;
2715 UINT64 CPrimitives;
2716 UINT64 PSInvocations;
2717 UINT64 HSInvocations;
2718 UINT64 DSInvocations;
2719 UINT64 CSInvocations;
2720} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
2721
2722typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
2723{
2724 UINT64 IAVertices;
2725 UINT64 IAPrimitives;
2726 UINT64 VSInvocations;
2727 UINT64 GSInvocations;
2728 UINT64 GSPrimitives;
2729 UINT64 CInvocations;
2730 UINT64 CPrimitives;
2731 UINT64 PSInvocations;
2732 UINT64 HSInvocations;
2733 UINT64 DSInvocations;
2734 UINT64 CSInvocations;
2735 UINT64 ASInvocations;
2736 UINT64 MSInvocations;
2737 UINT64 MSPrimitives;
2738} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
2739
2740typedef struct D3D12_QUERY_DATA_SO_STATISTICS
2741{
2742 UINT64 NumPrimitivesWritten;
2743 UINT64 PrimitivesStorageNeeded;
2744} D3D12_QUERY_DATA_SO_STATISTICS;
2745
2746typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
2747{
2748 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2749 UINT64 SizeInBytes;
2750 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
2751} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
2752
2753typedef struct D3D12_DRAW_ARGUMENTS
2754{
2755 UINT VertexCountPerInstance;
2756 UINT InstanceCount;
2757 UINT StartVertexLocation;
2758 UINT StartInstanceLocation;
2759} D3D12_DRAW_ARGUMENTS;
2760
2761typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
2762{
2763 UINT IndexCountPerInstance;
2764 UINT InstanceCount;
2765 UINT StartIndexLocation;
2766 INT BaseVertexLocation;
2767 UINT StartInstanceLocation;
2768} D3D12_DRAW_INDEXED_ARGUMENTS;
2769
2770typedef struct D3D12_DISPATCH_ARGUMENTS
2771{
2772 UINT ThreadGroupCountX;
2773 UINT ThreadGroupCountY;
2774 UINT ThreadGroupCountZ;
2775} D3D12_DISPATCH_ARGUMENTS;
2776
2777typedef struct D3D12_VERTEX_BUFFER_VIEW
2778{
2779 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2780 UINT SizeInBytes;
2781 UINT StrideInBytes;
2782} D3D12_VERTEX_BUFFER_VIEW;
2783
2784typedef struct D3D12_INDEX_BUFFER_VIEW
2785{
2786 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2787 UINT SizeInBytes;
2788 DXGI_FORMAT Format;
2789} D3D12_INDEX_BUFFER_VIEW;
2790
2791typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
2792{
2793 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
2794 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
2795 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
2796 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
2797 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
2798 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
2799 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
2800 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
2801 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
2802 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
2803 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
2804} D3D12_INDIRECT_ARGUMENT_TYPE;
2805
2806typedef struct D3D12_INDIRECT_ARGUMENT_DESC
2807{
2808 D3D12_INDIRECT_ARGUMENT_TYPE Type;
2809
2810 union
2811 {
2812 struct
2813 {
2814 UINT Slot;
2815 } VertexBuffer;
2816
2817 struct
2818 {
2819 UINT RootParameterIndex;
2820 UINT DestOffsetIn32BitValues;
2821 UINT Num32BitValuesToSet;
2822 } Constant;
2823
2824 struct
2825 {
2826 UINT RootParameterIndex;
2827 } ConstantBufferView;
2828
2829 struct
2830 {
2831 UINT RootParameterIndex;
2832 } ShaderResourceView;
2833
2834 struct
2835 {
2836 UINT RootParameterIndex;
2837 } UnorderedAccessView;
2838 };
2839} D3D12_INDIRECT_ARGUMENT_DESC;
2840
2841typedef struct D3D12_COMMAND_SIGNATURE_DESC
2842{
2843 // The number of bytes between each drawing structure
2844 UINT ByteStride;
2845 UINT NumArgumentDescs;
2846 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
2847 UINT NodeMask;
2848} D3D12_COMMAND_SIGNATURE_DESC;
2849
2850interface ID3D12Device;
2851
2852[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
2853interface ID3D12Object
2854 : IUnknown
2855{
2856 HRESULT GetPrivateData(
2857 [annotation("_In_")] REFGUID guid,
2858 [annotation("_Inout_")] UINT* pDataSize,
2859 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
2860 HRESULT SetPrivateData(
2861 [annotation("_In_")] REFGUID guid,
2862 [annotation("_In_")] UINT DataSize,
2863 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
2864 HRESULT SetPrivateDataInterface(
2865 [annotation("_In_")] REFGUID guid,
2866 [annotation("_In_opt_")] const IUnknown* pData );
2867 HRESULT SetName(
2868 [annotation("_In_z_")] LPCWSTR Name );
2869}
2870
2871[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
2872interface ID3D12DeviceChild
2873 : ID3D12Object
2874{
2875 HRESULT GetDevice(
2876 [in] REFIID riid,
2877 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
2878 );
2879}
2880
2881[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
2882interface ID3D12Pageable
2883 : ID3D12DeviceChild
2884{
2885}
2886
2887[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
2888interface ID3D12Heap
2889 : ID3D12Pageable
2890{
2891 D3D12_HEAP_DESC GetDesc();
2892}
2893
2894[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
2895interface ID3D12Resource
2896 : ID3D12Pageable
2897{
2898 HRESULT Map(
2899 UINT Subresource,
2900 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
2901 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
2902
2903 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
2904
2905 D3D12_RESOURCE_DESC GetDesc();
2906
2907 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
2908
2909 HRESULT WriteToSubresource(
2910 UINT DstSubresource,
2911 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
2912 [annotation("_In_")] const void* pSrcData,
2913 UINT SrcRowPitch,
2914 UINT SrcDepthPitch );
2915
2916 HRESULT ReadFromSubresource(
2917 [annotation("_Out_")] void* pDstData,
2918 UINT DstRowPitch,
2919 UINT DstDepthPitch,
2920 UINT SrcSubresource,
2921 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
2922
2923 HRESULT GetHeapProperties(
2924 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
2925 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
2926 );
2927}
2928
2929[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
2930interface ID3D12CommandAllocator
2931 : ID3D12Pageable
2932{
2933 HRESULT Reset();
2934}
2935
2936[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
2937interface ID3D12Fence
2938 : ID3D12Pageable
2939{
2940 UINT64 GetCompletedValue();
2941 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
2942 HRESULT Signal(UINT64 Value);
2943};
2944
2945[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
2946interface ID3D12Fence1
2947 : ID3D12Fence
2948{
2949 D3D12_FENCE_FLAGS GetCreationFlags();
2950};
2951
2952[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
2953interface ID3D12PipelineState
2954 : ID3D12Pageable
2955{
2956 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
2957}
2958
2959[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
2960interface ID3D12DescriptorHeap
2961 : ID3D12Pageable
2962{
2963 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
2964
2965 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
2966 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
2967}
2968
2969[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
2970interface ID3D12QueryHeap
2971 : ID3D12Pageable
2972{
2973};
2974
2975[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
2976interface ID3D12CommandSignature
2977 : ID3D12Pageable
2978{
2979};
2980
2981[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
2982interface ID3D12CommandList
2983 : ID3D12DeviceChild
2984{
2985 D3D12_COMMAND_LIST_TYPE GetType();
2986}
2987
2988// Superseded by ID3D12GraphicsCommandList1
2989[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
2990interface ID3D12GraphicsCommandList
2991 : ID3D12CommandList
2992{
2993 HRESULT Close();
2994
2995 HRESULT Reset(
2996 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
2997 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
2998 );
2999
3000 void ClearState(
3001 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3002 );
3003
3004 void DrawInstanced(
3005 [annotation("_In_")] UINT VertexCountPerInstance,
3006 [annotation("_In_")] UINT InstanceCount,
3007 [annotation("_In_")] UINT StartVertexLocation,
3008 [annotation("_In_")] UINT StartInstanceLocation
3009 );
3010
3011 void DrawIndexedInstanced(
3012 [annotation("_In_")] UINT IndexCountPerInstance,
3013 [annotation("_In_")] UINT InstanceCount,
3014 [annotation("_In_")] UINT StartIndexLocation,
3015 [annotation("_In_")] INT BaseVertexLocation,
3016 [annotation("_In_")] UINT StartInstanceLocation
3017 );
3018
3019 void Dispatch(
3020 [annotation("_In_")] UINT ThreadGroupCountX,
3021 [annotation("_In_")] UINT ThreadGroupCountY,
3022 [annotation("_In_")] UINT ThreadGroupCountZ
3023 );
3024
3025 void CopyBufferRegion(
3026 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3027 UINT64 DstOffset,
3028 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3029 UINT64 SrcOffset,
3030 UINT64 NumBytes
3031 );
3032
3033 void CopyTextureRegion(
3034 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3035 UINT DstX, UINT DstY, UINT DstZ,
3036 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3037 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3038 );
3039
3040 void CopyResource(
3041 [annotation("_In_")] ID3D12Resource* pDstResource,
3042 [annotation("_In_")] ID3D12Resource* pSrcResource
3043 );
3044
3045 void CopyTiles(
3046 [annotation("_In_")] ID3D12Resource* pTiledResource,
3047 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3048 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3049 [annotation("_In_")] ID3D12Resource* pBuffer,
3050 UINT64 BufferStartOffsetInBytes,
3051 D3D12_TILE_COPY_FLAGS Flags
3052 );
3053
3054 void ResolveSubresource(
3055 [annotation("_In_")] ID3D12Resource* pDstResource,
3056 [annotation("_In_")] UINT DstSubresource,
3057 [annotation("_In_")] ID3D12Resource* pSrcResource,
3058 [annotation("_In_")] UINT SrcSubresource,
3059 [annotation("_In_")] DXGI_FORMAT Format
3060 );
3061
3062 void IASetPrimitiveTopology(
3063 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3064 );
3065
3066 void RSSetViewports(
3067 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3068 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3069 );
3070
3071 void RSSetScissorRects(
3072 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3073 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3074 );
3075
3076 void OMSetBlendFactor(
3077 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3078 );
3079
3080 void OMSetStencilRef(
3081 [annotation("_In_")] UINT StencilRef
3082 );
3083
3084 void SetPipelineState(
3085 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3086 );
3087
3088 void ResourceBarrier(
3089 [annotation("_In_")] UINT NumBarriers,
3090 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3091 );
3092
3093 void ExecuteBundle(
3094 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3095 );
3096
3097 void SetDescriptorHeaps(
3098 [annotation("_In_")] UINT NumDescriptorHeaps,
3099 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3100 );
3101
3102 void SetComputeRootSignature(
3103 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3104 );
3105
3106 void SetGraphicsRootSignature(
3107 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3108 );
3109
3110 void SetComputeRootDescriptorTable(
3111 [annotation("_In_")] UINT RootParameterIndex,
3112 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3113 );
3114
3115 void SetGraphicsRootDescriptorTable(
3116 [annotation("_In_")] UINT RootParameterIndex,
3117 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3118 );
3119
3120 // Single constant
3121 void SetComputeRoot32BitConstant(
3122 [annotation("_In_")] UINT RootParameterIndex,
3123 [annotation("_In_")] UINT SrcData,
3124 [annotation("_In_")] UINT DestOffsetIn32BitValues
3125 );
3126
3127 void SetGraphicsRoot32BitConstant(
3128 [annotation("_In_")] UINT RootParameterIndex,
3129 [annotation("_In_")] UINT SrcData,
3130 [annotation("_In_")] UINT DestOffsetIn32BitValues
3131 );
3132
3133 // Group of constants
3134 void SetComputeRoot32BitConstants(
3135 [annotation("_In_")] UINT RootParameterIndex,
3136 [annotation("_In_")] UINT Num32BitValuesToSet,
3137 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3138 [annotation("_In_")] UINT DestOffsetIn32BitValues
3139 );
3140
3141 void SetGraphicsRoot32BitConstants(
3142 [annotation("_In_")] UINT RootParameterIndex,
3143 [annotation("_In_")] UINT Num32BitValuesToSet,
3144 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3145 [annotation("_In_")] UINT DestOffsetIn32BitValues
3146 );
3147
3148 // CBV
3149 void SetComputeRootConstantBufferView(
3150 [annotation("_In_")] UINT RootParameterIndex,
3151 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3152 );
3153
3154 void SetGraphicsRootConstantBufferView(
3155 [annotation("_In_")] UINT RootParameterIndex,
3156 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3157 );
3158
3159 // SRV
3160 void SetComputeRootShaderResourceView(
3161 [annotation("_In_")] UINT RootParameterIndex,
3162 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3163 );
3164
3165 void SetGraphicsRootShaderResourceView(
3166 [annotation("_In_")] UINT RootParameterIndex,
3167 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3168 );
3169
3170 // UAV
3171 void SetComputeRootUnorderedAccessView(
3172 [annotation("_In_")] UINT RootParameterIndex,
3173 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3174 );
3175
3176 void SetGraphicsRootUnorderedAccessView(
3177 [annotation("_In_")] UINT RootParameterIndex,
3178 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3179 );
3180
3181 void IASetIndexBuffer(
3182 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3183 );
3184
3185 void IASetVertexBuffers(
3186 [annotation("_In_")] UINT StartSlot,
3187 [annotation("_In_")] UINT NumViews,
3188 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3189 );
3190
3191 void SOSetTargets(
3192 [annotation("_In_")] UINT StartSlot,
3193 [annotation("_In_")] UINT NumViews,
3194 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3195 );
3196
3197 void OMSetRenderTargets(
3198 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3199 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3200 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3201 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3202 );
3203
3204 void ClearDepthStencilView(
3205 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3206 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3207 [annotation("_In_")] FLOAT Depth,
3208 [annotation("_In_")] UINT8 Stencil,
3209 [annotation("_In_")] UINT NumRects,
3210 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3211 );
3212
3213 void ClearRenderTargetView(
3214 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3215 [annotation("_In_")] const FLOAT ColorRGBA[4],
3216 [annotation("_In_")] UINT NumRects,
3217 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3218 );
3219
3220 void ClearUnorderedAccessViewUint(
3221 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3222 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3223 [annotation("_In_")] ID3D12Resource* pResource,
3224 [annotation("_In_")] const UINT Values[4],
3225 [annotation("_In_")] UINT NumRects,
3226 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3227 );
3228
3229 void ClearUnorderedAccessViewFloat(
3230 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3231 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3232 [annotation("_In_")] ID3D12Resource* pResource,
3233 [annotation("_In_")] const FLOAT Values[4],
3234 [annotation("_In_")] UINT NumRects,
3235 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3236 );
3237
3238 void DiscardResource(
3239 [annotation("_In_")] ID3D12Resource* pResource,
3240 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3241 );
3242
3243 void BeginQuery(
3244 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3245 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3246 [annotation("_In_")] UINT Index
3247 );
3248
3249 void EndQuery(
3250 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3251 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3252 [annotation("_In_")] UINT Index
3253 );
3254
3255 void ResolveQueryData(
3256 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3257 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3258 [annotation("_In_")] UINT StartIndex,
3259 [annotation("_In_")] UINT NumQueries,
3260 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3261 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3262 );
3263
3264 void SetPredication(
3265 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3266 [annotation("_In_")] UINT64 AlignedBufferOffset,
3267 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3268 );
3269
3270 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3271 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3272 void EndEvent();
3273
3274 void ExecuteIndirect(
3275 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3276 [annotation("_In_")] UINT MaxCommandCount,
3277 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3278 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3279 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3280 [annotation("_In_")] UINT64 CountBufferOffset
3281 );
3282}
3283
3284[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3285interface ID3D12GraphicsCommandList1
3286 : ID3D12GraphicsCommandList
3287{
3288 void AtomicCopyBufferUINT(
3289 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3290 UINT64 DstOffset,
3291 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3292 UINT64 SrcOffset,
3293 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3294 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3295 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3296 );
3297
3298 // UINT64 is only valid on UMA architectures
3299 void AtomicCopyBufferUINT64(
3300 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3301 UINT64 DstOffset,
3302 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3303 UINT64 SrcOffset,
3304 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3305 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3306 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3307 );
3308
3309 void OMSetDepthBounds(
3310 [annotation("_In_")] FLOAT Min,
3311 [annotation("_In_")] FLOAT Max
3312 );
3313
3314 void SetSamplePositions(
3315 [annotation("_In_")] UINT NumSamplesPerPixel,
3316 [annotation("_In_")] UINT NumPixels,
3317 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3318 );
3319
3320 void ResolveSubresourceRegion(
3321 [annotation("_In_")] ID3D12Resource* pDstResource,
3322 [annotation("_In_")] UINT DstSubresource,
3323 [annotation("_In_")] UINT DstX,
3324 [annotation("_In_")] UINT DstY,
3325 [annotation("_In_")] ID3D12Resource* pSrcResource,
3326 [annotation("_In_")] UINT SrcSubresource,
3327 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3328 [annotation("_In_")] DXGI_FORMAT Format,
3329 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3330 );
3331
3332 void SetViewInstanceMask(
3333 [annotation("_In_")] UINT Mask
3334 );
3335
3336}
3337
3338typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3339{
3340 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3341 UINT32 Value;
3342} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3343
3344typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3345{
3346 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3347 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3348 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3349
3350} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3351
3352[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3353interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3354{
3355 void WriteBufferImmediate(
3356 UINT Count,
3357 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3358 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3359 );
3360}
3361
3362[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3363interface ID3D12CommandQueue
3364 : ID3D12Pageable
3365{
3366 void UpdateTileMappings(
3367 [annotation("_In_")] ID3D12Resource* pResource,
3368 UINT NumResourceRegions,
3369 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3370 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3371 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3372 UINT NumRanges,
3373 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3374 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3375 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3376 D3D12_TILE_MAPPING_FLAGS Flags );
3377
3378 void CopyTileMappings(
3379 [annotation("_In_")] ID3D12Resource* pDstResource,
3380 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3381 [annotation("_In_")] ID3D12Resource* pSrcResource,
3382 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3383 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3384 D3D12_TILE_MAPPING_FLAGS Flags );
3385
3386 void ExecuteCommandLists(
3387 [annotation("_In_")] UINT NumCommandLists,
3388 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3389 );
3390
3391 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3392 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3393 void EndEvent();
3394
3395 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3396 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3397
3398 HRESULT GetTimestampFrequency(
3399 [annotation("_Out_")] UINT64* pFrequency
3400 );
3401
3402 HRESULT GetClockCalibration(
3403 [annotation("_Out_")] UINT64* pGpuTimestamp,
3404 [annotation("_Out_")] UINT64* pCpuTimestamp
3405 );
3406
3407 D3D12_COMMAND_QUEUE_DESC GetDesc();
3408}
3409
3410//--------------------------------------------------------------------------------------------------------
3411// The system LUID struct isn't defined in wtypes, so we repeat it here just
3412// for the MIDL compiler.
3413cpp_quote("#ifdef __midl")
3414cpp_quote("#ifndef LUID_DEFINED")
3415cpp_quote("#define LUID_DEFINED 1")
3416typedef struct __LUID {
3417 DWORD LowPart;
3418 LONG HighPart;
3419} LUID, *PLUID;
3420cpp_quote("#endif")
3421cpp_quote("#endif")
3422
3423[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3424interface ID3D12Device
3425 : ID3D12Object
3426{
3427 UINT GetNodeCount();
3428
3429 HRESULT CreateCommandQueue(
3430 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3431 [in] REFIID riid, // Expected: ID3D12CommandQueue
3432 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3433 );
3434
3435 HRESULT CreateCommandAllocator(
3436 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3437 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3438 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3439 );
3440
3441 HRESULT CreateGraphicsPipelineState(
3442 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3443 [in] REFIID riid, // Expected: ID3D12PipelineState
3444 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3445 );
3446
3447 HRESULT CreateComputePipelineState(
3448 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3449 [in] REFIID riid, // Expected: ID3D12PipelineState
3450 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3451 );
3452
3453 HRESULT CreateCommandList(
3454 [annotation("_In_")] UINT nodeMask,
3455 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3456 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3457 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3458 [in] REFIID riid, // Expected: ID3D12CommandList
3459 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3460 );
3461
3462 HRESULT CheckFeatureSupport(
3463 D3D12_FEATURE Feature,
3464 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3465 UINT FeatureSupportDataSize
3466 );
3467
3468 HRESULT CreateDescriptorHeap(
3469 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3470 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3471 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3472
3473 UINT GetDescriptorHandleIncrementSize(
3474 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3475
3476 HRESULT CreateRootSignature(
3477 [annotation("_In_")] UINT nodeMask,
3478 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3479 [annotation("_In_")] SIZE_T blobLengthInBytes,
3480 [in] REFIID riid, // Expected ID3D12RootSignature
3481 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3482
3483 void CreateConstantBufferView(
3484 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3485 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3486
3487 void CreateShaderResourceView(
3488 [annotation("_In_opt_")] ID3D12Resource* pResource,
3489 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3490 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3491
3492 void CreateUnorderedAccessView(
3493 [annotation("_In_opt_")] ID3D12Resource* pResource,
3494 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3495 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3496 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3497
3498 void CreateRenderTargetView(
3499 [annotation("_In_opt_")] ID3D12Resource* pResource,
3500 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3501 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3502
3503 void CreateDepthStencilView(
3504 [annotation("_In_opt_")] ID3D12Resource* pResource,
3505 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3506 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3507
3508 void CreateSampler(
3509 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3510 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3511
3512 void CopyDescriptors(
3513 [annotation("_In_")] UINT NumDestDescriptorRanges,
3514 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3515 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3516 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3517 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3518 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3519 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3520
3521 void CopyDescriptorsSimple(
3522 [annotation("_In_")] UINT NumDescriptors,
3523 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
3524 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
3525 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3526
3527 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
3528 [annotation("_In_")] UINT visibleMask,
3529 [annotation("_In_")] UINT numResourceDescs,
3530 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
3531
3532 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
3533 [annotation("_In_")] UINT nodeMask,
3534 D3D12_HEAP_TYPE heapType
3535 );
3536
3537 HRESULT CreateCommittedResource(
3538 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3539 D3D12_HEAP_FLAGS HeapFlags,
3540 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3541 D3D12_RESOURCE_STATES InitialResourceState,
3542 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3543 [in] REFIID riidResource, // Expected: ID3D12Resource*
3544 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
3545
3546 HRESULT CreateHeap(
3547 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3548 [in] REFIID riid, // Expected: ID3D12Heap*
3549 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
3550
3551 HRESULT CreatePlacedResource(
3552 [annotation("_In_")] ID3D12Heap* pHeap,
3553 UINT64 HeapOffset,
3554 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3555 D3D12_RESOURCE_STATES InitialState,
3556 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3557 [in] REFIID riid, // Expected: ID3D12Resource*
3558 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3559
3560 HRESULT CreateReservedResource(
3561 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3562 D3D12_RESOURCE_STATES InitialState,
3563 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3564 [in] REFIID riid, // Expected: ID3D12Resource*
3565 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3566
3567 HRESULT CreateSharedHandle(
3568 [annotation("_In_")] ID3D12DeviceChild* pObject,
3569 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
3570 DWORD Access,
3571 [annotation("_In_opt_")] LPCWSTR Name,
3572 [annotation("_Out_")] HANDLE* pHandle );
3573
3574 HRESULT OpenSharedHandle(
3575 [annotation("_In_")] HANDLE NTHandle,
3576 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
3577 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
3578
3579 HRESULT OpenSharedHandleByName(
3580 [annotation("_In_")] LPCWSTR Name,
3581 DWORD Access,
3582 [out, annotation("_Out_")] HANDLE* pNTHandle );
3583
3584 HRESULT MakeResident(
3585 UINT NumObjects,
3586 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3587
3588 HRESULT Evict(
3589 UINT NumObjects,
3590 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3591
3592 HRESULT CreateFence(
3593 UINT64 InitialValue,
3594 D3D12_FENCE_FLAGS Flags,
3595 [in] REFIID riid, // Expected: ID3D12Fence
3596 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
3597
3598 HRESULT GetDeviceRemovedReason();
3599
3600 void GetCopyableFootprints(
3601 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
3602 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
3603 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
3604 UINT64 BaseOffset,
3605 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
3606 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
3607 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
3608 [annotation("_Out_opt_")] UINT64* pTotalBytes );
3609
3610 HRESULT CreateQueryHeap(
3611 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
3612 [in] REFIID riid, // Expected: ID3D12QueryHeap
3613 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3614 );
3615
3616 HRESULT SetStablePowerState(BOOL Enable);
3617
3618 HRESULT CreateCommandSignature(
3619 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
3620 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
3621 [in] REFIID riid, // Expected: ID3D12CommandSignature
3622 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
3623 );
3624
3625 void GetResourceTiling(
3626 [annotation("_In_")] ID3D12Resource* pTiledResource,
3627 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
3628 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
3629 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
3630 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
3631 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
3632 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
3633 );
3634
3635 LUID GetAdapterLuid();
3636}
3637
3638// D3D12 Revision 1
3639[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
3640interface ID3D12PipelineLibrary
3641 : ID3D12DeviceChild
3642{
3643 HRESULT StorePipeline(
3644 [annotation("_In_opt_")] LPCWSTR pName,
3645 [annotation("_In_")] ID3D12PipelineState *pPipeline
3646 );
3647
3648 HRESULT LoadGraphicsPipeline(
3649 [annotation("_In_")] LPCWSTR pName,
3650 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3651 [in] REFIID riid, // Expected: ID3D12PipelineState
3652 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3653 );
3654
3655 HRESULT LoadComputePipeline(
3656 [annotation("_In_")] LPCWSTR pName,
3657 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3658 [in] REFIID riid, // Expected: ID3D12PipelineState
3659 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3660 );
3661
3662 SIZE_T GetSerializedSize();
3663
3664 HRESULT Serialize(
3665 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
3666 SIZE_T DataSizeInBytes
3667 );
3668}
3669
3670// Pipeline State v2
3671[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
3672interface ID3D12PipelineLibrary1
3673 : ID3D12PipelineLibrary
3674{
3675 HRESULT LoadPipeline(
3676 [annotation("_In_")] LPCWSTR pName,
3677 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3678 [in] REFIID riid, // Expected: ID3D12PipelineState
3679 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3680 );
3681}
3682
3683typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
3684{
3685 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
3686 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
3687
3688 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
3689} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
3690cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );" )
3691
3692// Applications may use the whole value range of UINT for a priority.
3693// These names are merely semantic suggestions.
3694typedef enum D3D12_RESIDENCY_PRIORITY
3695{
3696 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
3697 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
3698 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
3699 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
3700 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
3701} D3D12_RESIDENCY_PRIORITY;
3702
3703[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
3704interface ID3D12Device1
3705 : ID3D12Device
3706{
3707 HRESULT CreatePipelineLibrary(
3708 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
3709 SIZE_T BlobLength,
3710 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
3711 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
3712 );
3713
3714 HRESULT SetEventOnMultipleFenceCompletion(
3715 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
3716 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
3717 UINT NumFences,
3718 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
3719 HANDLE hEvent
3720 );
3721
3722 HRESULT SetResidencyPriority(
3723 UINT NumObjects,
3724 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3725 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
3726}
3727
3728[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
3729interface ID3D12Device2
3730 : ID3D12Device1
3731{
3732 HRESULT CreatePipelineState(
3733 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3734 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
3735 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3736 );
3737}
3738
3739typedef enum D3D12_RESIDENCY_FLAGS
3740{
3741 D3D12_RESIDENCY_FLAG_NONE = 0x0,
3742 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
3743} D3D12_RESIDENCY_FLAGS;
3744cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );" )
3745
3746[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
3747interface ID3D12Device3
3748 : ID3D12Device2
3749{
3750 HRESULT OpenExistingHeapFromAddress(
3751 [annotation("_In_")] const void* pAddress,
3752 [in] REFIID riid, // Expected: ID3D12Heap
3753 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3754 );
3755 HRESULT OpenExistingHeapFromFileMapping(
3756 [annotation("_In_")] HANDLE hFileMapping,
3757 [in] REFIID riid, // Expected: ID3D12Heap
3758 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3759 );
3760 HRESULT EnqueueMakeResident(
3761 D3D12_RESIDENCY_FLAGS Flags,
3762 UINT NumObjects,
3763 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3764 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
3765 UINT64 FenceValueToSignal
3766 );
3767}
3768
3769typedef enum D3D12_COMMAND_LIST_FLAGS
3770{
3771 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
3772} D3D12_COMMAND_LIST_FLAGS;
3773cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );")
3774
3775
3776typedef enum D3D12_COMMAND_POOL_FLAGS
3777{
3778 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
3779
3780} D3D12_COMMAND_POOL_FLAGS;
3781cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );")
3782
3783typedef enum D3D12_COMMAND_RECORDER_FLAGS
3784{
3785 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
3786
3787} D3D12_COMMAND_RECORDER_FLAGS;
3788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );")
3789
3790typedef enum D3D12_PROTECTED_SESSION_STATUS
3791{
3792 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
3793 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
3794} D3D12_PROTECTED_SESSION_STATUS;
3795
3796[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
3797interface ID3D12ProtectedSession
3798 : ID3D12DeviceChild
3799{
3800 HRESULT GetStatusFence(
3801 [in] REFIID riid,
3802 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
3803
3804 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
3805}
3806
3807typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
3808{
3809 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
3810 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
3811
3812} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
3813cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );")
3814
3815typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
3816{
3817 UINT NodeIndex; // input
3818 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
3819} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
3820
3821typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
3822{
3823 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
3824
3825} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
3826cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );")
3827
3828typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
3829{
3830 UINT NodeMask;
3831 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
3832} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
3833
3834[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
3835interface ID3D12ProtectedResourceSession
3836 : ID3D12ProtectedSession
3837{
3838 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
3839}
3840
3841[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
3842interface ID3D12Device4
3843 : ID3D12Device3
3844{
3845 HRESULT CreateCommandList1(
3846 [annotation("_In_")] UINT nodeMask,
3847 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3848 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
3849 [in] REFIID riid, // Expected: ID3D12CommandList
3850 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3851 );
3852
3853 HRESULT CreateProtectedResourceSession(
3854 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
3855 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
3856 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
3857 );
3858
3859 HRESULT CreateCommittedResource1(
3860 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3861 D3D12_HEAP_FLAGS HeapFlags,
3862 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3863 D3D12_RESOURCE_STATES InitialResourceState,
3864 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3865 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3866 [in] REFIID riidResource, // Expected: ID3D12Resource1*
3867 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
3868 );
3869
3870 HRESULT CreateHeap1(
3871 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3872 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3873 [in] REFIID riid, // Expected: ID3D12Heap1*
3874 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3875 );
3876
3877 HRESULT CreateReservedResource1(
3878 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3879 D3D12_RESOURCE_STATES InitialState,
3880 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3881 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3882 [in] REFIID riid, // Expected: ID3D12Resource1*
3883 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
3884 );
3885
3886 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
3887 UINT visibleMask,
3888 UINT numResourceDescs,
3889 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
3890 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
3891 );
3892}
3893
3894typedef enum D3D12_LIFETIME_STATE
3895{
3896 D3D12_LIFETIME_STATE_IN_USE,
3897 D3D12_LIFETIME_STATE_NOT_IN_USE,
3898} D3D12_LIFETIME_STATE;
3899
3900interface ID3D12LifetimeTracker;
3901
3902[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
3903interface ID3D12LifetimeOwner : IUnknown
3904{
3905 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
3906}
3907
3908[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
3909interface ID3D12SwapChainAssistant
3910 : IUnknown
3911{
3912 LUID GetLUID();
3913 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
3914 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
3915 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
3916 HRESULT InsertImplicitSync();
3917}
3918
3919[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
3920interface ID3D12LifetimeTracker
3921 : ID3D12DeviceChild
3922{
3923 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
3924}
3925
3926typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
3927{
3928 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
3929 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
3930 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
3931 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
3932 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
3933} D3D12_META_COMMAND_PARAMETER_TYPE;
3934
3935typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
3936{
3937 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
3938 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
3939} D3D12_META_COMMAND_PARAMETER_FLAGS;
3940cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );")
3941
3942typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
3943{
3944 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
3945 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3946 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3947} D3D12_META_COMMAND_PARAMETER_STAGE;
3948
3949typedef struct D3D12_META_COMMAND_PARAMETER_DESC
3950{
3951 LPCWSTR Name;
3952 D3D12_META_COMMAND_PARAMETER_TYPE Type;
3953 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
3954 D3D12_RESOURCE_STATES RequiredResourceState;
3955 UINT StructureOffset;
3956} D3D12_META_COMMAND_PARAMETER_DESC;
3957
3958typedef enum D3D12_GRAPHICS_STATES
3959{
3960 D3D12_GRAPHICS_STATE_NONE = 0,
3961 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
3962 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
3963 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
3964 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
3965 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
3966 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
3967 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
3968 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
3969 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
3970 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
3971 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
3972 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
3973 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
3974 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
3975 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
3976 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
3977 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
3978
3979} D3D12_GRAPHICS_STATES;
3980cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );")
3981
3982typedef struct D3D12_META_COMMAND_DESC
3983{
3984 GUID Id;
3985 LPCWSTR Name;
3986 D3D12_GRAPHICS_STATES InitializationDirtyState;
3987 D3D12_GRAPHICS_STATES ExecutionDirtyState;
3988} D3D12_META_COMMAND_DESC;
3989
3990[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
3991interface ID3D12StateObject
3992 : ID3D12Pageable
3993{
3994}
3995
3996[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
3997interface ID3D12StateObjectProperties
3998 : IUnknown
3999{
4000 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4001 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4002 UINT64 GetPipelineStackSize();
4003 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4004}
4005
4006typedef enum D3D12_STATE_SUBOBJECT_TYPE
4007{
4008 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4009 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4010 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4011 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4012 // 4 unused
4013 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4014 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4015 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4016 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4017 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4018 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4019 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4020 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4021 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4022} D3D12_STATE_SUBOBJECT_TYPE;
4023
4024typedef struct D3D12_STATE_SUBOBJECT
4025{
4026 D3D12_STATE_SUBOBJECT_TYPE Type;
4027 const void* pDesc;
4028} D3D12_STATE_SUBOBJECT;
4029
4030typedef enum D3D12_STATE_OBJECT_FLAGS
4031{
4032 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4033 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4034 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4035 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4036} D3D12_STATE_OBJECT_FLAGS;
4037cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );")
4038
4039typedef struct D3D12_STATE_OBJECT_CONFIG
4040{
4041 D3D12_STATE_OBJECT_FLAGS Flags;
4042} D3D12_STATE_OBJECT_CONFIG;
4043
4044typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4045{
4046 ID3D12RootSignature* pGlobalRootSignature;
4047} D3D12_GLOBAL_ROOT_SIGNATURE;
4048
4049typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4050{
4051 ID3D12RootSignature* pLocalRootSignature;
4052} D3D12_LOCAL_ROOT_SIGNATURE;
4053
4054typedef struct D3D12_NODE_MASK
4055{
4056 UINT NodeMask;
4057} D3D12_NODE_MASK;
4058
4059typedef enum D3D12_EXPORT_FLAGS
4060{
4061 D3D12_EXPORT_FLAG_NONE = 0x0,
4062} D3D12_EXPORT_FLAGS;
4063cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );")
4064
4065typedef struct D3D12_EXPORT_DESC
4066{
4067 LPCWSTR Name;
4068 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4069 D3D12_EXPORT_FLAGS Flags;
4070} D3D12_EXPORT_DESC;
4071
4072typedef struct D3D12_DXIL_LIBRARY_DESC
4073{
4074 D3D12_SHADER_BYTECODE DXILLibrary;
4075 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4076 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4077} D3D12_DXIL_LIBRARY_DESC;
4078
4079typedef struct D3D12_EXISTING_COLLECTION_DESC
4080{
4081 ID3D12StateObject* pExistingCollection;
4082 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4083 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4084} D3D12_EXISTING_COLLECTION_DESC;
4085
4086typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4087{
4088 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4089 UINT NumExports;
4090 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4091} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4092
4093typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4094{
4095 LPCWSTR SubobjectToAssociate;
4096 UINT NumExports;
4097 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4098} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4099
4100typedef enum D3D12_HIT_GROUP_TYPE
4101{
4102 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4103 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4104} D3D12_HIT_GROUP_TYPE;
4105
4106typedef struct D3D12_HIT_GROUP_DESC
4107{
4108 LPCWSTR HitGroupExport;
4109 D3D12_HIT_GROUP_TYPE Type;
4110 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4111 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4112 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4113} D3D12_HIT_GROUP_DESC;
4114
4115typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4116{
4117 UINT MaxPayloadSizeInBytes;
4118 UINT MaxAttributeSizeInBytes;
4119} D3D12_RAYTRACING_SHADER_CONFIG;
4120
4121typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4122{
4123 UINT MaxTraceRecursionDepth;
4124} D3D12_RAYTRACING_PIPELINE_CONFIG;
4125
4126typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4127{
4128 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4129 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4130 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4131} D3D12_RAYTRACING_PIPELINE_FLAGS;
4132cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );")
4133
4134typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4135{
4136 UINT MaxTraceRecursionDepth;
4137 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4138} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4139
4140typedef enum D3D12_STATE_OBJECT_TYPE
4141{
4142 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4143 // D3D12_STATE_OBJECT_TYPE_COMPUTE_PIPELINE = 1,
4144 // D3D12_STATE_OBJECT_TYPE_GRAPHICS_PIPELINE = 2,
4145 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4146} D3D12_STATE_OBJECT_TYPE;
4147
4148typedef struct D3D12_STATE_OBJECT_DESC
4149{
4150 D3D12_STATE_OBJECT_TYPE Type;
4151 UINT NumSubobjects;
4152 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4153} D3D12_STATE_OBJECT_DESC;
4154
4155typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4156{
4157 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4158 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4159 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4160} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4161cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );")
4162
4163typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4164{
4165 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4166 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4167} D3D12_RAYTRACING_GEOMETRY_TYPE;
4168
4169typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4170{
4171 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4172 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4173 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4174 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4175 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
4176} D3D12_RAYTRACING_INSTANCE_FLAGS;
4177cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );")
4178
4179typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4180{
4181 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4182 UINT64 StrideInBytes;
4183} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4184
4185typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4186{
4187 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4188 UINT64 SizeInBytes;
4189} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4190
4191typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4192{
4193 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4194 UINT64 SizeInBytes;
4195 UINT64 StrideInBytes;
4196} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4197
4198typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4199{
4200 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4201 DXGI_FORMAT IndexFormat;
4202 DXGI_FORMAT VertexFormat;
4203 UINT IndexCount;
4204 UINT VertexCount;
4205 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4206 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4207} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4208
4209typedef struct D3D12_RAYTRACING_AABB
4210{
4211 FLOAT MinX;
4212 FLOAT MinY;
4213 FLOAT MinZ;
4214 FLOAT MaxX;
4215 FLOAT MaxY;
4216 FLOAT MaxZ;
4217} D3D12_RAYTRACING_AABB;
4218
4219typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4220{
4221 UINT64 AABBCount;
4222 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4223} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4224
4225typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4226{
4227 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4228 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4229 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4230 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4231 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4232 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4233 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4234} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4235cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );")
4236
4237typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4238{
4239 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4240 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4241 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4242 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4243 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4244} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4245
4246typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4247{
4248 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4249 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
4250} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
4251
4252typedef enum D3D12_ELEMENTS_LAYOUT
4253{
4254 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
4255 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
4256} D3D12_ELEMENTS_LAYOUT;
4257
4258typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
4259{
4260 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
4261 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
4262 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
4263 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
4264} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
4265
4266typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
4267{
4268 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
4269 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
4270} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
4271
4272typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
4273{
4274 UINT64 CompactedSizeInBytes;
4275} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
4276
4277typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
4278{
4279 UINT64 DecodedSizeInBytes;
4280} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
4281
4282typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
4283{
4284 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4285 UINT NumDescs;
4286} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
4287cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
4288cpp_quote("// depending on Type field, NumDescs above is followed by either:")
4289cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
4290cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
4291cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
4292cpp_quote("")
4293
4294typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
4295{
4296 UINT64 SerializedSizeInBytes;
4297 UINT64 NumBottomLevelAccelerationStructurePointers;
4298} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
4299
4300typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
4301{
4302 GUID DriverOpaqueGUID;
4303 BYTE DriverOpaqueVersioningData[16];
4304} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
4305
4306typedef enum D3D12_SERIALIZED_DATA_TYPE
4307{
4308 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
4309} D3D12_SERIALIZED_DATA_TYPE;
4310
4311typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
4312{
4313 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
4314 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
4315 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
4316 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
4317 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
4318} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
4319
4320typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
4321{
4322 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
4323 UINT64 SerializedSizeInBytesIncludingHeader;
4324 UINT64 DeserializedSizeInBytes;
4325 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
4326} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
4327
4328typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
4329{
4330 UINT64 CurrentSizeInBytes;
4331} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
4332
4333typedef struct D3D12_RAYTRACING_INSTANCE_DESC
4334{
4335 FLOAT Transform[3][4];
4336 UINT InstanceID : 24;
4337 UINT InstanceMask : 8;
4338 UINT InstanceContributionToHitGroupIndex : 24;
4339 UINT Flags : 8;
4340 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
4341} D3D12_RAYTRACING_INSTANCE_DESC;
4342
4343typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
4344{
4345 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
4346 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
4347 union
4348 {
4349 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
4350 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
4351 };
4352} D3D12_RAYTRACING_GEOMETRY_DESC;
4353
4354typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
4355{
4356 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4357 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
4358 UINT NumDescs;
4359 D3D12_ELEMENTS_LAYOUT DescsLayout;
4360 union
4361 {
4362 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
4363 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
4364 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
4365 };
4366} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
4367
4368typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
4369{
4370 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
4371 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
4372 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
4373 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
4374} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
4375
4376typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
4377{
4378 UINT64 ResultDataMaxSizeInBytes;
4379 UINT64 ScratchDataSizeInBytes;
4380 UINT64 UpdateScratchDataSizeInBytes;
4381} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
4382
4383typedef enum D3D12_RAY_FLAGS
4384{
4385 D3D12_RAY_FLAG_NONE = 0x00,
4386 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
4387 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
4388 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
4389 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
4390 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
4391 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
4392 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
4393 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
4394 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
4395 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4396} D3D12_RAY_FLAGS;
4397cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );" )
4398
4399typedef enum D3D12_HIT_KIND
4400{
4401 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
4402 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
4403} D3D12_HIT_KIND;
4404
4405[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
4406interface ID3D12Device5
4407 : ID3D12Device4
4408{
4409 HRESULT CreateLifetimeTracker(
4410 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
4411 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
4412 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
4413 );
4414
4415 void RemoveDevice();
4416
4417 HRESULT EnumerateMetaCommands(
4418 [annotation("_Inout_")] UINT* pNumMetaCommands,
4419 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
4420 );
4421
4422 HRESULT EnumerateMetaCommandParameters(
4423 [annotation("_In_")] REFGUID CommandId,
4424 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
4425 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
4426 [annotation("_Inout_")] UINT* pParameterCount,
4427 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
4428 );
4429
4430 HRESULT CreateMetaCommand(
4431 [annotation("_In_")] REFGUID CommandId,
4432 [annotation("_In_")] UINT NodeMask,
4433 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
4434 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
4435 [in] REFIID riid,
4436 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
4437 );
4438
4439 HRESULT CreateStateObject(
4440 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
4441 [in] REFIID riid, // ID3D12StateObject
4442 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
4443 );
4444
4445 void GetRaytracingAccelerationStructurePrebuildInfo(
4446 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
4447 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
4448 );
4449
4450 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
4451 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
4452 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
4453}
4454
4455
4456typedef enum D3D12_AUTO_BREADCRUMB_OP
4457{
4458 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
4459 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
4460 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
4461 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
4462 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
4463 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
4464 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
4465 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
4466 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
4467 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
4468 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
4469 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
4470 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
4471 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
4472 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
4473 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
4474 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
4475 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
4476 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
4477 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
4478 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
4479 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
4480 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
4481 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
4482 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
4483 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
4484 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
4485 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
4486 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
4487 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
4488 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
4489 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
4490 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
4491 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
4492 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
4493 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
4494 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
4495 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
4496 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
4497 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
4498 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
4499 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
4500 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
4501 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
4502 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
4503} D3D12_AUTO_BREADCRUMB_OP;
4504
4505typedef struct D3D12_AUTO_BREADCRUMB_NODE
4506{
4507 const char *pCommandListDebugNameA;
4508 const wchar_t *pCommandListDebugNameW;
4509 const char *pCommandQueueDebugNameA;
4510 const wchar_t *pCommandQueueDebugNameW;
4511 ID3D12GraphicsCommandList *pCommandList;
4512 ID3D12CommandQueue *pCommandQueue;
4513 UINT32 BreadcrumbCount;
4514 const UINT32 *pLastBreadcrumbValue;
4515 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4516 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
4517} D3D12_AUTO_BREADCRUMB_NODE;
4518
4519typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
4520{
4521 UINT BreadcrumbIndex;
4522 const wchar_t *pContextString;
4523} D3D12_DRED_BREADCRUMB_CONTEXT;
4524
4525// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
4526typedef struct D3D12_AUTO_BREADCRUMB_NODE1
4527{
4528 const char *pCommandListDebugNameA;
4529 const wchar_t *pCommandListDebugNameW;
4530 const char *pCommandQueueDebugNameA;
4531 const wchar_t *pCommandQueueDebugNameW;
4532 ID3D12GraphicsCommandList *pCommandList;
4533 ID3D12CommandQueue *pCommandQueue;
4534 UINT BreadcrumbCount;
4535 const UINT *pLastBreadcrumbValue;
4536 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4537 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
4538 UINT BreadcrumbContextsCount;
4539 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
4540} D3D12_AUTO_BREADCRUMB_NODE1;
4541
4542// D3D12_DRED_VERSION
4543typedef enum D3D12_DRED_VERSION
4544{
4545 D3D12_DRED_VERSION_1_0 = 0x1,
4546 D3D12_DRED_VERSION_1_1 = 0x2,
4547 D3D12_DRED_VERSION_1_2 = 0x3,
4548 D3D12_DRED_VERSION_1_3 = 0x4,
4549} D3D12_DRED_VERSION;
4550
4551typedef enum D3D12_DRED_FLAGS
4552{
4553 D3D12_DRED_FLAG_NONE = 0,
4554 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
4555 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
4556} D3D12_DRED_FLAGS;
4557cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );")
4558
4559typedef enum D3D12_DRED_ENABLEMENT
4560{
4561 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
4562 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
4563 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
4564} D3D12_DRED_ENABLEMENT;
4565
4566typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
4567{
4568 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
4569 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
4570} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
4571
4572typedef enum D3D12_DRED_ALLOCATION_TYPE
4573{
4574 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
4575 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
4576 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
4577 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
4578 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
4579 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
4580 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
4581 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
4582 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
4583 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
4584 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
4585 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
4586 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
4587 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
4588 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
4589 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
4590 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
4591 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
4592 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
4593 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
4594 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
4595 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
4596 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
4597 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
4598 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
4599 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
4600 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
4601 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
4602 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
4603
4604
4605 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
4606} D3D12_DRED_ALLOCATION_TYPE;
4607
4608typedef struct D3D12_DRED_ALLOCATION_NODE
4609{
4610 const char *ObjectNameA;
4611 const wchar_t *ObjectNameW;
4612 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4613 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
4614} D3D12_DRED_ALLOCATION_NODE;
4615
4616typedef struct D3D12_DRED_ALLOCATION_NODE1
4617{
4618 const char *ObjectNameA;
4619 const wchar_t *ObjectNameW;
4620 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4621 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
4622 const IUnknown *pObject;
4623} D3D12_DRED_ALLOCATION_NODE1;
4624
4625typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
4626{
4627 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4628} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
4629
4630typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
4631{
4632 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4633} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
4634
4635typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
4636{
4637 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4638 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
4639 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
4640} D3D12_DRED_PAGE_FAULT_OUTPUT;
4641
4642typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
4643{
4644 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4645 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4646 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4647} D3D12_DRED_PAGE_FAULT_OUTPUT1;
4648
4649typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
4650{
4651 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
4652} D3D12_DRED_PAGE_FAULT_FLAGS;
4653cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );")
4654
4655typedef enum D3D12_DRED_DEVICE_STATE
4656{
4657 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
4658 D3D12_DRED_DEVICE_STATE_HUNG = 3,
4659 D3D12_DRED_DEVICE_STATE_FAULT = 6,
4660 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
4661} D3D12_DRED_DEVICE_STATE;
4662
4663typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
4664{
4665 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4666 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4667 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4668 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
4669
4670} D3D12_DRED_PAGE_FAULT_OUTPUT2;
4671
4672typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
4673{
4674 HRESULT DeviceRemovedReason;
4675 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
4676 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
4677} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
4678
4679typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
4680{
4681 HRESULT DeviceRemovedReason;
4682 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4683 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
4684} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
4685
4686typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
4687{
4688 HRESULT DeviceRemovedReason;
4689 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4690 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
4691 D3D12_DRED_DEVICE_STATE DeviceState;
4692} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
4693
4694typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
4695{
4696 D3D12_DRED_VERSION Version; // Version of the DRED data
4697 union
4698 {
4699 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
4700 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
4701 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
4702 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
4703 };
4704} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
4705
4706[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
4707interface ID3D12DeviceRemovedExtendedDataSettings
4708 : IUnknown
4709{
4710 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
4711 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
4712 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
4713};
4714
4715[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
4716interface ID3D12DeviceRemovedExtendedDataSettings1
4717 : ID3D12DeviceRemovedExtendedDataSettings
4718{
4719 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
4720};
4721
4722
4723[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
4724interface ID3D12DeviceRemovedExtendedData
4725 : IUnknown
4726{
4727 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
4728 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
4729};
4730
4731[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
4732interface ID3D12DeviceRemovedExtendedData1
4733 : ID3D12DeviceRemovedExtendedData
4734{
4735 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
4736 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
4737};
4738
4739[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
4740interface ID3D12DeviceRemovedExtendedData2
4741 : ID3D12DeviceRemovedExtendedData1
4742{
4743 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
4744 D3D12_DRED_DEVICE_STATE GetDeviceState();
4745};
4746
4747typedef enum D3D12_BACKGROUND_PROCESSING_MODE
4748{
4749 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
4750 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
4751 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
4752 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
4753} D3D12_BACKGROUND_PROCESSING_MODE;
4754
4755typedef enum D3D12_MEASUREMENTS_ACTION
4756{
4757 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
4758 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
4759 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
4760 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
4761} D3D12_MEASUREMENTS_ACTION;
4762
4763[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
4764interface ID3D12Device6 : ID3D12Device5
4765{
4766 HRESULT SetBackgroundProcessingMode(
4767 D3D12_BACKGROUND_PROCESSING_MODE Mode,
4768 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
4769 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
4770 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
4771};
4772
4773cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
4774
4775// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4776typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4777{
4778 UINT NodeIndex; // input
4779 UINT Count; // output
4780} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
4781
4782// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
4783typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
4784{
4785 UINT NodeIndex; // input
4786 UINT Count; // input
4787 GUID* pTypes; // output
4788} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
4789
4790typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
4791{
4792 UINT NodeMask;
4793 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4794 GUID ProtectionType;
4795} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
4796
4797[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
4798interface ID3D12ProtectedResourceSession1
4799 : ID3D12ProtectedResourceSession
4800{
4801 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
4802};
4803
4804[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
4805interface ID3D12Device7 : ID3D12Device6
4806{
4807 HRESULT AddToStateObject(
4808 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
4809 [in] ID3D12StateObject* pStateObjectToGrowFrom,
4810 [in] REFIID riid, // ID3D12StateObject
4811 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
4812 );
4813
4814 HRESULT CreateProtectedResourceSession1(
4815 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
4816 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
4817 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4818 );
4819};
4820
4821[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
4822interface ID3D12Device8 : ID3D12Device7
4823{
4824 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
4825 UINT visibleMask,
4826 UINT numResourceDescs,
4827 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
4828 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
4829
4830 HRESULT CreateCommittedResource2(
4831 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4832 D3D12_HEAP_FLAGS HeapFlags,
4833 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4834 D3D12_RESOURCE_STATES InitialResourceState,
4835 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4836 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
4837 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4838 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
4839
4840 HRESULT CreatePlacedResource1(
4841 [annotation("_In_")] ID3D12Heap* pHeap,
4842 UINT64 HeapOffset,
4843 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4844 D3D12_RESOURCE_STATES InitialState,
4845 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4846 [in] REFIID riid, // Expected: ID3D12Resource*
4847 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
4848
4849 void CreateSamplerFeedbackUnorderedAccessView(
4850 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
4851 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
4852 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
4853
4854 void GetCopyableFootprints1(
4855 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
4856 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4857 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4858 UINT64 BaseOffset,
4859 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4860 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4861 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4862 [annotation("_Out_opt_")] UINT64* pTotalBytes);
4863};
4864
4865
4866
4867[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
4868interface ID3D12Resource1
4869 : ID3D12Resource
4870{
4871 HRESULT GetProtectedResourceSession(
4872 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4873 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4874}
4875
4876[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
4877interface ID3D12Resource2
4878 : ID3D12Resource1
4879{
4880 D3D12_RESOURCE_DESC1 GetDesc1();
4881}
4882
4883
4884[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
4885interface ID3D12Heap1
4886 : ID3D12Heap
4887{
4888 HRESULT GetProtectedResourceSession(
4889 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4890 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4891}
4892
4893
4894[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
4895interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
4896{
4897 void SetProtectedResourceSession(
4898 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
4899 );
4900}
4901
4902// Beginning Access
4903typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
4904{
4905 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
4906 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
4907 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
4908 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS
4909} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
4910
4911typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
4912{
4913 D3D12_CLEAR_VALUE ClearValue;
4914} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
4915
4916typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
4917{
4918 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
4919
4920 union
4921 {
4922 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
4923 };
4924} D3D12_RENDER_PASS_BEGINNING_ACCESS;
4925
4926// Ending Access
4927typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
4928{
4929 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
4930 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
4931 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
4932 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS
4933} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
4934
4935typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
4936{
4937 UINT SrcSubresource;
4938 UINT DstSubresource;
4939
4940 UINT DstX;
4941 UINT DstY;
4942 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
4943
4944} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
4945
4946typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
4947{
4948 ID3D12Resource* pSrcResource;
4949 ID3D12Resource* pDstResource;
4950
4951 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
4952 UINT SubresourceCount;
4953 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
4954
4955 DXGI_FORMAT Format;
4956 D3D12_RESOLVE_MODE ResolveMode;
4957
4958 BOOL PreserveResolveSource;
4959
4960} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
4961
4962typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
4963{
4964 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
4965
4966 union
4967 {
4968 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
4969 };
4970} D3D12_RENDER_PASS_ENDING_ACCESS;
4971
4972// Render Target Desc
4973typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
4974{
4975 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4976
4977 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
4978 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
4979
4980} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
4981
4982// Depth-Stencil Desc
4983typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
4984{
4985 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4986
4987 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
4988 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
4989
4990 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
4991 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
4992
4993} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
4994
4995// UAV Access Mode
4996typedef enum D3D12_RENDER_PASS_FLAGS
4997{
4998 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
4999 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5000 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5001 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
5002} D3D12_RENDER_PASS_FLAGS;
5003cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );")
5004
5005[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5006interface ID3D12MetaCommand : ID3D12Pageable
5007{
5008 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5009}
5010
5011typedef struct D3D12_DISPATCH_RAYS_DESC
5012{
5013 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5014 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5015 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5016 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5017 UINT Width;
5018 UINT Height;
5019 UINT Depth;
5020} D3D12_DISPATCH_RAYS_DESC;
5021
5022[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5023interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5024{
5025 void BeginRenderPass(
5026 [annotation("_In_")] UINT NumRenderTargets,
5027 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5028 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5029 D3D12_RENDER_PASS_FLAGS Flags
5030 );
5031
5032 void EndRenderPass();
5033
5034 void InitializeMetaCommand(
5035 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5036 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5037 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5038 );
5039
5040 void ExecuteMetaCommand(
5041 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5042 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5043 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5044 );
5045
5046 void BuildRaytracingAccelerationStructure(
5047 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5048 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5049 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5050 );
5051
5052 void EmitRaytracingAccelerationStructurePostbuildInfo(
5053 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5054 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5055 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5056
5057 void CopyRaytracingAccelerationStructure(
5058 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5059 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5060 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5061
5062 void SetPipelineState1(
5063 [annotation("_In_")] ID3D12StateObject* pStateObject);
5064
5065 void DispatchRays(
5066 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5067}
5068
5069typedef enum D3D12_SHADER_CACHE_MODE
5070{
5071 D3D12_SHADER_CACHE_MODE_MEMORY,
5072 D3D12_SHADER_CACHE_MODE_DISK,
5073} D3D12_SHADER_CACHE_MODE;
5074
5075typedef enum D3D12_SHADER_CACHE_FLAGS
5076{
5077 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5078 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5079 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5080} D3D12_SHADER_CACHE_FLAGS;
5081cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );")
5082
5083typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5084{
5085 GUID Identifier;
5086 D3D12_SHADER_CACHE_MODE Mode;
5087 D3D12_SHADER_CACHE_FLAGS Flags;
5088
5089 UINT MaximumInMemoryCacheSizeBytes;
5090 UINT MaximumInMemoryCacheEntries;
5091
5092 UINT MaximumValueFileSizeBytes;
5093
5094 UINT64 Version;
5095} D3D12_SHADER_CACHE_SESSION_DESC;
5096
5097[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
5098interface ID3D12ShaderCacheSession
5099 : ID3D12DeviceChild
5100{
5101 HRESULT FindValue(
5102 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5103 UINT KeySize,
5104 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
5105 [annotation("_Inout_")] UINT* pValueSize);
5106 HRESULT StoreValue(
5107 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5108 UINT KeySize,
5109 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
5110 UINT ValueSize);
5111
5112 void SetDeleteOnDestroy();
5113 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
5114};
5115
5116typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
5117{
5118 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
5119 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
5120 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
5121 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
5122} D3D12_SHADER_CACHE_KIND_FLAGS;
5123cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );")
5124
5125typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
5126{
5127 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
5128 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
5129 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
5130} D3D12_SHADER_CACHE_CONTROL_FLAGS;
5131cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );")
5132
5133[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
5134interface ID3D12Device9
5135 : ID3D12Device8
5136{
5137 HRESULT CreateShaderCacheSession(
5138 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
5139 REFIID riid,
5140 [annotation("_COM_Outptr_opt_")] void** ppvSession);
5141
5142 HRESULT ShaderCacheControl(
5143 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
5144 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
5145
5146 HRESULT CreateCommandQueue1(
5147 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
5148 REFIID CreatorID,
5149 [in] REFIID riid, // Expected: ID3D12CommandQueue
5150 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
5151 );
5152};
5153
5154
5155[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
5156interface ID3D12Tools
5157 : IUnknown
5158{
5159 void EnableShaderInstrumentation(BOOL bEnable);
5160 BOOL ShaderInstrumentationEnabled();
5161}
5162
5163typedef struct D3D12_SUBRESOURCE_DATA
5164{
5165 const void* pData;
5166 LONG_PTR RowPitch;
5167 LONG_PTR SlicePitch;
5168} D3D12_SUBRESOURCE_DATA;
5169
5170typedef struct D3D12_MEMCPY_DEST
5171{
5172 void* pData;
5173 SIZE_T RowPitch;
5174 SIZE_T SlicePitch;
5175} D3D12_MEMCPY_DEST;
5176
5177
5178
5179cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
5180cpp_quote( "#include \"d3d12sdklayers.h\" ")
5181cpp_quote( "#endif ")
5182
5183
5184cpp_quote("")
5185cpp_quote("///////////////////////////////////////////////////////////////////////////")
5186cpp_quote("// D3D12CreateDevice")
5187cpp_quote("// ------------------")
5188cpp_quote("//")
5189cpp_quote("// pAdapter")
5190cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
5191cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
5192cpp_quote("// MinimumFeatureLevel")
5193cpp_quote("// The minimum feature level required for successful device creation.")
5194cpp_quote("// riid")
5195cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
5196cpp_quote("// ppDevice")
5197cpp_quote("// Pointer to returned interface. May be NULL.")
5198cpp_quote("//")
5199cpp_quote("// Return Values")
5200cpp_quote("// Any of those documented for ")
5201cpp_quote("// CreateDXGIFactory1")
5202cpp_quote("// IDXGIFactory::EnumAdapters")
5203cpp_quote("// D3D12CreateDevice")
5204cpp_quote("//")
5205cpp_quote("///////////////////////////////////////////////////////////////////////////")
5206cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
5207cpp_quote(" D3D_FEATURE_LEVEL, ")
5208cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
5209cpp_quote("")
5210cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
5211cpp_quote(" _In_opt_ IUnknown* pAdapter,")
5212cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
5213cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
5214cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
5215cpp_quote("")
5216
5217cpp_quote("")
5218cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
5219cpp_quote("")
5220cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5221cpp_quote("")
5222
5223cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5224cpp_quote("// D3D12EnableExperimentalFeatures")
5225cpp_quote("//")
5226cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
5227cpp_quote("// ")
5228cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
5229cpp_quote("// a configuration struct that can be passed alongside the GUID.")
5230cpp_quote("// ")
5231cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
5232cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
5233cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
5234cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
5235cpp_quote("//")
5236cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
5237cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
5238cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
5239cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
5240cpp_quote("//")
5241cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
5242cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
5243cpp_quote("// in are known to be incompatible with each other, or other errors.")
5244cpp_quote("// Returns S_OK otherwise.")
5245cpp_quote("//")
5246cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5247cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
5248cpp_quote(" UINT NumFeatures,")
5249cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
5250cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
5251cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
5252cpp_quote("")
5253cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5254cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
5255cpp_quote("//")
5256cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
5257cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
5258cpp_quote("//")
5259cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5260cpp_quote("//")
5261cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5262cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
5263cpp_quote(" 0x76f5573e,")
5264cpp_quote(" 0xf13a,")
5265cpp_quote(" 0x40f5,")
5266cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
5267cpp_quote("};")
5268cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5269cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
5270cpp_quote("//")
5271cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
5272cpp_quote("// meaning texture tile data-inheritance is allowed.")
5273cpp_quote("//")
5274cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5275cpp_quote("//")
5276cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5277cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
5278cpp_quote(" 0xc9c4725f,")
5279cpp_quote(" 0xa81a,")
5280cpp_quote(" 0x4f56,")
5281cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
5282cpp_quote("};")
5283cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5284cpp_quote("// Experimental Feature: D3D12MetaCommand")
5285cpp_quote("//")
5286cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.")
5287cpp_quote("//")
5288cpp_quote("// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5289cpp_quote("//")
5290cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5291cpp_quote("static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */")
5292cpp_quote(" 0xc734c97e,")
5293cpp_quote(" 0x8077,")
5294cpp_quote(" 0x48c8,")
5295cpp_quote(" { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }")
5296cpp_quote("};")
5297
5298cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5299cpp_quote("// D3D12GetInterface")
5300cpp_quote("//")
5301cpp_quote("// Retrieve Global D3D12 Interface.")
5302cpp_quote("//")
5303cpp_quote("")
5304cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
5305cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
5306cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
5307cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
5308cpp_quote("")
5309cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
5310cpp_quote("")
5311cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5312cpp_quote("")
5313
5314//==================================================================================================================================
5315//
5316// SDK Configuration
5317//
5318//==================================================================================================================================
5319
5320[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
5321interface ID3D12SDKConfiguration
5322 : IUnknown
5323{
5324 HRESULT SetSDKVersion(
5325 UINT SDKVersion,
5326 [annotation("_In_z_")] LPCSTR SDKPath
5327 );
5328}
5329
5330
5331typedef enum D3D12_AXIS_SHADING_RATE
5332{
5333 D3D12_AXIS_SHADING_RATE_1X = 0x0,
5334 D3D12_AXIS_SHADING_RATE_2X = 0x1,
5335 D3D12_AXIS_SHADING_RATE_4X = 0x2
5336} D3D12_AXIS_SHADING_RATE;
5337
5338
5339cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
5340cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
5341
5342cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
5343
5344cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
5345cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
5346
5347typedef enum D3D12_SHADING_RATE
5348{
5349 D3D12_SHADING_RATE_1X1 = 0x0,
5350 D3D12_SHADING_RATE_1X2 = 0x1,
5351 D3D12_SHADING_RATE_2X1 = 0x4,
5352 D3D12_SHADING_RATE_2X2 = 0x5,
5353 D3D12_SHADING_RATE_2X4 = 0x6,
5354 D3D12_SHADING_RATE_4X2 = 0x9,
5355 D3D12_SHADING_RATE_4X4 = 0xA
5356} D3D12_SHADING_RATE;
5357
5358typedef enum D3D12_SHADING_RATE_COMBINER
5359{
5360 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
5361 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
5362 D3D12_SHADING_RATE_COMBINER_MIN = 2,
5363 D3D12_SHADING_RATE_COMBINER_MAX = 3,
5364 D3D12_SHADING_RATE_COMBINER_SUM = 4,
5365} D3D12_SHADING_RATE_COMBINER;
5366
5367[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
5368interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
5369{
5370 void RSSetShadingRate(
5371 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
5372 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
5373
5374 void RSSetShadingRateImage(
5375 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
5376}
5377
5378typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
5379{
5380 UINT ThreadGroupCountX;
5381 UINT ThreadGroupCountY;
5382 UINT ThreadGroupCountZ;
5383} D3D12_DISPATCH_MESH_ARGUMENTS;
5384
5385[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
5386interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
5387{
5388 void DispatchMesh(
5389 [annotation("_In_")] UINT ThreadGroupCountX,
5390 [annotation("_In_")] UINT ThreadGroupCountY,
5391 [annotation("_In_")] UINT ThreadGroupCountZ
5392 );
5393}
5394
5395
5396//----------------------------------------------------------------------------------------------------------
5397// Old types which are still supported by the runtime for app-compat
5398
5399cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
5400#pragma endregion
5401
5402cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
5403cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
5404cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
5405cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
5406cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
5407cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
5408cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
5409cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
5410cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
5411cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
5412cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
5413cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
5414cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
5415cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
5416cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
5417cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
5418cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
5419cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
5420cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
5421cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
5422cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
5423cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
5424cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
5425cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
5426cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
5427cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
5428cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
5429cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
5430cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
5431cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
5432cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
5433cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
5434cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
5435cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
5436cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
5437cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
5438cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
5439cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
5440cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
5441cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
5442cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
5443cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
5444cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
5445cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
5446cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
5447cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
5448cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
5449cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
5450cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
5451cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
5452cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
5453cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
5454cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
5455cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
5456cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
5457cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.h b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
new file mode 100644
index 0000000..5f99b6c
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
@@ -0,0 +1,659 @@
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.0625 */
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 _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 __DirectMLTensorFlowCreatorID_FWD_DEFINED__
91#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
92typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
93
94#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "OAIdl.h"
99#include "OCIdl.h"
100#include "d3d11on12.h"
101
102#ifdef __cplusplus
103extern "C"{
104#endif
105
106
107/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
108/* [local] */
109
110#include <winapifamily.h>
111#pragma region Desktop Family
112#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
113typedef
114enum D3D12_COMPATIBILITY_SHARED_FLAGS
115 {
116 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
117 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
118 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
119 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
120 } D3D12_COMPATIBILITY_SHARED_FLAGS;
121
122DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );
123typedef
124enum D3D12_REFLECT_SHARED_PROPERTY
125 {
126 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
127 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
128 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
129 } D3D12_REFLECT_SHARED_PROPERTY;
130
131
132
133extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
135
136#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
137#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
138
139/* interface ID3D12CompatibilityDevice */
140/* [unique][local][object][uuid] */
141
142
143EXTERN_C const IID IID_ID3D12CompatibilityDevice;
144
145#if defined(__cplusplus) && !defined(CINTERFACE)
146
147 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
148 ID3D12CompatibilityDevice : public IUnknown
149 {
150 public:
151 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
152 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
153 D3D12_HEAP_FLAGS HeapFlags,
154 _In_ const D3D12_RESOURCE_DESC *pDesc,
155 D3D12_RESOURCE_STATES InitialResourceState,
156 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
157 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
158 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
159 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
160 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
161 REFIID riid,
162 _COM_Outptr_opt_ void **ppResource) = 0;
163
164 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
165 _In_ const D3D12_HEAP_DESC *pHeapDesc,
166 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
167 REFIID riid,
168 _COM_Outptr_opt_ void **ppHeap) = 0;
169
170 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
171 _In_ ID3D12Object *pHeapOrResource,
172 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
173 _Out_writes_bytes_(DataSize) void *pData,
174 UINT DataSize) = 0;
175
176 };
177
178
179#else /* C style interface */
180
181 typedef struct ID3D12CompatibilityDeviceVtbl
182 {
183 BEGIN_INTERFACE
184
185 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
186 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
187 ID3D12CompatibilityDevice * This,
188 REFIID riid,
189 _COM_Outptr_ void **ppvObject);
190
191 DECLSPEC_XFGVIRT(IUnknown, AddRef)
192 ULONG ( STDMETHODCALLTYPE *AddRef )(
193 ID3D12CompatibilityDevice * This);
194
195 DECLSPEC_XFGVIRT(IUnknown, Release)
196 ULONG ( STDMETHODCALLTYPE *Release )(
197 ID3D12CompatibilityDevice * This);
198
199 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
200 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
201 ID3D12CompatibilityDevice * This,
202 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
203 D3D12_HEAP_FLAGS HeapFlags,
204 _In_ const D3D12_RESOURCE_DESC *pDesc,
205 D3D12_RESOURCE_STATES InitialResourceState,
206 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
207 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
208 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
209 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
210 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
211 REFIID riid,
212 _COM_Outptr_opt_ void **ppResource);
213
214 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
215 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
216 ID3D12CompatibilityDevice * This,
217 _In_ const D3D12_HEAP_DESC *pHeapDesc,
218 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
219 REFIID riid,
220 _COM_Outptr_opt_ void **ppHeap);
221
222 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
223 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
224 ID3D12CompatibilityDevice * This,
225 _In_ ID3D12Object *pHeapOrResource,
226 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
227 _Out_writes_bytes_(DataSize) void *pData,
228 UINT DataSize);
229
230 END_INTERFACE
231 } ID3D12CompatibilityDeviceVtbl;
232
233 interface ID3D12CompatibilityDevice
234 {
235 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
236 };
237
238
239
240#ifdef COBJMACROS
241
242
243#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
244 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
245
246#define ID3D12CompatibilityDevice_AddRef(This) \
247 ( (This)->lpVtbl -> AddRef(This) )
248
249#define ID3D12CompatibilityDevice_Release(This) \
250 ( (This)->lpVtbl -> Release(This) )
251
252
253#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
254 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
255
256#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
257 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
258
259#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
260 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
261
262#endif /* COBJMACROS */
263
264
265#endif /* C style interface */
266
267
268
269
270#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
271
272
273#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
274#define __D3D11On12CreatorID_INTERFACE_DEFINED__
275
276/* interface D3D11On12CreatorID */
277/* [unique][local][object][uuid] */
278
279
280EXTERN_C const IID IID_D3D11On12CreatorID;
281
282#if defined(__cplusplus) && !defined(CINTERFACE)
283
284 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
285 D3D11On12CreatorID : public IUnknown
286 {
287 public:
288 };
289
290
291#else /* C style interface */
292
293 typedef struct D3D11On12CreatorIDVtbl
294 {
295 BEGIN_INTERFACE
296
297 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
298 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
299 D3D11On12CreatorID * This,
300 REFIID riid,
301 _COM_Outptr_ void **ppvObject);
302
303 DECLSPEC_XFGVIRT(IUnknown, AddRef)
304 ULONG ( STDMETHODCALLTYPE *AddRef )(
305 D3D11On12CreatorID * This);
306
307 DECLSPEC_XFGVIRT(IUnknown, Release)
308 ULONG ( STDMETHODCALLTYPE *Release )(
309 D3D11On12CreatorID * This);
310
311 END_INTERFACE
312 } D3D11On12CreatorIDVtbl;
313
314 interface D3D11On12CreatorID
315 {
316 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
317 };
318
319
320
321#ifdef COBJMACROS
322
323
324#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
325 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
326
327#define D3D11On12CreatorID_AddRef(This) \
328 ( (This)->lpVtbl -> AddRef(This) )
329
330#define D3D11On12CreatorID_Release(This) \
331 ( (This)->lpVtbl -> Release(This) )
332
333
334#endif /* COBJMACROS */
335
336
337#endif /* C style interface */
338
339
340
341
342#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
343
344
345#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
346#define __D3D9On12CreatorID_INTERFACE_DEFINED__
347
348/* interface D3D9On12CreatorID */
349/* [unique][local][object][uuid] */
350
351
352EXTERN_C const IID IID_D3D9On12CreatorID;
353
354#if defined(__cplusplus) && !defined(CINTERFACE)
355
356 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
357 D3D9On12CreatorID : public IUnknown
358 {
359 public:
360 };
361
362
363#else /* C style interface */
364
365 typedef struct D3D9On12CreatorIDVtbl
366 {
367 BEGIN_INTERFACE
368
369 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
370 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
371 D3D9On12CreatorID * This,
372 REFIID riid,
373 _COM_Outptr_ void **ppvObject);
374
375 DECLSPEC_XFGVIRT(IUnknown, AddRef)
376 ULONG ( STDMETHODCALLTYPE *AddRef )(
377 D3D9On12CreatorID * This);
378
379 DECLSPEC_XFGVIRT(IUnknown, Release)
380 ULONG ( STDMETHODCALLTYPE *Release )(
381 D3D9On12CreatorID * This);
382
383 END_INTERFACE
384 } D3D9On12CreatorIDVtbl;
385
386 interface D3D9On12CreatorID
387 {
388 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
389 };
390
391
392
393#ifdef COBJMACROS
394
395
396#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
397 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
398
399#define D3D9On12CreatorID_AddRef(This) \
400 ( (This)->lpVtbl -> AddRef(This) )
401
402#define D3D9On12CreatorID_Release(This) \
403 ( (This)->lpVtbl -> Release(This) )
404
405
406#endif /* COBJMACROS */
407
408
409#endif /* C style interface */
410
411
412
413
414#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
415
416
417#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
418#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
419
420/* interface OpenGLOn12CreatorID */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_OpenGLOn12CreatorID;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
429 OpenGLOn12CreatorID : public IUnknown
430 {
431 public:
432 };
433
434
435#else /* C style interface */
436
437 typedef struct OpenGLOn12CreatorIDVtbl
438 {
439 BEGIN_INTERFACE
440
441 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
442 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
443 OpenGLOn12CreatorID * This,
444 REFIID riid,
445 _COM_Outptr_ void **ppvObject);
446
447 DECLSPEC_XFGVIRT(IUnknown, AddRef)
448 ULONG ( STDMETHODCALLTYPE *AddRef )(
449 OpenGLOn12CreatorID * This);
450
451 DECLSPEC_XFGVIRT(IUnknown, Release)
452 ULONG ( STDMETHODCALLTYPE *Release )(
453 OpenGLOn12CreatorID * This);
454
455 END_INTERFACE
456 } OpenGLOn12CreatorIDVtbl;
457
458 interface OpenGLOn12CreatorID
459 {
460 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
461 };
462
463
464
465#ifdef COBJMACROS
466
467
468#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
469 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
470
471#define OpenGLOn12CreatorID_AddRef(This) \
472 ( (This)->lpVtbl -> AddRef(This) )
473
474#define OpenGLOn12CreatorID_Release(This) \
475 ( (This)->lpVtbl -> Release(This) )
476
477
478#endif /* COBJMACROS */
479
480
481#endif /* C style interface */
482
483
484
485
486#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
487
488
489#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
490#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
491
492/* interface OpenCLOn12CreatorID */
493/* [unique][local][object][uuid] */
494
495
496EXTERN_C const IID IID_OpenCLOn12CreatorID;
497
498#if defined(__cplusplus) && !defined(CINTERFACE)
499
500 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
501 OpenCLOn12CreatorID : public IUnknown
502 {
503 public:
504 };
505
506
507#else /* C style interface */
508
509 typedef struct OpenCLOn12CreatorIDVtbl
510 {
511 BEGIN_INTERFACE
512
513 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
514 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
515 OpenCLOn12CreatorID * This,
516 REFIID riid,
517 _COM_Outptr_ void **ppvObject);
518
519 DECLSPEC_XFGVIRT(IUnknown, AddRef)
520 ULONG ( STDMETHODCALLTYPE *AddRef )(
521 OpenCLOn12CreatorID * This);
522
523 DECLSPEC_XFGVIRT(IUnknown, Release)
524 ULONG ( STDMETHODCALLTYPE *Release )(
525 OpenCLOn12CreatorID * This);
526
527 END_INTERFACE
528 } OpenCLOn12CreatorIDVtbl;
529
530 interface OpenCLOn12CreatorID
531 {
532 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
533 };
534
535
536
537#ifdef COBJMACROS
538
539
540#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
541 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
542
543#define OpenCLOn12CreatorID_AddRef(This) \
544 ( (This)->lpVtbl -> AddRef(This) )
545
546#define OpenCLOn12CreatorID_Release(This) \
547 ( (This)->lpVtbl -> Release(This) )
548
549
550#endif /* COBJMACROS */
551
552
553#endif /* C style interface */
554
555
556
557
558#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
559
560
561#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
562#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
563
564/* interface DirectMLTensorFlowCreatorID */
565/* [unique][local][object][uuid] */
566
567
568EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
569
570#if defined(__cplusplus) && !defined(CINTERFACE)
571
572 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
573 DirectMLTensorFlowCreatorID : public IUnknown
574 {
575 public:
576 };
577
578
579#else /* C style interface */
580
581 typedef struct DirectMLTensorFlowCreatorIDVtbl
582 {
583 BEGIN_INTERFACE
584
585 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
586 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
587 DirectMLTensorFlowCreatorID * This,
588 REFIID riid,
589 _COM_Outptr_ void **ppvObject);
590
591 DECLSPEC_XFGVIRT(IUnknown, AddRef)
592 ULONG ( STDMETHODCALLTYPE *AddRef )(
593 DirectMLTensorFlowCreatorID * This);
594
595 DECLSPEC_XFGVIRT(IUnknown, Release)
596 ULONG ( STDMETHODCALLTYPE *Release )(
597 DirectMLTensorFlowCreatorID * This);
598
599 END_INTERFACE
600 } DirectMLTensorFlowCreatorIDVtbl;
601
602 interface DirectMLTensorFlowCreatorID
603 {
604 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
605 };
606
607
608
609#ifdef COBJMACROS
610
611
612#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
613 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
614
615#define DirectMLTensorFlowCreatorID_AddRef(This) \
616 ( (This)->lpVtbl -> AddRef(This) )
617
618#define DirectMLTensorFlowCreatorID_Release(This) \
619 ( (This)->lpVtbl -> Release(This) )
620
621
622#endif /* COBJMACROS */
623
624
625#endif /* C style interface */
626
627
628
629
630#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
631
632
633/* interface __MIDL_itf_d3d12compatibility_0000_0006 */
634/* [local] */
635
636#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
637#pragma endregion
638DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
639DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
640DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
641DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
642DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
643DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
644
645
646extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_c_ifspec;
647extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_s_ifspec;
648
649/* Additional Prototypes for ALL interfaces */
650
651/* end of Additional Prototypes */
652
653#ifdef __cplusplus
654}
655#endif
656
657#endif
658
659
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
new file mode 100644
index 0000000..fae6f1a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
@@ -0,0 +1,88 @@
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(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
77interface DirectMLTensorFlowCreatorID : IUnknown { };
78
79
80cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
81#pragma endregion
82
83cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
84cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
85cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
86cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
87cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
88cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
new file mode 100644
index 0000000..54b75e4
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
@@ -0,0 +1,3657 @@
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.0625 */
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 _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 __ID3D12DebugDevice1_FWD_DEFINED__
98#define __ID3D12DebugDevice1_FWD_DEFINED__
99typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
100
101#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice_FWD_DEFINED__
105#define __ID3D12DebugDevice_FWD_DEFINED__
106typedef interface ID3D12DebugDevice ID3D12DebugDevice;
107
108#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
112#define __ID3D12DebugDevice2_FWD_DEFINED__
113typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
114
115#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
119#define __ID3D12DebugCommandQueue_FWD_DEFINED__
120typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
121
122#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
126#define __ID3D12DebugCommandList1_FWD_DEFINED__
127typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
128
129#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
133#define __ID3D12DebugCommandList_FWD_DEFINED__
134typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
135
136#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
140#define __ID3D12DebugCommandList2_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
142
143#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12SharingContract_FWD_DEFINED__
147#define __ID3D12SharingContract_FWD_DEFINED__
148typedef interface ID3D12SharingContract ID3D12SharingContract;
149
150#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12InfoQueue_FWD_DEFINED__
154#define __ID3D12InfoQueue_FWD_DEFINED__
155typedef interface ID3D12InfoQueue ID3D12InfoQueue;
156
157#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
161#define __ID3D12InfoQueue1_FWD_DEFINED__
162typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
163
164#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
165
166
167/* header files for imported files */
168#include "OAIdl.h"
169#include "OCIdl.h"
170#include "d3d12.h"
171
172#ifdef __cplusplus
173extern "C"{
174#endif
175
176
177/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
178/* [local] */
179
180#include <winapifamily.h>
181#pragma region App Family
182#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
183
184
185extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
186extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
187
188#ifndef __ID3D12Debug_INTERFACE_DEFINED__
189#define __ID3D12Debug_INTERFACE_DEFINED__
190
191/* interface ID3D12Debug */
192/* [unique][local][object][uuid] */
193
194
195EXTERN_C const IID IID_ID3D12Debug;
196
197#if defined(__cplusplus) && !defined(CINTERFACE)
198
199 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
200 ID3D12Debug : public IUnknown
201 {
202 public:
203 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
204
205 };
206
207
208#else /* C style interface */
209
210 typedef struct ID3D12DebugVtbl
211 {
212 BEGIN_INTERFACE
213
214 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
215 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
216 ID3D12Debug * This,
217 REFIID riid,
218 _COM_Outptr_ void **ppvObject);
219
220 DECLSPEC_XFGVIRT(IUnknown, AddRef)
221 ULONG ( STDMETHODCALLTYPE *AddRef )(
222 ID3D12Debug * This);
223
224 DECLSPEC_XFGVIRT(IUnknown, Release)
225 ULONG ( STDMETHODCALLTYPE *Release )(
226 ID3D12Debug * This);
227
228 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
229 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
230 ID3D12Debug * This);
231
232 END_INTERFACE
233 } ID3D12DebugVtbl;
234
235 interface ID3D12Debug
236 {
237 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
238 };
239
240
241
242#ifdef COBJMACROS
243
244
245#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
246 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
247
248#define ID3D12Debug_AddRef(This) \
249 ( (This)->lpVtbl -> AddRef(This) )
250
251#define ID3D12Debug_Release(This) \
252 ( (This)->lpVtbl -> Release(This) )
253
254
255#define ID3D12Debug_EnableDebugLayer(This) \
256 ( (This)->lpVtbl -> EnableDebugLayer(This) )
257
258#endif /* COBJMACROS */
259
260
261#endif /* C style interface */
262
263
264
265
266#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
267
268
269/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
270/* [local] */
271
272typedef
273enum D3D12_GPU_BASED_VALIDATION_FLAGS
274 {
275 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
276 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
277 } D3D12_GPU_BASED_VALIDATION_FLAGS;
278
279DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
280
281
282extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
283extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
284
285#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
286#define __ID3D12Debug1_INTERFACE_DEFINED__
287
288/* interface ID3D12Debug1 */
289/* [unique][local][object][uuid] */
290
291
292EXTERN_C const IID IID_ID3D12Debug1;
293
294#if defined(__cplusplus) && !defined(CINTERFACE)
295
296 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
297 ID3D12Debug1 : public IUnknown
298 {
299 public:
300 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
301
302 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
303 BOOL Enable) = 0;
304
305 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
306 BOOL Enable) = 0;
307
308 };
309
310
311#else /* C style interface */
312
313 typedef struct ID3D12Debug1Vtbl
314 {
315 BEGIN_INTERFACE
316
317 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
318 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
319 ID3D12Debug1 * This,
320 REFIID riid,
321 _COM_Outptr_ void **ppvObject);
322
323 DECLSPEC_XFGVIRT(IUnknown, AddRef)
324 ULONG ( STDMETHODCALLTYPE *AddRef )(
325 ID3D12Debug1 * This);
326
327 DECLSPEC_XFGVIRT(IUnknown, Release)
328 ULONG ( STDMETHODCALLTYPE *Release )(
329 ID3D12Debug1 * This);
330
331 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
332 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
333 ID3D12Debug1 * This);
334
335 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
336 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
337 ID3D12Debug1 * This,
338 BOOL Enable);
339
340 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
341 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
342 ID3D12Debug1 * This,
343 BOOL Enable);
344
345 END_INTERFACE
346 } ID3D12Debug1Vtbl;
347
348 interface ID3D12Debug1
349 {
350 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
351 };
352
353
354
355#ifdef COBJMACROS
356
357
358#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
359 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
360
361#define ID3D12Debug1_AddRef(This) \
362 ( (This)->lpVtbl -> AddRef(This) )
363
364#define ID3D12Debug1_Release(This) \
365 ( (This)->lpVtbl -> Release(This) )
366
367
368#define ID3D12Debug1_EnableDebugLayer(This) \
369 ( (This)->lpVtbl -> EnableDebugLayer(This) )
370
371#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
372 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
373
374#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
375 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
376
377#endif /* COBJMACROS */
378
379
380#endif /* C style interface */
381
382
383
384
385#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
386
387
388#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
389#define __ID3D12Debug2_INTERFACE_DEFINED__
390
391/* interface ID3D12Debug2 */
392/* [unique][local][object][uuid] */
393
394
395EXTERN_C const IID IID_ID3D12Debug2;
396
397#if defined(__cplusplus) && !defined(CINTERFACE)
398
399 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
400 ID3D12Debug2 : public IUnknown
401 {
402 public:
403 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
404 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
405
406 };
407
408
409#else /* C style interface */
410
411 typedef struct ID3D12Debug2Vtbl
412 {
413 BEGIN_INTERFACE
414
415 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
416 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
417 ID3D12Debug2 * This,
418 REFIID riid,
419 _COM_Outptr_ void **ppvObject);
420
421 DECLSPEC_XFGVIRT(IUnknown, AddRef)
422 ULONG ( STDMETHODCALLTYPE *AddRef )(
423 ID3D12Debug2 * This);
424
425 DECLSPEC_XFGVIRT(IUnknown, Release)
426 ULONG ( STDMETHODCALLTYPE *Release )(
427 ID3D12Debug2 * This);
428
429 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
430 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
431 ID3D12Debug2 * This,
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
433
434 END_INTERFACE
435 } ID3D12Debug2Vtbl;
436
437 interface ID3D12Debug2
438 {
439 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
440 };
441
442
443
444#ifdef COBJMACROS
445
446
447#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
449
450#define ID3D12Debug2_AddRef(This) \
451 ( (This)->lpVtbl -> AddRef(This) )
452
453#define ID3D12Debug2_Release(This) \
454 ( (This)->lpVtbl -> Release(This) )
455
456
457#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
458 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
459
460#endif /* COBJMACROS */
461
462
463#endif /* C style interface */
464
465
466
467
468#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
469
470
471#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
472#define __ID3D12Debug3_INTERFACE_DEFINED__
473
474/* interface ID3D12Debug3 */
475/* [unique][local][object][uuid] */
476
477
478EXTERN_C const IID IID_ID3D12Debug3;
479
480#if defined(__cplusplus) && !defined(CINTERFACE)
481
482 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
483 ID3D12Debug3 : public ID3D12Debug
484 {
485 public:
486 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
487 BOOL Enable) = 0;
488
489 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
490 BOOL Enable) = 0;
491
492 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
493 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
494
495 };
496
497
498#else /* C style interface */
499
500 typedef struct ID3D12Debug3Vtbl
501 {
502 BEGIN_INTERFACE
503
504 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
505 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
506 ID3D12Debug3 * This,
507 REFIID riid,
508 _COM_Outptr_ void **ppvObject);
509
510 DECLSPEC_XFGVIRT(IUnknown, AddRef)
511 ULONG ( STDMETHODCALLTYPE *AddRef )(
512 ID3D12Debug3 * This);
513
514 DECLSPEC_XFGVIRT(IUnknown, Release)
515 ULONG ( STDMETHODCALLTYPE *Release )(
516 ID3D12Debug3 * This);
517
518 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
519 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
520 ID3D12Debug3 * This);
521
522 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
523 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
524 ID3D12Debug3 * This,
525 BOOL Enable);
526
527 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
528 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
529 ID3D12Debug3 * This,
530 BOOL Enable);
531
532 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
533 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
534 ID3D12Debug3 * This,
535 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
536
537 END_INTERFACE
538 } ID3D12Debug3Vtbl;
539
540 interface ID3D12Debug3
541 {
542 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
543 };
544
545
546
547#ifdef COBJMACROS
548
549
550#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
551 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
552
553#define ID3D12Debug3_AddRef(This) \
554 ( (This)->lpVtbl -> AddRef(This) )
555
556#define ID3D12Debug3_Release(This) \
557 ( (This)->lpVtbl -> Release(This) )
558
559
560#define ID3D12Debug3_EnableDebugLayer(This) \
561 ( (This)->lpVtbl -> EnableDebugLayer(This) )
562
563
564#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
565 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
566
567#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
568 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
569
570#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
571 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
572
573#endif /* COBJMACROS */
574
575
576#endif /* C style interface */
577
578
579
580
581#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
582
583
584#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
585#define __ID3D12Debug4_INTERFACE_DEFINED__
586
587/* interface ID3D12Debug4 */
588/* [unique][local][object][uuid] */
589
590
591EXTERN_C const IID IID_ID3D12Debug4;
592
593#if defined(__cplusplus) && !defined(CINTERFACE)
594
595 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
596 ID3D12Debug4 : public ID3D12Debug3
597 {
598 public:
599 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
600
601 };
602
603
604#else /* C style interface */
605
606 typedef struct ID3D12Debug4Vtbl
607 {
608 BEGIN_INTERFACE
609
610 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
611 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
612 ID3D12Debug4 * This,
613 REFIID riid,
614 _COM_Outptr_ void **ppvObject);
615
616 DECLSPEC_XFGVIRT(IUnknown, AddRef)
617 ULONG ( STDMETHODCALLTYPE *AddRef )(
618 ID3D12Debug4 * This);
619
620 DECLSPEC_XFGVIRT(IUnknown, Release)
621 ULONG ( STDMETHODCALLTYPE *Release )(
622 ID3D12Debug4 * This);
623
624 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
625 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
626 ID3D12Debug4 * This);
627
628 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
629 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
630 ID3D12Debug4 * This,
631 BOOL Enable);
632
633 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
634 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
635 ID3D12Debug4 * This,
636 BOOL Enable);
637
638 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
639 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
640 ID3D12Debug4 * This,
641 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
642
643 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
644 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
645 ID3D12Debug4 * This);
646
647 END_INTERFACE
648 } ID3D12Debug4Vtbl;
649
650 interface ID3D12Debug4
651 {
652 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
653 };
654
655
656
657#ifdef COBJMACROS
658
659
660#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
661 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
662
663#define ID3D12Debug4_AddRef(This) \
664 ( (This)->lpVtbl -> AddRef(This) )
665
666#define ID3D12Debug4_Release(This) \
667 ( (This)->lpVtbl -> Release(This) )
668
669
670#define ID3D12Debug4_EnableDebugLayer(This) \
671 ( (This)->lpVtbl -> EnableDebugLayer(This) )
672
673
674#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
675 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
676
677#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
678 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
679
680#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
681 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
682
683
684#define ID3D12Debug4_DisableDebugLayer(This) \
685 ( (This)->lpVtbl -> DisableDebugLayer(This) )
686
687#endif /* COBJMACROS */
688
689
690#endif /* C style interface */
691
692
693
694
695#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
696
697
698#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
699#define __ID3D12Debug5_INTERFACE_DEFINED__
700
701/* interface ID3D12Debug5 */
702/* [unique][local][object][uuid] */
703
704
705EXTERN_C const IID IID_ID3D12Debug5;
706
707#if defined(__cplusplus) && !defined(CINTERFACE)
708
709 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
710 ID3D12Debug5 : public ID3D12Debug4
711 {
712 public:
713 virtual void STDMETHODCALLTYPE SetEnableAutoName(
714 BOOL Enable) = 0;
715
716 };
717
718
719#else /* C style interface */
720
721 typedef struct ID3D12Debug5Vtbl
722 {
723 BEGIN_INTERFACE
724
725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
727 ID3D12Debug5 * This,
728 REFIID riid,
729 _COM_Outptr_ void **ppvObject);
730
731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
732 ULONG ( STDMETHODCALLTYPE *AddRef )(
733 ID3D12Debug5 * This);
734
735 DECLSPEC_XFGVIRT(IUnknown, Release)
736 ULONG ( STDMETHODCALLTYPE *Release )(
737 ID3D12Debug5 * This);
738
739 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
740 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
741 ID3D12Debug5 * This);
742
743 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
744 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
745 ID3D12Debug5 * This,
746 BOOL Enable);
747
748 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
749 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
750 ID3D12Debug5 * This,
751 BOOL Enable);
752
753 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
754 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
755 ID3D12Debug5 * This,
756 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
757
758 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
759 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
760 ID3D12Debug5 * This);
761
762 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
763 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
764 ID3D12Debug5 * This,
765 BOOL Enable);
766
767 END_INTERFACE
768 } ID3D12Debug5Vtbl;
769
770 interface ID3D12Debug5
771 {
772 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
773 };
774
775
776
777#ifdef COBJMACROS
778
779
780#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
781 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
782
783#define ID3D12Debug5_AddRef(This) \
784 ( (This)->lpVtbl -> AddRef(This) )
785
786#define ID3D12Debug5_Release(This) \
787 ( (This)->lpVtbl -> Release(This) )
788
789
790#define ID3D12Debug5_EnableDebugLayer(This) \
791 ( (This)->lpVtbl -> EnableDebugLayer(This) )
792
793
794#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
795 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
796
797#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
798 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
799
800#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
801 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
802
803
804#define ID3D12Debug5_DisableDebugLayer(This) \
805 ( (This)->lpVtbl -> DisableDebugLayer(This) )
806
807
808#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
809 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
810
811#endif /* COBJMACROS */
812
813
814#endif /* C style interface */
815
816
817
818
819#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
820
821
822/* interface __MIDL_itf_d3d12sdklayers_0000_0006 */
823/* [local] */
824
825DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
826typedef
827enum D3D12_RLDO_FLAGS
828 {
829 D3D12_RLDO_NONE = 0,
830 D3D12_RLDO_SUMMARY = 0x1,
831 D3D12_RLDO_DETAIL = 0x2,
832 D3D12_RLDO_IGNORE_INTERNAL = 0x4
833 } D3D12_RLDO_FLAGS;
834
835DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
836typedef
837enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
838 {
839 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
840 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
841 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 )
842 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
843
844typedef
845enum D3D12_DEBUG_FEATURE
846 {
847 D3D12_DEBUG_FEATURE_NONE = 0,
848 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
849 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
850 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
851 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
852 } D3D12_DEBUG_FEATURE;
853
854DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
855typedef
856enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
857 {
858 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
859 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
860 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
861 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
862 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
863 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
864
865typedef
866enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
867 {
868 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
869 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
870 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
871 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
872 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
873 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
874
875DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
876typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
877 {
878 UINT MaxMessagesPerCommandList;
879 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
880 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
881 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
882
883typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
884 {
885 FLOAT SlowdownFactor;
886 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
887
888
889
890extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_c_ifspec;
891extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_s_ifspec;
892
893#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
894#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
895
896/* interface ID3D12DebugDevice1 */
897/* [unique][local][object][uuid] */
898
899
900EXTERN_C const IID IID_ID3D12DebugDevice1;
901
902#if defined(__cplusplus) && !defined(CINTERFACE)
903
904 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
905 ID3D12DebugDevice1 : public IUnknown
906 {
907 public:
908 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
909 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
910 _In_reads_bytes_(DataSize) const void *pData,
911 UINT DataSize) = 0;
912
913 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
914 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
915 _Out_writes_bytes_(DataSize) void *pData,
916 UINT DataSize) = 0;
917
918 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
919 D3D12_RLDO_FLAGS Flags) = 0;
920
921 };
922
923
924#else /* C style interface */
925
926 typedef struct ID3D12DebugDevice1Vtbl
927 {
928 BEGIN_INTERFACE
929
930 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
931 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
932 ID3D12DebugDevice1 * This,
933 REFIID riid,
934 _COM_Outptr_ void **ppvObject);
935
936 DECLSPEC_XFGVIRT(IUnknown, AddRef)
937 ULONG ( STDMETHODCALLTYPE *AddRef )(
938 ID3D12DebugDevice1 * This);
939
940 DECLSPEC_XFGVIRT(IUnknown, Release)
941 ULONG ( STDMETHODCALLTYPE *Release )(
942 ID3D12DebugDevice1 * This);
943
944 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
945 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
946 ID3D12DebugDevice1 * This,
947 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
948 _In_reads_bytes_(DataSize) const void *pData,
949 UINT DataSize);
950
951 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
952 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
953 ID3D12DebugDevice1 * This,
954 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
955 _Out_writes_bytes_(DataSize) void *pData,
956 UINT DataSize);
957
958 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
959 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
960 ID3D12DebugDevice1 * This,
961 D3D12_RLDO_FLAGS Flags);
962
963 END_INTERFACE
964 } ID3D12DebugDevice1Vtbl;
965
966 interface ID3D12DebugDevice1
967 {
968 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
969 };
970
971
972
973#ifdef COBJMACROS
974
975
976#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
977 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
978
979#define ID3D12DebugDevice1_AddRef(This) \
980 ( (This)->lpVtbl -> AddRef(This) )
981
982#define ID3D12DebugDevice1_Release(This) \
983 ( (This)->lpVtbl -> Release(This) )
984
985
986#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
987 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
988
989#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
990 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
991
992#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
993 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
994
995#endif /* COBJMACROS */
996
997
998#endif /* C style interface */
999
1000
1001
1002
1003#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1004
1005
1006#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1007#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1008
1009/* interface ID3D12DebugDevice */
1010/* [unique][local][object][uuid] */
1011
1012
1013EXTERN_C const IID IID_ID3D12DebugDevice;
1014
1015#if defined(__cplusplus) && !defined(CINTERFACE)
1016
1017 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1018 ID3D12DebugDevice : public IUnknown
1019 {
1020 public:
1021 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1022 D3D12_DEBUG_FEATURE Mask) = 0;
1023
1024 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1025
1026 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1027 D3D12_RLDO_FLAGS Flags) = 0;
1028
1029 };
1030
1031
1032#else /* C style interface */
1033
1034 typedef struct ID3D12DebugDeviceVtbl
1035 {
1036 BEGIN_INTERFACE
1037
1038 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1039 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1040 ID3D12DebugDevice * This,
1041 REFIID riid,
1042 _COM_Outptr_ void **ppvObject);
1043
1044 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1045 ULONG ( STDMETHODCALLTYPE *AddRef )(
1046 ID3D12DebugDevice * This);
1047
1048 DECLSPEC_XFGVIRT(IUnknown, Release)
1049 ULONG ( STDMETHODCALLTYPE *Release )(
1050 ID3D12DebugDevice * This);
1051
1052 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1053 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1054 ID3D12DebugDevice * This,
1055 D3D12_DEBUG_FEATURE Mask);
1056
1057 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1058 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1059 ID3D12DebugDevice * This);
1060
1061 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1062 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1063 ID3D12DebugDevice * This,
1064 D3D12_RLDO_FLAGS Flags);
1065
1066 END_INTERFACE
1067 } ID3D12DebugDeviceVtbl;
1068
1069 interface ID3D12DebugDevice
1070 {
1071 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1072 };
1073
1074
1075
1076#ifdef COBJMACROS
1077
1078
1079#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1080 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1081
1082#define ID3D12DebugDevice_AddRef(This) \
1083 ( (This)->lpVtbl -> AddRef(This) )
1084
1085#define ID3D12DebugDevice_Release(This) \
1086 ( (This)->lpVtbl -> Release(This) )
1087
1088
1089#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1090 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1091
1092#define ID3D12DebugDevice_GetFeatureMask(This) \
1093 ( (This)->lpVtbl -> GetFeatureMask(This) )
1094
1095#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1096 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1097
1098#endif /* COBJMACROS */
1099
1100
1101#endif /* C style interface */
1102
1103
1104
1105
1106#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1107
1108
1109#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1110#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1111
1112/* interface ID3D12DebugDevice2 */
1113/* [unique][local][object][uuid] */
1114
1115
1116EXTERN_C const IID IID_ID3D12DebugDevice2;
1117
1118#if defined(__cplusplus) && !defined(CINTERFACE)
1119
1120 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1121 ID3D12DebugDevice2 : public ID3D12DebugDevice
1122 {
1123 public:
1124 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _In_reads_bytes_(DataSize) const void *pData,
1127 UINT DataSize) = 0;
1128
1129 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1130 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1131 _Out_writes_bytes_(DataSize) void *pData,
1132 UINT DataSize) = 0;
1133
1134 };
1135
1136
1137#else /* C style interface */
1138
1139 typedef struct ID3D12DebugDevice2Vtbl
1140 {
1141 BEGIN_INTERFACE
1142
1143 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1144 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1145 ID3D12DebugDevice2 * This,
1146 REFIID riid,
1147 _COM_Outptr_ void **ppvObject);
1148
1149 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1150 ULONG ( STDMETHODCALLTYPE *AddRef )(
1151 ID3D12DebugDevice2 * This);
1152
1153 DECLSPEC_XFGVIRT(IUnknown, Release)
1154 ULONG ( STDMETHODCALLTYPE *Release )(
1155 ID3D12DebugDevice2 * This);
1156
1157 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1158 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1159 ID3D12DebugDevice2 * This,
1160 D3D12_DEBUG_FEATURE Mask);
1161
1162 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1163 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1164 ID3D12DebugDevice2 * This);
1165
1166 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1167 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1168 ID3D12DebugDevice2 * This,
1169 D3D12_RLDO_FLAGS Flags);
1170
1171 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1172 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1173 ID3D12DebugDevice2 * This,
1174 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1175 _In_reads_bytes_(DataSize) const void *pData,
1176 UINT DataSize);
1177
1178 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1179 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1180 ID3D12DebugDevice2 * This,
1181 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1182 _Out_writes_bytes_(DataSize) void *pData,
1183 UINT DataSize);
1184
1185 END_INTERFACE
1186 } ID3D12DebugDevice2Vtbl;
1187
1188 interface ID3D12DebugDevice2
1189 {
1190 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1191 };
1192
1193
1194
1195#ifdef COBJMACROS
1196
1197
1198#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1200
1201#define ID3D12DebugDevice2_AddRef(This) \
1202 ( (This)->lpVtbl -> AddRef(This) )
1203
1204#define ID3D12DebugDevice2_Release(This) \
1205 ( (This)->lpVtbl -> Release(This) )
1206
1207
1208#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1209 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1210
1211#define ID3D12DebugDevice2_GetFeatureMask(This) \
1212 ( (This)->lpVtbl -> GetFeatureMask(This) )
1213
1214#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1215 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1216
1217
1218#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1219 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1220
1221#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1222 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1223
1224#endif /* COBJMACROS */
1225
1226
1227#endif /* C style interface */
1228
1229
1230
1231
1232#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1233
1234
1235/* interface __MIDL_itf_d3d12sdklayers_0000_0009 */
1236/* [local] */
1237
1238DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1239
1240
1241extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_c_ifspec;
1242extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_s_ifspec;
1243
1244#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1245#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1246
1247/* interface ID3D12DebugCommandQueue */
1248/* [unique][local][object][uuid] */
1249
1250
1251EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1252
1253#if defined(__cplusplus) && !defined(CINTERFACE)
1254
1255 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1256 ID3D12DebugCommandQueue : public IUnknown
1257 {
1258 public:
1259 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1260 _In_ ID3D12Resource *pResource,
1261 UINT Subresource,
1262 UINT State) = 0;
1263
1264 };
1265
1266
1267#else /* C style interface */
1268
1269 typedef struct ID3D12DebugCommandQueueVtbl
1270 {
1271 BEGIN_INTERFACE
1272
1273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1275 ID3D12DebugCommandQueue * This,
1276 REFIID riid,
1277 _COM_Outptr_ void **ppvObject);
1278
1279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1280 ULONG ( STDMETHODCALLTYPE *AddRef )(
1281 ID3D12DebugCommandQueue * This);
1282
1283 DECLSPEC_XFGVIRT(IUnknown, Release)
1284 ULONG ( STDMETHODCALLTYPE *Release )(
1285 ID3D12DebugCommandQueue * This);
1286
1287 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1288 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1289 ID3D12DebugCommandQueue * This,
1290 _In_ ID3D12Resource *pResource,
1291 UINT Subresource,
1292 UINT State);
1293
1294 END_INTERFACE
1295 } ID3D12DebugCommandQueueVtbl;
1296
1297 interface ID3D12DebugCommandQueue
1298 {
1299 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1300 };
1301
1302
1303
1304#ifdef COBJMACROS
1305
1306
1307#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1308 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1309
1310#define ID3D12DebugCommandQueue_AddRef(This) \
1311 ( (This)->lpVtbl -> AddRef(This) )
1312
1313#define ID3D12DebugCommandQueue_Release(This) \
1314 ( (This)->lpVtbl -> Release(This) )
1315
1316
1317#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1318 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1319
1320#endif /* COBJMACROS */
1321
1322
1323#endif /* C style interface */
1324
1325
1326
1327
1328#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1329
1330
1331/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1332/* [local] */
1333
1334typedef
1335enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1336 {
1337 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1338 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1339
1340typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1341 {
1342 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1343 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1344
1345
1346
1347extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1348extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1349
1350#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1351#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1352
1353/* interface ID3D12DebugCommandList1 */
1354/* [unique][local][object][uuid] */
1355
1356
1357EXTERN_C const IID IID_ID3D12DebugCommandList1;
1358
1359#if defined(__cplusplus) && !defined(CINTERFACE)
1360
1361 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1362 ID3D12DebugCommandList1 : public IUnknown
1363 {
1364 public:
1365 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1366 _In_ ID3D12Resource *pResource,
1367 UINT Subresource,
1368 UINT State) = 0;
1369
1370 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1371 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1372 _In_reads_bytes_(DataSize) const void *pData,
1373 UINT DataSize) = 0;
1374
1375 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1376 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1377 _Out_writes_bytes_(DataSize) void *pData,
1378 UINT DataSize) = 0;
1379
1380 };
1381
1382
1383#else /* C style interface */
1384
1385 typedef struct ID3D12DebugCommandList1Vtbl
1386 {
1387 BEGIN_INTERFACE
1388
1389 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1390 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1391 ID3D12DebugCommandList1 * This,
1392 REFIID riid,
1393 _COM_Outptr_ void **ppvObject);
1394
1395 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1396 ULONG ( STDMETHODCALLTYPE *AddRef )(
1397 ID3D12DebugCommandList1 * This);
1398
1399 DECLSPEC_XFGVIRT(IUnknown, Release)
1400 ULONG ( STDMETHODCALLTYPE *Release )(
1401 ID3D12DebugCommandList1 * This);
1402
1403 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1404 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1405 ID3D12DebugCommandList1 * This,
1406 _In_ ID3D12Resource *pResource,
1407 UINT Subresource,
1408 UINT State);
1409
1410 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1411 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1412 ID3D12DebugCommandList1 * This,
1413 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1414 _In_reads_bytes_(DataSize) const void *pData,
1415 UINT DataSize);
1416
1417 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1418 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1419 ID3D12DebugCommandList1 * This,
1420 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1421 _Out_writes_bytes_(DataSize) void *pData,
1422 UINT DataSize);
1423
1424 END_INTERFACE
1425 } ID3D12DebugCommandList1Vtbl;
1426
1427 interface ID3D12DebugCommandList1
1428 {
1429 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1430 };
1431
1432
1433
1434#ifdef COBJMACROS
1435
1436
1437#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1438 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1439
1440#define ID3D12DebugCommandList1_AddRef(This) \
1441 ( (This)->lpVtbl -> AddRef(This) )
1442
1443#define ID3D12DebugCommandList1_Release(This) \
1444 ( (This)->lpVtbl -> Release(This) )
1445
1446
1447#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1448 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1449
1450#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1451 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1452
1453#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1454 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1455
1456#endif /* COBJMACROS */
1457
1458
1459#endif /* C style interface */
1460
1461
1462
1463
1464#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1465
1466
1467#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1468#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1469
1470/* interface ID3D12DebugCommandList */
1471/* [unique][local][object][uuid] */
1472
1473
1474EXTERN_C const IID IID_ID3D12DebugCommandList;
1475
1476#if defined(__cplusplus) && !defined(CINTERFACE)
1477
1478 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1479 ID3D12DebugCommandList : public IUnknown
1480 {
1481 public:
1482 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1483 _In_ ID3D12Resource *pResource,
1484 UINT Subresource,
1485 UINT State) = 0;
1486
1487 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1488 D3D12_DEBUG_FEATURE Mask) = 0;
1489
1490 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1491
1492 };
1493
1494
1495#else /* C style interface */
1496
1497 typedef struct ID3D12DebugCommandListVtbl
1498 {
1499 BEGIN_INTERFACE
1500
1501 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1502 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1503 ID3D12DebugCommandList * This,
1504 REFIID riid,
1505 _COM_Outptr_ void **ppvObject);
1506
1507 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1508 ULONG ( STDMETHODCALLTYPE *AddRef )(
1509 ID3D12DebugCommandList * This);
1510
1511 DECLSPEC_XFGVIRT(IUnknown, Release)
1512 ULONG ( STDMETHODCALLTYPE *Release )(
1513 ID3D12DebugCommandList * This);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1516 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1517 ID3D12DebugCommandList * This,
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 UINT State);
1521
1522 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1523 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1524 ID3D12DebugCommandList * This,
1525 D3D12_DEBUG_FEATURE Mask);
1526
1527 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1528 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1529 ID3D12DebugCommandList * This);
1530
1531 END_INTERFACE
1532 } ID3D12DebugCommandListVtbl;
1533
1534 interface ID3D12DebugCommandList
1535 {
1536 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1537 };
1538
1539
1540
1541#ifdef COBJMACROS
1542
1543
1544#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1545 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1546
1547#define ID3D12DebugCommandList_AddRef(This) \
1548 ( (This)->lpVtbl -> AddRef(This) )
1549
1550#define ID3D12DebugCommandList_Release(This) \
1551 ( (This)->lpVtbl -> Release(This) )
1552
1553
1554#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1555 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1556
1557#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1558 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1559
1560#define ID3D12DebugCommandList_GetFeatureMask(This) \
1561 ( (This)->lpVtbl -> GetFeatureMask(This) )
1562
1563#endif /* COBJMACROS */
1564
1565
1566#endif /* C style interface */
1567
1568
1569
1570
1571#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1572
1573
1574#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1575#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1576
1577/* interface ID3D12DebugCommandList2 */
1578/* [unique][local][object][uuid] */
1579
1580
1581EXTERN_C const IID IID_ID3D12DebugCommandList2;
1582
1583#if defined(__cplusplus) && !defined(CINTERFACE)
1584
1585 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1586 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1587 {
1588 public:
1589 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1590 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1591 _In_reads_bytes_(DataSize) const void *pData,
1592 UINT DataSize) = 0;
1593
1594 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1595 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1596 _Out_writes_bytes_(DataSize) void *pData,
1597 UINT DataSize) = 0;
1598
1599 };
1600
1601
1602#else /* C style interface */
1603
1604 typedef struct ID3D12DebugCommandList2Vtbl
1605 {
1606 BEGIN_INTERFACE
1607
1608 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1609 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1610 ID3D12DebugCommandList2 * This,
1611 REFIID riid,
1612 _COM_Outptr_ void **ppvObject);
1613
1614 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1615 ULONG ( STDMETHODCALLTYPE *AddRef )(
1616 ID3D12DebugCommandList2 * This);
1617
1618 DECLSPEC_XFGVIRT(IUnknown, Release)
1619 ULONG ( STDMETHODCALLTYPE *Release )(
1620 ID3D12DebugCommandList2 * This);
1621
1622 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1623 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1624 ID3D12DebugCommandList2 * This,
1625 _In_ ID3D12Resource *pResource,
1626 UINT Subresource,
1627 UINT State);
1628
1629 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1630 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1631 ID3D12DebugCommandList2 * This,
1632 D3D12_DEBUG_FEATURE Mask);
1633
1634 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1635 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1636 ID3D12DebugCommandList2 * This);
1637
1638 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1639 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1640 ID3D12DebugCommandList2 * This,
1641 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1642 _In_reads_bytes_(DataSize) const void *pData,
1643 UINT DataSize);
1644
1645 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1646 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1647 ID3D12DebugCommandList2 * This,
1648 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1649 _Out_writes_bytes_(DataSize) void *pData,
1650 UINT DataSize);
1651
1652 END_INTERFACE
1653 } ID3D12DebugCommandList2Vtbl;
1654
1655 interface ID3D12DebugCommandList2
1656 {
1657 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1658 };
1659
1660
1661
1662#ifdef COBJMACROS
1663
1664
1665#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1666 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1667
1668#define ID3D12DebugCommandList2_AddRef(This) \
1669 ( (This)->lpVtbl -> AddRef(This) )
1670
1671#define ID3D12DebugCommandList2_Release(This) \
1672 ( (This)->lpVtbl -> Release(This) )
1673
1674
1675#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1676 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1677
1678#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1679 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1680
1681#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1682 ( (This)->lpVtbl -> GetFeatureMask(This) )
1683
1684
1685#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1686 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1687
1688#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1689 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1690
1691#endif /* COBJMACROS */
1692
1693
1694#endif /* C style interface */
1695
1696
1697
1698
1699#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1700
1701
1702#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
1703#define __ID3D12SharingContract_INTERFACE_DEFINED__
1704
1705/* interface ID3D12SharingContract */
1706/* [unique][local][object][uuid] */
1707
1708
1709EXTERN_C const IID IID_ID3D12SharingContract;
1710
1711#if defined(__cplusplus) && !defined(CINTERFACE)
1712
1713 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
1714 ID3D12SharingContract : public IUnknown
1715 {
1716 public:
1717 virtual void STDMETHODCALLTYPE Present(
1718 _In_ ID3D12Resource *pResource,
1719 UINT Subresource,
1720 _In_ HWND window) = 0;
1721
1722 virtual void STDMETHODCALLTYPE SharedFenceSignal(
1723 _In_ ID3D12Fence *pFence,
1724 UINT64 FenceValue) = 0;
1725
1726 virtual void STDMETHODCALLTYPE BeginCapturableWork(
1727 _In_ REFGUID guid) = 0;
1728
1729 virtual void STDMETHODCALLTYPE EndCapturableWork(
1730 _In_ REFGUID guid) = 0;
1731
1732 };
1733
1734
1735#else /* C style interface */
1736
1737 typedef struct ID3D12SharingContractVtbl
1738 {
1739 BEGIN_INTERFACE
1740
1741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1743 ID3D12SharingContract * This,
1744 REFIID riid,
1745 _COM_Outptr_ void **ppvObject);
1746
1747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1748 ULONG ( STDMETHODCALLTYPE *AddRef )(
1749 ID3D12SharingContract * This);
1750
1751 DECLSPEC_XFGVIRT(IUnknown, Release)
1752 ULONG ( STDMETHODCALLTYPE *Release )(
1753 ID3D12SharingContract * This);
1754
1755 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
1756 void ( STDMETHODCALLTYPE *Present )(
1757 ID3D12SharingContract * This,
1758 _In_ ID3D12Resource *pResource,
1759 UINT Subresource,
1760 _In_ HWND window);
1761
1762 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
1763 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
1764 ID3D12SharingContract * This,
1765 _In_ ID3D12Fence *pFence,
1766 UINT64 FenceValue);
1767
1768 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
1769 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
1770 ID3D12SharingContract * This,
1771 _In_ REFGUID guid);
1772
1773 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
1774 void ( STDMETHODCALLTYPE *EndCapturableWork )(
1775 ID3D12SharingContract * This,
1776 _In_ REFGUID guid);
1777
1778 END_INTERFACE
1779 } ID3D12SharingContractVtbl;
1780
1781 interface ID3D12SharingContract
1782 {
1783 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
1784 };
1785
1786
1787
1788#ifdef COBJMACROS
1789
1790
1791#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
1792 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1793
1794#define ID3D12SharingContract_AddRef(This) \
1795 ( (This)->lpVtbl -> AddRef(This) )
1796
1797#define ID3D12SharingContract_Release(This) \
1798 ( (This)->lpVtbl -> Release(This) )
1799
1800
1801#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
1802 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
1803
1804#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
1805 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
1806
1807#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
1808 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
1809
1810#define ID3D12SharingContract_EndCapturableWork(This,guid) \
1811 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
1812
1813#endif /* COBJMACROS */
1814
1815
1816#endif /* C style interface */
1817
1818
1819
1820
1821#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
1822
1823
1824/* interface __MIDL_itf_d3d12sdklayers_0000_0014 */
1825/* [local] */
1826
1827typedef
1828enum D3D12_MESSAGE_CATEGORY
1829 {
1830 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
1831 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
1832 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
1833 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
1834 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
1835 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
1836 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
1837 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
1838 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
1839 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
1840 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
1841 } D3D12_MESSAGE_CATEGORY;
1842
1843typedef
1844enum D3D12_MESSAGE_SEVERITY
1845 {
1846 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
1847 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
1848 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
1849 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
1850 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
1851 } D3D12_MESSAGE_SEVERITY;
1852
1853typedef
1854enum D3D12_MESSAGE_ID
1855 {
1856 D3D12_MESSAGE_ID_UNKNOWN = 0,
1857 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
1858 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
1859 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
1860 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
1861 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
1862 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
1863 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
1864 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
1865 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
1866 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
1867 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
1868 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
1869 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
1870 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
1871 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
1872 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
1873 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
1874 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
1875 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
1876 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
1877 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
1878 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
1879 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
1880 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
1881 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
1882 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
1883 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
1884 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
1885 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
1886 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
1887 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
1888 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
1889 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
1890 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
1891 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
1892 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
1893 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
1894 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
1895 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
1896 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
1897 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
1898 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
1899 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
1900 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
1901 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
1902 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
1903 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
1904 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
1905 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
1906 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
1907 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
1908 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
1909 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
1910 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
1911 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
1912 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
1913 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
1914 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
1915 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
1916 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
1917 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
1918 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
1919 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
1920 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
1921 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
1922 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
1923 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
1924 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
1925 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
1926 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
1927 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
1928 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
1929 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
1930 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
1931 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
1932 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
1933 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
1934 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
1935 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
1936 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
1937 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
1938 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
1939 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
1940 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
1941 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
1942 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
1943 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
1944 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
1945 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
1946 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
1947 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
1948 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
1949 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
1950 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
1951 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
1952 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
1953 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
1954 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
1955 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
1956 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
1957 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
1958 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
1959 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
1960 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
1961 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
1962 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
1963 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
1964 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
1965 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
1966 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
1967 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
1968 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
1969 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
1970 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
1971 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
1972 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
1973 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
1974 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
1975 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
1976 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
1977 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
1978 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
1979 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
1980 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
1981 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
1982 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
1983 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
1984 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
1985 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
1986 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
1987 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
1988 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
1989 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
1990 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
1991 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
1992 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
1993 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
1994 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
1995 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
1996 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
1997 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
1998 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
1999 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2000 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2001 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2002 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2003 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2004 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2005 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2006 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2007 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2008 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2009 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2010 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2011 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2012 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2013 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2014 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2015 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2016 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2017 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2018 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2019 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2020 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2021 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2022 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2023 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2024 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2025 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2026 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2027 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2028 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2029 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2030 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2031 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2032 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2033 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2034 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2035 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2036 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2037 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2038 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2039 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2040 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2041 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2042 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2043 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2044 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2045 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2046 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2047 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2048 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2049 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2050 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2051 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2052 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2053 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2054 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2055 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2056 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2057 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2058 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2059 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2060 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2061 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2062 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2063 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2064 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2065 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2066 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2067 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2068 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2069 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2070 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2071 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2072 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2073 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2074 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2075 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2076 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2077 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2078 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2079 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2080 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2081 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2082 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2083 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2084 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2085 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2086 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2087 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2088 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2089 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2090 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2091 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2092 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2093 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2094 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2095 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2096 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2097 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2098 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2099 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2100 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2101 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2102 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2103 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2104 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2105 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2106 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2107 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2108 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2109 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2110 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2111 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2112 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2113 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2114 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2115 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2116 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2117 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2118 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2119 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2120 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2121 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2122 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2123 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2124 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2125 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2126 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2127 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2128 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2129 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2130 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2131 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2132 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2133 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2134 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2135 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2136 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2137 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2138 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2139 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2140 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2141 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2142 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2143 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2144 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2145 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2146 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2147 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2148 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2149 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2150 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2151 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2152 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2153 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2154 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2155 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2156 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2157 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2158 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2159 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2160 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2161 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2162 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2163 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2164 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2165 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2166 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2167 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2168 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2169 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2170 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2171 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2172 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2173 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2174 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2175 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2176 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2177 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2178 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2179 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2180 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2181 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2182 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2183 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2186 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2187 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2189 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2192 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2193 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2194 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2195 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2196 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2197 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2198 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2199 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2200 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2201 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2202 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2203 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2204 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2205 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2206 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2207 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2208 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2209 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2210 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2211 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2212 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2213 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2214 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2215 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2216 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2217 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2218 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2219 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2220 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2221 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2222 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2223 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2224 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2225 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2226 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2227 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2228 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2229 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2230 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2231 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2232 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2233 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2234 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2235 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2236 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2237 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2238 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2239 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2240 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2241 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2242 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2243 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2244 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2245 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2246 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2247 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2248 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2249 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2250 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2251 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2252 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2253 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2254 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2255 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2256 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2257 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2258 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2259 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2260 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2261 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2262 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2263 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2264 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2265 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2266 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2267 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2268 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2269 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2270 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2271 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2272 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2273 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2274 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2275 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2276 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2277 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2278 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2279 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2280 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2281 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2282 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2283 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2284 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2285 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2286 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2287 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2288 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2289 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2290 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2291 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2292 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2293 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2294 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2295 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2296 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2297 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2298 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2299 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2300 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2301 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2302 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2303 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2304 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2305 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2306 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2307 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2308 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2309 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2310 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2311 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2312 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2313 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2314 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2315 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2316 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2317 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2318 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2319 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2320 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2321 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2322 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2323 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2324 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2325 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2326 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2327 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2328 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2329 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2330 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2331 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2332 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2333 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2334 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2335 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2336 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2337 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2338 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2339 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2340 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2341 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2342 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2343 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2344 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2345 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2346 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2347 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2348 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2349 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2350 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2351 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2352 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2353 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2354 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2355 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2356 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2357 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2358 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2359 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2360 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2361 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2362 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2363 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2364 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2365 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2366 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2367 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2368 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2369 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2370 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2371 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2372 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2373 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2374 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2375 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2376 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2377 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2378 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2379 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2380 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2381 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2382 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2383 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2384 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2385 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2386 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2387 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2388 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2389 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2390 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2391 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2392 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2393 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2394 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2395 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2396 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2397 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2398 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2399 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2400 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2401 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2402 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2403 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2404 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2405 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2406 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2407 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2408 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2409 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2410 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2411 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2412 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2413 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2414 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2415 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2416 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2417 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2418 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2419 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2420 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2421 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2422 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2423 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2424 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2425 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2426 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2427 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2428 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2429 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2430 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2431 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2432 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2433 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2434 D3D12_MESSAGE_ID_END_EVENT = 1015,
2435 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2436 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2437 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2438 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2439 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2440 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2441 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2442 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2443 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2444 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2445 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2446 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2447 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2448 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2449 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2450 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2451 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2452 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2453 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2454 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2455 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2456 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2457 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2458 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2459 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2460 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2461 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2462 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2463 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2464 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2465 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2466 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2467 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2468 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2469 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2470 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2471 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2472 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2473 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2474 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2475 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2476 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2477 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2478 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
2479 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
2480 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
2481 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
2482 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
2483 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
2484 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
2485 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
2486 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
2487 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
2488 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
2489 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
2490 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
2491 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
2492 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
2493 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
2494 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
2495 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
2496 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
2497 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
2498 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
2499 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
2500 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
2501 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
2502 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
2503 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
2504 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
2505 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
2506 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
2507 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
2508 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
2509 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
2510 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
2511 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
2512 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
2513 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
2514 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
2515 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
2516 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
2517 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
2518 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
2519 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
2520 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
2521 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
2522 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
2523 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
2524 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
2525 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
2526 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
2527 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
2528 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
2529 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
2530 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
2531 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
2532 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
2533 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
2534 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
2535 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
2536 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
2537 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
2538 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
2539 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
2540 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
2541 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
2542 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
2543 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
2544 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
2545 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
2546 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
2547 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
2548 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
2549 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
2550 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
2551 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
2552 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
2553 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
2554 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
2555 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
2556 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
2557 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
2558 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
2559 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
2560 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
2561 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
2562 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
2563 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
2564 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
2565 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
2566 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
2567 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
2568 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
2569 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
2570 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
2571 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
2572 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
2573 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
2574 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
2575 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
2576 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
2577 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
2578 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
2579 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
2580 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
2581 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
2582 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
2583 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
2584 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
2585 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
2586 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
2587 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
2588 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
2589 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
2590 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
2591 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
2592 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
2593 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
2594 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
2595 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
2596 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
2597 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
2598 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
2599 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
2600 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
2601 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
2602 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
2603 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
2604 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
2605 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
2606 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
2607 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
2608 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
2609 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
2610 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
2611 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
2612 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
2613 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
2614 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
2615 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
2616 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
2617 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
2618 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
2619 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
2620 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
2621 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
2622 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
2623 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
2624 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
2625 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
2626 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
2627 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
2628 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
2629 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
2630 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
2631 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
2632 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
2633 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
2634 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
2635 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
2636 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
2637 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
2638 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
2639 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
2640 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
2641 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
2642 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
2643 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
2644 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
2645 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
2646 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
2647 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
2648 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
2649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
2650 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
2651 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
2652 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
2653 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
2654 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
2655 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
2656 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
2657 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
2658 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
2659 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
2660 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
2661 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
2662 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
2663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
2664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
2665 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
2666 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
2667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
2668 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
2669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
2670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
2671 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
2672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
2673 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
2674 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
2675 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
2676 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
2677 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
2678 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
2679 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
2680 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
2681 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
2682 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
2683 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
2684 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
2685 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
2686 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
2687 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
2688 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
2689 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
2690 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
2691 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
2692 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
2693 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
2694 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
2695 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
2696 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
2697 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
2698 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
2699 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
2700 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
2701 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
2702 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
2703 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
2704 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
2705 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
2706 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
2707 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
2708 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
2709 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
2710 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
2711 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
2712 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
2713 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
2714 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
2715 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
2716 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
2717 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
2718 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
2719 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
2720 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
2721 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
2722 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
2723 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
2724 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
2725 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
2726 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
2727 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
2728 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
2729 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
2730 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
2731 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
2732 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
2733 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
2734 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
2735 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
2736 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
2737 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
2738 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
2739 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
2740 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
2741 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
2742 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
2743 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
2744 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
2745 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
2746 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
2747 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = ( D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED + 1 )
2748 } D3D12_MESSAGE_ID;
2749
2750typedef struct D3D12_MESSAGE
2751 {
2752 D3D12_MESSAGE_CATEGORY Category;
2753 D3D12_MESSAGE_SEVERITY Severity;
2754 D3D12_MESSAGE_ID ID;
2755 _Field_size_(DescriptionByteLength) const char *pDescription;
2756 SIZE_T DescriptionByteLength;
2757 } D3D12_MESSAGE;
2758
2759typedef struct D3D12_INFO_QUEUE_FILTER_DESC
2760 {
2761 UINT NumCategories;
2762 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
2763 UINT NumSeverities;
2764 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
2765 UINT NumIDs;
2766 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
2767 } D3D12_INFO_QUEUE_FILTER_DESC;
2768
2769typedef struct D3D12_INFO_QUEUE_FILTER
2770 {
2771 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
2772 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
2773 } D3D12_INFO_QUEUE_FILTER;
2774
2775#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
2776
2777
2778extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_c_ifspec;
2779extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_s_ifspec;
2780
2781#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
2782#define __ID3D12InfoQueue_INTERFACE_DEFINED__
2783
2784/* interface ID3D12InfoQueue */
2785/* [unique][local][object][uuid] */
2786
2787
2788EXTERN_C const IID IID_ID3D12InfoQueue;
2789
2790#if defined(__cplusplus) && !defined(CINTERFACE)
2791
2792 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
2793 ID3D12InfoQueue : public IUnknown
2794 {
2795 public:
2796 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
2797 _In_ UINT64 MessageCountLimit) = 0;
2798
2799 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
2800
2801 virtual HRESULT STDMETHODCALLTYPE GetMessage(
2802 _In_ UINT64 MessageIndex,
2803 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2804 _Inout_ SIZE_T *pMessageByteLength) = 0;
2805
2806 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
2807
2808 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
2809
2810 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
2811
2812 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
2813
2814 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
2815
2816 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
2817
2818 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
2819 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2820
2821 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
2822 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2823 _Inout_ SIZE_T *pFilterByteLength) = 0;
2824
2825 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
2826
2827 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
2828
2829 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
2830
2831 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
2832 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2833
2834 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
2835
2836 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
2837
2838 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
2839 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2840
2841 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
2842 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2843 _Inout_ SIZE_T *pFilterByteLength) = 0;
2844
2845 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
2846
2847 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
2848
2849 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
2850
2851 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
2852 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2853
2854 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
2855
2856 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
2857
2858 virtual HRESULT STDMETHODCALLTYPE AddMessage(
2859 _In_ D3D12_MESSAGE_CATEGORY Category,
2860 _In_ D3D12_MESSAGE_SEVERITY Severity,
2861 _In_ D3D12_MESSAGE_ID ID,
2862 _In_ LPCSTR pDescription) = 0;
2863
2864 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
2865 _In_ D3D12_MESSAGE_SEVERITY Severity,
2866 _In_ LPCSTR pDescription) = 0;
2867
2868 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
2869 _In_ D3D12_MESSAGE_CATEGORY Category,
2870 _In_ BOOL bEnable) = 0;
2871
2872 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
2873 _In_ D3D12_MESSAGE_SEVERITY Severity,
2874 _In_ BOOL bEnable) = 0;
2875
2876 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
2877 _In_ D3D12_MESSAGE_ID ID,
2878 _In_ BOOL bEnable) = 0;
2879
2880 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
2881 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
2882
2883 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
2884 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
2885
2886 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
2887 _In_ D3D12_MESSAGE_ID ID) = 0;
2888
2889 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
2890 _In_ BOOL bMute) = 0;
2891
2892 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
2893
2894 };
2895
2896
2897#else /* C style interface */
2898
2899 typedef struct ID3D12InfoQueueVtbl
2900 {
2901 BEGIN_INTERFACE
2902
2903 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2904 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2905 ID3D12InfoQueue * This,
2906 REFIID riid,
2907 _COM_Outptr_ void **ppvObject);
2908
2909 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2910 ULONG ( STDMETHODCALLTYPE *AddRef )(
2911 ID3D12InfoQueue * This);
2912
2913 DECLSPEC_XFGVIRT(IUnknown, Release)
2914 ULONG ( STDMETHODCALLTYPE *Release )(
2915 ID3D12InfoQueue * This);
2916
2917 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
2918 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
2919 ID3D12InfoQueue * This,
2920 _In_ UINT64 MessageCountLimit);
2921
2922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
2923 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
2924 ID3D12InfoQueue * This);
2925
2926 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
2927 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
2928 ID3D12InfoQueue * This,
2929 _In_ UINT64 MessageIndex,
2930 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2931 _Inout_ SIZE_T *pMessageByteLength);
2932
2933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
2934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
2935 ID3D12InfoQueue * This);
2936
2937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
2938 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
2939 ID3D12InfoQueue * This);
2940
2941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
2942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
2943 ID3D12InfoQueue * This);
2944
2945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
2946 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
2947 ID3D12InfoQueue * This);
2948
2949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
2950 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
2951 ID3D12InfoQueue * This);
2952
2953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
2954 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
2955 ID3D12InfoQueue * This);
2956
2957 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
2958 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
2959 ID3D12InfoQueue * This,
2960 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2961
2962 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
2963 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
2964 ID3D12InfoQueue * This,
2965 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2966 _Inout_ SIZE_T *pFilterByteLength);
2967
2968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
2969 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
2970 ID3D12InfoQueue * This);
2971
2972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
2973 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
2974 ID3D12InfoQueue * This);
2975
2976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
2977 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
2978 ID3D12InfoQueue * This);
2979
2980 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
2981 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
2982 ID3D12InfoQueue * This,
2983 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2984
2985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
2986 void ( STDMETHODCALLTYPE *PopStorageFilter )(
2987 ID3D12InfoQueue * This);
2988
2989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
2990 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
2991 ID3D12InfoQueue * This);
2992
2993 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
2994 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
2995 ID3D12InfoQueue * This,
2996 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2997
2998 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
2999 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3000 ID3D12InfoQueue * This,
3001 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3002 _Inout_ SIZE_T *pFilterByteLength);
3003
3004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3005 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3006 ID3D12InfoQueue * This);
3007
3008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3009 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3010 ID3D12InfoQueue * This);
3011
3012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3013 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3014 ID3D12InfoQueue * This);
3015
3016 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3017 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3018 ID3D12InfoQueue * This,
3019 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3020
3021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3022 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3023 ID3D12InfoQueue * This);
3024
3025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3026 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3027 ID3D12InfoQueue * This);
3028
3029 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3030 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3031 ID3D12InfoQueue * This,
3032 _In_ D3D12_MESSAGE_CATEGORY Category,
3033 _In_ D3D12_MESSAGE_SEVERITY Severity,
3034 _In_ D3D12_MESSAGE_ID ID,
3035 _In_ LPCSTR pDescription);
3036
3037 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3038 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3039 ID3D12InfoQueue * This,
3040 _In_ D3D12_MESSAGE_SEVERITY Severity,
3041 _In_ LPCSTR pDescription);
3042
3043 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3044 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3045 ID3D12InfoQueue * This,
3046 _In_ D3D12_MESSAGE_CATEGORY Category,
3047 _In_ BOOL bEnable);
3048
3049 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3050 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3051 ID3D12InfoQueue * This,
3052 _In_ D3D12_MESSAGE_SEVERITY Severity,
3053 _In_ BOOL bEnable);
3054
3055 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3056 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3057 ID3D12InfoQueue * This,
3058 _In_ D3D12_MESSAGE_ID ID,
3059 _In_ BOOL bEnable);
3060
3061 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3062 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3063 ID3D12InfoQueue * This,
3064 _In_ D3D12_MESSAGE_CATEGORY Category);
3065
3066 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3067 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3068 ID3D12InfoQueue * This,
3069 _In_ D3D12_MESSAGE_SEVERITY Severity);
3070
3071 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3072 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3073 ID3D12InfoQueue * This,
3074 _In_ D3D12_MESSAGE_ID ID);
3075
3076 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3077 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3078 ID3D12InfoQueue * This,
3079 _In_ BOOL bMute);
3080
3081 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3082 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3083 ID3D12InfoQueue * This);
3084
3085 END_INTERFACE
3086 } ID3D12InfoQueueVtbl;
3087
3088 interface ID3D12InfoQueue
3089 {
3090 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3091 };
3092
3093
3094
3095#ifdef COBJMACROS
3096
3097
3098#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3099 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3100
3101#define ID3D12InfoQueue_AddRef(This) \
3102 ( (This)->lpVtbl -> AddRef(This) )
3103
3104#define ID3D12InfoQueue_Release(This) \
3105 ( (This)->lpVtbl -> Release(This) )
3106
3107
3108#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3109 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3110
3111#define ID3D12InfoQueue_ClearStoredMessages(This) \
3112 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3113
3114#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3115 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3116
3117#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3118 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3119
3120#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3121 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3122
3123#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3124 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3125
3126#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3127 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3128
3129#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3130 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3131
3132#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3133 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3134
3135#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3136 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3137
3138#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3139 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3140
3141#define ID3D12InfoQueue_ClearStorageFilter(This) \
3142 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3143
3144#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3145 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3146
3147#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3148 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3149
3150#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3151 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3152
3153#define ID3D12InfoQueue_PopStorageFilter(This) \
3154 ( (This)->lpVtbl -> PopStorageFilter(This) )
3155
3156#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3157 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3158
3159#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3160 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3161
3162#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3163 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3164
3165#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3166 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3167
3168#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3169 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3170
3171#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3172 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3173
3174#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3175 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3176
3177#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3178 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3179
3180#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3181 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3182
3183#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3184 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3185
3186#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3187 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3188
3189#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3190 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3191
3192#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3193 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3194
3195#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3196 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3197
3198#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3199 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3200
3201#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3202 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3203
3204#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3205 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3206
3207#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3208 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3209
3210#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3211 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3212
3213#endif /* COBJMACROS */
3214
3215
3216#endif /* C style interface */
3217
3218
3219
3220
3221#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3222
3223
3224/* interface __MIDL_itf_d3d12sdklayers_0000_0015 */
3225/* [local] */
3226
3227typedef
3228enum D3D12_MESSAGE_CALLBACK_FLAGS
3229 {
3230 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3231 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3232 } D3D12_MESSAGE_CALLBACK_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3235typedef void ( __stdcall *D3D12MessageFunc )(
3236 D3D12_MESSAGE_CATEGORY Category,
3237 D3D12_MESSAGE_SEVERITY Severity,
3238 D3D12_MESSAGE_ID ID,
3239 LPCSTR pDescription,
3240 void *pContext);
3241
3242
3243
3244extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_c_ifspec;
3245extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_s_ifspec;
3246
3247#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3248#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3249
3250/* interface ID3D12InfoQueue1 */
3251/* [unique][local][object][uuid] */
3252
3253
3254EXTERN_C const IID IID_ID3D12InfoQueue1;
3255
3256#if defined(__cplusplus) && !defined(CINTERFACE)
3257
3258 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3259 ID3D12InfoQueue1 : public ID3D12InfoQueue
3260 {
3261 public:
3262 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3263 _In_ D3D12MessageFunc CallbackFunc,
3264 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3265 _In_ void *pContext,
3266 _Inout_ DWORD *pCallbackCookie) = 0;
3267
3268 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3269 _In_ DWORD CallbackCookie) = 0;
3270
3271 };
3272
3273
3274#else /* C style interface */
3275
3276 typedef struct ID3D12InfoQueue1Vtbl
3277 {
3278 BEGIN_INTERFACE
3279
3280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3282 ID3D12InfoQueue1 * This,
3283 REFIID riid,
3284 _COM_Outptr_ void **ppvObject);
3285
3286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3287 ULONG ( STDMETHODCALLTYPE *AddRef )(
3288 ID3D12InfoQueue1 * This);
3289
3290 DECLSPEC_XFGVIRT(IUnknown, Release)
3291 ULONG ( STDMETHODCALLTYPE *Release )(
3292 ID3D12InfoQueue1 * This);
3293
3294 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3295 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3296 ID3D12InfoQueue1 * This,
3297 _In_ UINT64 MessageCountLimit);
3298
3299 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3300 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3301 ID3D12InfoQueue1 * This);
3302
3303 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3304 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3305 ID3D12InfoQueue1 * This,
3306 _In_ UINT64 MessageIndex,
3307 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3308 _Inout_ SIZE_T *pMessageByteLength);
3309
3310 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3311 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3312 ID3D12InfoQueue1 * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3315 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3316 ID3D12InfoQueue1 * This);
3317
3318 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3319 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3320 ID3D12InfoQueue1 * This);
3321
3322 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3323 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3324 ID3D12InfoQueue1 * This);
3325
3326 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3327 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3328 ID3D12InfoQueue1 * This);
3329
3330 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3331 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3332 ID3D12InfoQueue1 * This);
3333
3334 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3335 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3336 ID3D12InfoQueue1 * This,
3337 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3338
3339 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3340 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3341 ID3D12InfoQueue1 * This,
3342 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3343 _Inout_ SIZE_T *pFilterByteLength);
3344
3345 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3346 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3347 ID3D12InfoQueue1 * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3350 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3351 ID3D12InfoQueue1 * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3354 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3355 ID3D12InfoQueue1 * This);
3356
3357 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3358 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3359 ID3D12InfoQueue1 * This,
3360 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3361
3362 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3363 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3364 ID3D12InfoQueue1 * This);
3365
3366 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3367 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3368 ID3D12InfoQueue1 * This);
3369
3370 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3371 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3372 ID3D12InfoQueue1 * This,
3373 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3374
3375 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3376 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3377 ID3D12InfoQueue1 * This,
3378 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3379 _Inout_ SIZE_T *pFilterByteLength);
3380
3381 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3382 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3383 ID3D12InfoQueue1 * This);
3384
3385 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3386 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3387 ID3D12InfoQueue1 * This);
3388
3389 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3390 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3391 ID3D12InfoQueue1 * This);
3392
3393 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3394 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3395 ID3D12InfoQueue1 * This,
3396 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3397
3398 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3399 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3400 ID3D12InfoQueue1 * This);
3401
3402 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3403 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3404 ID3D12InfoQueue1 * This);
3405
3406 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3407 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3408 ID3D12InfoQueue1 * This,
3409 _In_ D3D12_MESSAGE_CATEGORY Category,
3410 _In_ D3D12_MESSAGE_SEVERITY Severity,
3411 _In_ D3D12_MESSAGE_ID ID,
3412 _In_ LPCSTR pDescription);
3413
3414 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3415 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3416 ID3D12InfoQueue1 * This,
3417 _In_ D3D12_MESSAGE_SEVERITY Severity,
3418 _In_ LPCSTR pDescription);
3419
3420 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3421 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3422 ID3D12InfoQueue1 * This,
3423 _In_ D3D12_MESSAGE_CATEGORY Category,
3424 _In_ BOOL bEnable);
3425
3426 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3427 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3428 ID3D12InfoQueue1 * This,
3429 _In_ D3D12_MESSAGE_SEVERITY Severity,
3430 _In_ BOOL bEnable);
3431
3432 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3433 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3434 ID3D12InfoQueue1 * This,
3435 _In_ D3D12_MESSAGE_ID ID,
3436 _In_ BOOL bEnable);
3437
3438 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3439 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3440 ID3D12InfoQueue1 * This,
3441 _In_ D3D12_MESSAGE_CATEGORY Category);
3442
3443 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3444 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3445 ID3D12InfoQueue1 * This,
3446 _In_ D3D12_MESSAGE_SEVERITY Severity);
3447
3448 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3449 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3450 ID3D12InfoQueue1 * This,
3451 _In_ D3D12_MESSAGE_ID ID);
3452
3453 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3454 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3455 ID3D12InfoQueue1 * This,
3456 _In_ BOOL bMute);
3457
3458 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3459 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3460 ID3D12InfoQueue1 * This);
3461
3462 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
3463 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
3464 ID3D12InfoQueue1 * This,
3465 _In_ D3D12MessageFunc CallbackFunc,
3466 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3467 _In_ void *pContext,
3468 _Inout_ DWORD *pCallbackCookie);
3469
3470 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
3471 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
3472 ID3D12InfoQueue1 * This,
3473 _In_ DWORD CallbackCookie);
3474
3475 END_INTERFACE
3476 } ID3D12InfoQueue1Vtbl;
3477
3478 interface ID3D12InfoQueue1
3479 {
3480 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
3481 };
3482
3483
3484
3485#ifdef COBJMACROS
3486
3487
3488#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
3489 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3490
3491#define ID3D12InfoQueue1_AddRef(This) \
3492 ( (This)->lpVtbl -> AddRef(This) )
3493
3494#define ID3D12InfoQueue1_Release(This) \
3495 ( (This)->lpVtbl -> Release(This) )
3496
3497
3498#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
3499 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3500
3501#define ID3D12InfoQueue1_ClearStoredMessages(This) \
3502 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3503
3504#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3505 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3506
3507#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
3508 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3509
3510#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
3511 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3512
3513#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
3514 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3515
3516#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3517 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3518
3519#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
3520 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3521
3522#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
3523 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3524
3525#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
3526 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3527
3528#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
3529 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3530
3531#define ID3D12InfoQueue1_ClearStorageFilter(This) \
3532 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3533
3534#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
3535 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3536
3537#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
3538 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3539
3540#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
3541 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3542
3543#define ID3D12InfoQueue1_PopStorageFilter(This) \
3544 ( (This)->lpVtbl -> PopStorageFilter(This) )
3545
3546#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
3547 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3548
3549#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
3550 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3551
3552#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3553 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3554
3555#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
3556 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3557
3558#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
3559 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3560
3561#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
3562 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3563
3564#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
3565 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3566
3567#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
3568 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3569
3570#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
3571 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3572
3573#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
3574 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3575
3576#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
3577 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3578
3579#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
3580 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3581
3582#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
3583 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3584
3585#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
3586 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3587
3588#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
3589 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3590
3591#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
3592 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3593
3594#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
3595 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3596
3597#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
3598 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3599
3600#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
3601 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3602
3603
3604#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
3605 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
3606
3607#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
3608 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
3609
3610#endif /* COBJMACROS */
3611
3612
3613#endif /* C style interface */
3614
3615
3616
3617
3618#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
3619
3620
3621/* interface __MIDL_itf_d3d12sdklayers_0000_0016 */
3622/* [local] */
3623
3624#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
3625#pragma endregion
3626DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
3627DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
3628DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
3629DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
3630DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
3631DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
3632DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
3633DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
3634DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
3635DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
3636DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
3637DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
3638DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
3639DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
3640DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
3641DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
3642
3643
3644extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_c_ifspec;
3645extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_s_ifspec;
3646
3647/* Additional Prototypes for ALL interfaces */
3648
3649/* end of Additional Prototypes */
3650
3651#ifdef __cplusplus
3652}
3653#endif
3654
3655#endif
3656
3657
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
new file mode 100644
index 0000000..3557ce1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
@@ -0,0 +1,1679 @@
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
78cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
79
80typedef enum D3D12_RLDO_FLAGS
81{
82 D3D12_RLDO_NONE = 0x0,
83 D3D12_RLDO_SUMMARY = 0x1,
84 D3D12_RLDO_DETAIL = 0x2,
85 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
86
87} D3D12_RLDO_FLAGS;
88
89cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
90
91typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
92{
93 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
94 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
95 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
96} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
97
98typedef enum D3D12_DEBUG_FEATURE
99{
100 D3D12_DEBUG_FEATURE_NONE = 0x00,
101 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
102 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
103 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
104 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
105} D3D12_DEBUG_FEATURE;
106
107cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
108
109typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
110{
111 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
112 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
113 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
114 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
115 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
116} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
117
118typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
119{
120 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
121 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
122 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
123 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
124 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
125} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
126
127cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
128
129typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
130{
131 UINT MaxMessagesPerCommandList;
132 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
133 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
134} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
135
136typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
137{
138 FLOAT SlowdownFactor;
139} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
140
141[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
142interface ID3D12DebugDevice1
143 : IUnknown
144{
145 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
146 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
147 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
148}
149
150[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
151interface ID3D12DebugDevice
152 : IUnknown
153{
154 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
155 D3D12_DEBUG_FEATURE GetFeatureMask();
156 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
157}
158
159[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
160interface ID3D12DebugDevice2
161 : ID3D12DebugDevice
162{
163 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
164 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
165}
166
167cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
168
169
170[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
171interface ID3D12DebugCommandQueue
172 : IUnknown
173{
174 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
175// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
176};
177
178typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
179{
180 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
181} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
182
183typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
184{
185 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
186} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
187
188[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
189interface ID3D12DebugCommandList1
190 : IUnknown
191{
192 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
193 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
194 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
195};
196
197[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
198interface ID3D12DebugCommandList
199 : IUnknown
200{
201 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
202 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
203 D3D12_DEBUG_FEATURE GetFeatureMask();
204};
205
206[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
207interface ID3D12DebugCommandList2
208 : ID3D12DebugCommandList
209{
210 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
211 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
212};
213
214[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
215interface ID3D12SharingContract
216 : IUnknown
217{
218 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
219 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
220 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
221 void EndCapturableWork([annotation("_In_")] REFGUID guid);
222};
223
224
225//==================================================================================================================================
226//
227// Info Queue
228//
229//==================================================================================================================================
230typedef enum D3D12_MESSAGE_CATEGORY {
231 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
232 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
233 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
234 D3D12_MESSAGE_CATEGORY_CLEANUP,
235 D3D12_MESSAGE_CATEGORY_COMPILATION,
236 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
237 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
238 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
239 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
240 D3D12_MESSAGE_CATEGORY_EXECUTION,
241 D3D12_MESSAGE_CATEGORY_SHADER,
242} D3D12_MESSAGE_CATEGORY;
243
244typedef enum D3D12_MESSAGE_SEVERITY {
245 D3D12_MESSAGE_SEVERITY_CORRUPTION,
246 D3D12_MESSAGE_SEVERITY_ERROR,
247 D3D12_MESSAGE_SEVERITY_WARNING,
248 D3D12_MESSAGE_SEVERITY_INFO,
249 D3D12_MESSAGE_SEVERITY_MESSAGE
250} D3D12_MESSAGE_SEVERITY;
251
252// Unique ID for every error
253// CAUTION: New enum values should be appended to the list only. Inserting
254// new enum values into the middle of the list results in changing the numeric
255// values of some ID's from one SDK release to the next. This in-turn breaks
256// PIX and customer tools/filters.
257typedef enum D3D12_MESSAGE_ID {
258 D3D12_MESSAGE_ID_UNKNOWN = 0,
259
260 //--------------------------------------------------------------------------
261 // Messages Used by Core
262 // Message IDs generated from core are at the beginning
263 // since the core changes less frequently than the debug layer.
264
265 // End of Messages used by Core
266 // ------------------------------------------------------------------------
267 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
268 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
269 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
270 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
271 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
272 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
273 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
274 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
275 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
276 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
277 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
278 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
279 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
280 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
281 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
282 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
283 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
284 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
285 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
286
287 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
288 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
289 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
290 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
291
292 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
293 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
294 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
295 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
296 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
297 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
298 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
299
300 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
301 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
302 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
303 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
304 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
305 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
306 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
307 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
308
309 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
310 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
311 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
312 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
313 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
314
315 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
316 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
317 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
318 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
319 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
320 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
321 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
322 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
323 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
324 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
325 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
326 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
327 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
328 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
329
330 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
331 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
332 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
333
334 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
335 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
336 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
337
338 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
339 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
340 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
341 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
342 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
343 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
344 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
345 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
346 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
347 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
348 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
349 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
350 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
351 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
352 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
353 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
354 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
355 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
356
357 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
358 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
359 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
360
361 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
362 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
363 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
364 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
365
366 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
367 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
368 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
369 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
370 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
371 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
372 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
373 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
374 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
375 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
376
377 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
378 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
379 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
380 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
381 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
382 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
383 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
384
385 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
386
387 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
388 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
389 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
390 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
391 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
392 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
393 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
394 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
395 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
396 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
397 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
398 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
399 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
400 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
401
402 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
403 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
404 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
405
406 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
407
408 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
409 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
410 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
411
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
413 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
414 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
415 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
416 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
417
418 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
419 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
420 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
421 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
422
423 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
424 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
425 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
426 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
427
428 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
429 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
430 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
431 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
432
433 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
434
435 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
436
437 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
438 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
439 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
440
441 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
442 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
443 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
444 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
445 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
446 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
447 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
448
449 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
450 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
451 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
452 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
453 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
454 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
455 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
456 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
457
458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
459
460 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
461
462 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
463 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
464 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
465 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
466 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
467 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
468 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
469
470 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
471 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
472 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
473 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
474 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
475 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
476 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
477
478 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
479 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
480
481 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
482 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
483
484 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
485 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
486
487 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
488 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
489 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
490 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
491 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
492 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
493 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
494 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
495 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
496 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
497 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
498 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
499 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
500 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
501 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
502 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
503 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
504 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
505 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
506 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
507 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
508 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
509 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
510 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
511 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
512 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
513 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
514 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
515 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
516 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
517 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
518
519 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
520 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
521 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
522 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
523 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
524 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
525 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
526 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
527 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
528 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
529 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
530 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
531
532 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
533 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
534 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
535 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
536 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
537 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
538 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
539 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
540 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
541 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
542 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
543 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
544
545 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
546 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
547 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
548 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
549 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
550 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
551 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
552 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
553 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
554 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
555 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
556 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
557
558 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
559 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
560 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
561 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
562 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
563 // This was shipped, but is no longer used. Do not reuse.
564 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
565 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
566 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
567 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
568 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
569 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
570 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
571 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
572 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
573 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
574 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
575 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
576 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
577 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
578 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
579 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
580 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
581 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
582 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
583 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
584 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
585 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
586 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
587 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
588 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
589 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
590 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
591 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
592 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
593 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
594 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
595 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
596 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
597 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
598 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
599 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
600 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
601 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
602 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
603 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
604 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
605 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
606 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
607 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
608 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
609 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
610 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
611 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
612 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
613 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
614 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
615 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
616 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
617 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
618 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
619 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
620 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
621 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
622 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
623 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
624 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
625 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
626 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
627 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
628 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
629 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
630 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
631 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
632 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
633 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
634 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
635 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
636 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
637 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
638 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
639 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
640 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
641 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
642 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
643 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
644 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
645 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
646 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
647 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
648 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
650 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
651 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
652 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
653 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
654 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
655 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
656 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
657 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
658 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
659 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
660 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
661 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
662 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
663 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
664 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
665 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
666 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
667 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
668 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
669 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
670 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
671 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
672 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
673 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
674 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
675 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
676 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
677 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
678 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
679 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
680 // This was shipped, but is no longer used. Do not reuse.
681 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
682 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
683 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
684 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
685 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
686 // Note: These are the same as the above two, with the original (incorrect) name
687 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
688 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
689 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
690 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
691 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
692 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
693 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
694
695 // These values shipped, but are no longer used. Do not reuse.
696 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
697 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
698 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
699 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
700 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
701 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
702 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
703 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
704 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
705 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
706 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
707 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
708 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
709 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
710 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
711 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
712 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
713 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
714 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
715 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
716 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
717 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
718 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
719 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
720 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
721 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
722 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
723 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
724 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
725 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
726 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
727 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
728 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
729 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
730 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
731 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
732 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
733 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
734 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
735 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
736 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
737 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
738 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
739 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
740 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
741 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
742 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
743 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
744 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
745 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
746 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
747 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
748 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
749 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
750 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
751 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
752 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
753 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
754 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
755 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
756 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
757 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
758
759 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
760 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
761 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
762 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
763
764 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
765 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
766 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
767
768 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
769 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
770 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
771 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
772 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
773 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
774 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
775 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
776 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
777 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
778 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
779 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
780 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
781 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
782 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
783
784 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
785 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
786
787 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
788 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
789 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
790 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
791 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
792 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
793 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
794 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
795 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
796 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
797
798 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
799 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
800 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
801 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
802 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
803 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
804 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
805 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
806 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
807 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
808
809 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
810 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
811
812 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
813
814 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
815
816 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
817
818 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
819
820 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
821
822 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
823 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
824 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
825
826 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
827 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
828
829 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
830
831 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
832 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
833 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
834 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
835 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
836 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
837 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
838 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
839
840 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
841 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
842 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
843 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
844
845 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
846 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
847 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
848 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
849
850 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
851 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
852 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
853
854 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
855
856 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
857
858 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
859
860 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
861
862 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
863
864 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
865
866 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
867
868 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
869
870 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
871 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
872 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
873 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
874 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
875 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
876 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
877
878 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
879 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
880 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
881 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
882 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
883
884 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
885
886 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
887
888 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
889 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
890 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
891 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
892 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
893 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
894 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
895 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
896 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
897 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
898 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
899 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
900 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
901
902 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
903
904 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
905
906 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
907 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
908 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
909 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
910
911 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
912 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
913 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
914
915 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
916
917 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
918
919 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
920
921 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
922 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
923 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
924 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
925
926 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
927 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
928
929 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
930
931 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
932 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
933 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
934
935 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
936 D3D12_MESSAGE_ID_END_EVENT = 1015,
937
938 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
939
940 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
941
942 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
943 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
944 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
945 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
946 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
947
948 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
949
950 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
951 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
952
953 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
954 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
955 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
956 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
957 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
958 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
959 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
960 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
961 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
962 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
963 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
964 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
965 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
968
969 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
970
971 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
972
973 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
974
975 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
976
977 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
978
979 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
980
981 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
982
983 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
984
985 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
986
987 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
988
989 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
990 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
991 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
992 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
993 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
994 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
995 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
996 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
997 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
998 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
999 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1000 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1001 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1002 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1003 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1004
1005 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1006
1007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1008
1009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1010 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1011 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1013 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1014 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1016 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1017 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1018 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1019
1020 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1021
1022 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1023
1024 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1025 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1026 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1027
1028 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1029 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1030 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1031
1032 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1033 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1034 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1035 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1036
1037 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1038 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1039 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1040 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1041
1042 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1043 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1044 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1045
1046 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1047 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1048
1049 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1050 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1051 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1052 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1053
1054 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1055 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1056 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1057
1058 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1059
1060 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1061 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1062 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1063
1064 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1065
1066 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1067 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1068
1069 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1070
1071 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1072
1073 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1074 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1075 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1076 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1077 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1078 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1079 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1080
1081 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1082 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1083 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1084 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1085
1086 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1087
1088 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1089 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1090
1091 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1092 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1093 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1094
1095 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1096 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1097 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1098 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1099
1100 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1101
1102 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1103 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1104 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1105 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1106 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1107 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1108 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1109 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1110 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1111 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1112 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1113 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1114 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1115 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1116 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1117 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1118
1119 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1120 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1121
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1123
1124 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1125
1126 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1127
1128 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1129 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1130 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1131 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1132 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1133
1134 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1135 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1136 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1137 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1138
1139 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1140 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1141 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1142
1143 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1144
1145 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1146 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1147 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1148 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1149 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1150 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1151
1152 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1153 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1154 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1155
1156 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1157 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1158 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1159
1160 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1161 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1162 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1163
1164 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1165 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1166 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1167
1168 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1169 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1170 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1171 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1172 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1173 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1174 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1175 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1176 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1177 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1178 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1179 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1180 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1181
1182 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1183 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1184 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1185 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1186 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1187 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1188 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1189 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1190 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1191
1192 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1193 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1194
1195 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1196 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1197
1198 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1199
1200 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1201 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1202
1203 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1204 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1205 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1206 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1207
1208 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1209 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1210 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1211
1212 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1213 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1214 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1215 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1216 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1217
1218 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1219
1220 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1221 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1222 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1223 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1224 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1225 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1226 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1227 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1228 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1229 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1230 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1231 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1232
1233 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1234
1235 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1236 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1237
1238 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1239
1240 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1241
1242 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1243 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1244 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1245 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1246 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1247 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1248
1249 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1250
1251
1252 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1253 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1254 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1255 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1256 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1257 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1258 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1259 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1260 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1261 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1262
1263 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1264 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1265 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1266
1267 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1268 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1269 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1270
1271 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1272
1273 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1274 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1275
1276 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1277 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1278 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1279
1280 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1281
1282 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1283 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1284
1285 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1286 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1287 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1288
1289 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1290 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1291 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1292
1293 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1294 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1295 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1296 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1297
1298 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1299 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1300 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1301 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1302 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1303 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1304
1305 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1306 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1307 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1308 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1309 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1310 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1311 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1312
1313 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1314 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1315 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1316 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1317 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1318 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1319 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1320 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1321 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1322 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1323 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1324 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1325 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1326 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1327 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1328 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1329 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1330 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1331 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1332 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1333 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1334 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1335 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1336 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1337 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1338 D3D12_MESSAGE_ID_D3D12_MESSAGES_END
1339} D3D12_MESSAGE_ID;
1340
1341typedef struct D3D12_MESSAGE
1342{
1343 D3D12_MESSAGE_CATEGORY Category;
1344 D3D12_MESSAGE_SEVERITY Severity;
1345 D3D12_MESSAGE_ID ID;
1346 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1347 SIZE_T DescriptionByteLength;
1348} D3D12_MESSAGE;
1349
1350typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1351{
1352 UINT NumCategories;
1353 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1354 UINT NumSeverities;
1355 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1356 UINT NumIDs;
1357 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1358} D3D12_INFO_QUEUE_FILTER_DESC;
1359
1360// To use, memset to 0, then fill in what you need.
1361typedef struct D3D12_INFO_QUEUE_FILTER
1362{
1363 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1364 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1365} D3D12_INFO_QUEUE_FILTER;
1366
1367//=============================================================================
1368// ID3D12InfoQueue
1369//
1370// Logs D3D12 Messages.
1371// This interface can be queried from ID3D12Device, as long as the device
1372// was created with the debug layer.
1373//
1374//
1375cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1376[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1377interface ID3D12InfoQueue
1378 : IUnknown
1379{
1380 //=========================================================================
1381 // Methods for configuring how much data is stored in the queue.
1382
1383 // SetMessageCountLimit()
1384 // This sets how many messages are stored. When the queue is full,
1385 // new messages coming in push old messages out.
1386 // Passing -1 to SetMessageCountLimit means the queue has
1387 // unlimited size (go until out of memory or ClearStoredMessages()).
1388 // The default message count size is
1389 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1390 // Returns S_OK or E_INVALIDARG.
1391 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1392
1393 // ClearStoredMessages
1394 void ClearStoredMessages();
1395
1396 //=========================================================================
1397 // Methods for retrieving data or statistics from the queue.
1398
1399 // GetMessage()
1400 // Retrieves messages, one at a time, from the queue which pass any
1401 // retrieval filter currently defined. If there is no retrieval filter,
1402 // all messages can be retrieved.
1403 // The MessageIndex parameter is a 0 based index into the results passing
1404 // the filter. The number of results is returned by
1405 // GetNumStoredMessagesAllowedByRetrievalFilter().
1406 //
1407 // Note this does not remove the message from the queue.
1408 //
1409 // pMessageByteLength inputs the size of the buffer passed in via
1410 // pMessage, and outputs the size of the message. pMessage can be NULL
1411 // when the size of the required buffer is being queried (return S_FALSE).
1412 //
1413 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1414 // it includes extra memory after the D3D12_MESSAGE for storing the string
1415 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1416 // applications should check the size needed for pMessage as described above.
1417 //
1418 // Watch out for thread safety when making consecutive calls first to
1419 // determine the buffer size required and then to pass in the buffer and
1420 // retrieve the message, and also between calling
1421 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1422 // the results via GetMessagE().
1423 //
1424 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1425 HRESULT GetMessage(
1426 [annotation("_In_")] UINT64 MessageIndex,
1427 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1428 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1429
1430 // GetNumMessagesAllowedByStorageFilter()
1431 // Returns how many messages sent to the queue passed
1432 // whatever storage filter was active upon receipt of
1433 // the message.
1434 // This can be a larger value than the message count limit,
1435 // returned by GetMessageCountLimit(), since old messages are discarded
1436 // when the queue is full to prevent overflow.
1437 UINT64 GetNumMessagesAllowedByStorageFilter();
1438
1439 // GetNumMessagesDeniedByStorageFilter()
1440 UINT64 GetNumMessagesDeniedByStorageFilter();
1441
1442 // GetNumStoredMessages()
1443 // Returns how many messages are currently stored in the queue.
1444 UINT64 GetNumStoredMessages();
1445
1446 // GetNumStoredMessagesAllowedByRetrievalFilter()
1447 // Returns how many messages that are currently in the queue
1448 // pass any retrieval filter that is currently set.
1449 // The MessageIndex parameter to GetMessage() indexes
1450 // an array of this many results.
1451 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1452
1453 // GetNumMessagesDiscardedByMessageCountLimit()
1454 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1455
1456 // GetMessageCountLimit
1457 // This is how many messages can be stored in the queue.
1458 // When the queue is full, new messages coming in push old messages out.
1459 // -1 means there is no limit.
1460 UINT64 GetMessageCountLimit();
1461
1462 //=========================================================================
1463 // Methods for filtering what gets stored in the queue
1464
1465 // AddStorageFilterEntries()
1466 // Adds to the existing entries at top of stack
1467 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1468 HRESULT AddStorageFilterEntries(
1469 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1470
1471 // GetStorageFilter()
1472 // Gets all entries at top of stack.
1473 // The application must allocate the output buffer. The size required can be
1474 // queried by passing null for pFilter and looking at the returned
1475 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1476 // pointers - these will point to locations within the same
1477 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1478 // data. So the application needs to only allocate/free the memory for pFilter.
1479 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1480 HRESULT GetStorageFilter(
1481 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1482 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1483
1484 // ClearStorageFilter()
1485 // Clears filter at the top of the stack (if there is one)
1486 void ClearStorageFilter();
1487
1488 // PushEmptyStorageFilter()
1489 // Push an empty storage filter on the stack to allow local filtering changes.
1490 // For convenience, this is automatically called by SetStorageFilter()
1491 // if the stack is empty. Thus if the stack is not needed, filters can be
1492 // defined without ever bothering to push or pop.
1493 // Returns S_OK or E_OUTOFMEMORY
1494 HRESULT PushEmptyStorageFilter();
1495
1496 // PushCopyOfStorageFilter()
1497 // Push a copy of the current filter so that local modifications can be made
1498 // starting from what currently exists.
1499 // Returns S_OK or E_OUTOFMEMORY
1500 HRESULT PushCopyOfStorageFilter();
1501
1502 // PushStorageFilter()
1503 // Push a filter passed as a parameter onto the stack. This is
1504 // just a helper for calling PushEmptyStorageFilter() followed
1505 // by AddStorageFilterEntries()
1506 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1507 HRESULT PushStorageFilter(
1508 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1509
1510 // PopStorageFilter()
1511 // Pop the current storage filter off the stack (if there is one)
1512 void PopStorageFilter();
1513
1514 // GetStorageFilterStackSize()
1515 UINT GetStorageFilterStackSize();
1516
1517 //=========================================================================
1518 // Methods for filtering what gets read out of the queue by GetMessage().
1519
1520 // AddRetrievalFilterEntries()
1521 // Adds to the existing entries at top of stack
1522 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1523 HRESULT AddRetrievalFilterEntries(
1524 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1525
1526 // GetRetrievalFilter()
1527 // Gets all entries at top of stack.
1528 // The application must allocate the output buffer. The size required can be
1529 // queried by passing null for pFilter and looking at the returned
1530 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1531 // pointers - these will point to locations within the same
1532 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1533 // data. So the application needs to only allocate/free the memory for pFilter.
1534 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1535 HRESULT GetRetrievalFilter(
1536 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1537 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1538
1539 // ClearRetrievalFilter()
1540 // Clears filter at the top of the stack (if there is one)
1541 void ClearRetrievalFilter();
1542
1543 // PushEmptyRetrievalFilter()
1544 // Push an empty storage filter on the stack to allow local filtering changes.
1545 // For convenience, this is automatically called by SetRetrievalFilter()
1546 // if the stack is empty. Thus if the stack is not needed, filters can be
1547 // defined without ever bothering to push or pop.
1548 // Returns S_OK or E_OUTOFMEMORY
1549 HRESULT PushEmptyRetrievalFilter();
1550
1551 // PushCopyOfRetrievalFilter()
1552 // Push a copy of the current filter so that local modifications can be made
1553 // starting from what currently exists.
1554 // Returns S_OK or E_OUTOFMEMORY
1555 HRESULT PushCopyOfRetrievalFilter();
1556
1557 // PushRetrievalFilter()
1558 // Push a filter passed as a parameter onto the stack. This is
1559 // just a helper for calling PushEmptyRetrievalFilter() followed
1560 // by AddRetrievalFilterEntries()
1561 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1562 HRESULT PushRetrievalFilter(
1563 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1564
1565 // PopRetrievalFilter()
1566 // Pop the current storage filter off the stack (if there is one)
1567 void PopRetrievalFilter();
1568
1569 // GetRetrievalFilterStackSize()
1570 UINT GetRetrievalFilterStackSize();
1571
1572 //=========================================================================
1573 // Methods for adding entries to the queue.
1574
1575 // AddMessage()
1576 // This is used by D3D12 components to log messages. Nothing stops
1577 // applications from calling this, but it isn’t particularly useful.
1578 // If an application wishes to insert custom strings into the queue,
1579 // AddApplicationMessage() below is suggested. See below.
1580 //
1581 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1582 HRESULT AddMessage(
1583 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1584 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1585 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1586 [annotation("_In_")] LPCSTR pDescription);
1587
1588 // AddApplicationMessage()
1589 // This is a convenience for applications that want
1590 // to insert strings of their own into the queue, perhaps to log issues
1591 // of its own, or to mark out points in time in the queue. This
1592 // has the same effect as calling AddMessage() above with the
1593 // following settings:
1594 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1595 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1596 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1597 // pDescription = <application provided string>
1598 //
1599 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1600 HRESULT AddApplicationMessage(
1601 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1602 [annotation("_In_")] LPCSTR pDescription);
1603
1604 //=========================================================================
1605 // Methods for breaking on errors that pass the storage filter.
1606 HRESULT SetBreakOnCategory(
1607 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1608 [annotation("_In_")] BOOL bEnable);
1609 HRESULT SetBreakOnSeverity(
1610 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1611 [annotation("_In_")] BOOL bEnable);
1612 HRESULT SetBreakOnID(
1613 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1614 [annotation("_In_")] BOOL bEnable);
1615
1616 BOOL GetBreakOnCategory(
1617 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1618 BOOL GetBreakOnSeverity(
1619 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1620 BOOL GetBreakOnID(
1621 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1622
1623 //=========================================================================
1624 // Methods for globally muting debug spte from the InfoQueue
1625 void SetMuteDebugOutput(
1626 [annotation("_In_")] BOOL bMute);
1627 BOOL GetMuteDebugOutput();
1628};
1629
1630typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1631{
1632 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1633 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1634
1635} D3D12_MESSAGE_CALLBACK_FLAGS;
1636
1637cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1638
1639typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1640 D3D12_MESSAGE_SEVERITY Severity,
1641 D3D12_MESSAGE_ID ID,
1642 LPCSTR pDescription,
1643 void* pContext);
1644
1645[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1646interface ID3D12InfoQueue1
1647 : ID3D12InfoQueue
1648{
1649 HRESULT RegisterMessageCallback(
1650 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1651 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1652 [annotation("_In_")] void* pContext,
1653 [annotation("_Inout_")] DWORD *pCallbackCookie);
1654
1655 HRESULT UnregisterMessageCallback(
1656 [annotation("_In_")] DWORD CallbackCookie);
1657};
1658
1659
1660
1661cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1662#pragma endregion
1663
1664cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1665cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1666cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1667cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1668cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1669cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1670cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1671cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1672cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1673cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1674cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1675cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1676cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1677cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1678cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1679cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12shader.h b/contrib/DirectX-Headers/include/directx/d3d12shader.h
new file mode 100644
index 0000000..4ff639b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12shader.h
@@ -0,0 +1,474 @@
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_SHVER_RESERVED0 = 0xFFF0,
28} D3D12_SHADER_VERSION_TYPE;
29
30#define D3D12_SHVER_GET_TYPE(_Version) \
31 (((_Version) >> 16) & 0xffff)
32#define D3D12_SHVER_GET_MAJOR(_Version) \
33 (((_Version) >> 4) & 0xf)
34#define D3D12_SHVER_GET_MINOR(_Version) \
35 (((_Version) >> 0) & 0xf)
36
37// Slot ID for library function return
38#define D3D_RETURN_PARAMETER_INDEX (-1)
39
40typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
41
42typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
43
44
45typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
46{
47 LPCSTR SemanticName; // Name of the semantic
48 UINT SemanticIndex; // Index of the semantic
49 UINT Register; // Number of member variables
50 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
51 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
52 BYTE Mask; // Mask to indicate which components of the register
53 // are used (combination of D3D10_COMPONENT_MASK values)
54 BYTE ReadWriteMask; // Mask to indicate whether a given component is
55 // never written (if this is an output signature) or
56 // always read (if this is an input signature).
57 // (combination of D3D_MASK_* values)
58 UINT Stream; // Stream index
59 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
60} D3D12_SIGNATURE_PARAMETER_DESC;
61
62typedef struct _D3D12_SHADER_BUFFER_DESC
63{
64 LPCSTR Name; // Name of the constant buffer
65 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
66 UINT Variables; // Number of member variables
67 UINT Size; // Size of CB (in bytes)
68 UINT uFlags; // Buffer description flags
69} D3D12_SHADER_BUFFER_DESC;
70
71typedef struct _D3D12_SHADER_VARIABLE_DESC
72{
73 LPCSTR Name; // Name of the variable
74 UINT StartOffset; // Offset in constant buffer's backing store
75 UINT Size; // Size of variable (in bytes)
76 UINT uFlags; // Variable flags
77 LPVOID DefaultValue; // Raw pointer to default value
78 UINT StartTexture; // First texture index (or -1 if no textures used)
79 UINT TextureSize; // Number of texture slots possibly used.
80 UINT StartSampler; // First sampler index (or -1 if no textures used)
81 UINT SamplerSize; // Number of sampler slots possibly used.
82} D3D12_SHADER_VARIABLE_DESC;
83
84typedef struct _D3D12_SHADER_TYPE_DESC
85{
86 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
87 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
88 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
89 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
90 UINT Elements; // Number of elements (0 if not an array)
91 UINT Members; // Number of members (0 if not a structure)
92 UINT Offset; // Offset from the start of structure (0 if not a structure member)
93 LPCSTR Name; // Name of type, can be NULL
94} D3D12_SHADER_TYPE_DESC;
95
96typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
97
98typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
99
100typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
101
102typedef struct _D3D12_SHADER_DESC
103{
104 UINT Version; // Shader version
105 LPCSTR Creator; // Creator string
106 UINT Flags; // Shader compilation/parse flags
107
108 UINT ConstantBuffers; // Number of constant buffers
109 UINT BoundResources; // Number of bound resources
110 UINT InputParameters; // Number of parameters in the input signature
111 UINT OutputParameters; // Number of parameters in the output signature
112
113 UINT InstructionCount; // Number of emitted instructions
114 UINT TempRegisterCount; // Number of temporary registers used
115 UINT TempArrayCount; // Number of temporary arrays used
116 UINT DefCount; // Number of constant defines
117 UINT DclCount; // Number of declarations (input + output)
118 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
119 UINT TextureLoadInstructions; // Number of texture load instructions
120 UINT TextureCompInstructions; // Number of texture comparison instructions
121 UINT TextureBiasInstructions; // Number of texture bias instructions
122 UINT TextureGradientInstructions; // Number of texture gradient instructions
123 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
124 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
125 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
126 UINT StaticFlowControlCount; // Number of static flow control instructions used
127 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
128 UINT MacroInstructionCount; // Number of macro instructions used
129 UINT ArrayInstructionCount; // Number of array instructions used
130 UINT CutInstructionCount; // Number of cut instructions used
131 UINT EmitInstructionCount; // Number of emit instructions used
132 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
133 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
134 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
135 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
136 UINT cGSInstanceCount; // Number of Geometry shader instances
137 UINT cControlPoints; // Number of control points in the HS->DS stage
138 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
139 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
140 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
141 // instruction counts
142 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
143 UINT cInterlockedInstructions; // Number of interlocked instructions
144 UINT cTextureStoreInstructions; // Number of texture writes
145} D3D12_SHADER_DESC;
146
147typedef struct _D3D12_SHADER_INPUT_BIND_DESC
148{
149 LPCSTR Name; // Name of the resource
150 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
151 UINT BindPoint; // Starting bind point
152 UINT BindCount; // Number of contiguous bind points (for arrays)
153
154 UINT uFlags; // Input binding flags
155 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
156 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
157 UINT NumSamples; // Number of samples (0 if not MS texture)
158 UINT Space; // Register space
159 UINT uID; // Range ID in the bytecode
160} D3D12_SHADER_INPUT_BIND_DESC;
161
162#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
163#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
164#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
165#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
166#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
167#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
168#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
169#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
170#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
171#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
172#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
173#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
174#define D3D_SHADER_REQUIRES_ROVS 0x00001000
175#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
176#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
177#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
178#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
179#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
180#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
181#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
182#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
183#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
184#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
185#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
186#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
187#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
188#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
189#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
190#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
191
192typedef struct _D3D12_LIBRARY_DESC
193{
194 LPCSTR Creator; // The name of the originator of the library.
195 UINT Flags; // Compilation flags.
196 UINT FunctionCount; // Number of functions exported from the library.
197} D3D12_LIBRARY_DESC;
198
199typedef struct _D3D12_FUNCTION_DESC
200{
201 UINT Version; // Shader version
202 LPCSTR Creator; // Creator string
203 UINT Flags; // Shader compilation/parse flags
204
205 UINT ConstantBuffers; // Number of constant buffers
206 UINT BoundResources; // Number of bound resources
207
208 UINT InstructionCount; // Number of emitted instructions
209 UINT TempRegisterCount; // Number of temporary registers used
210 UINT TempArrayCount; // Number of temporary arrays used
211 UINT DefCount; // Number of constant defines
212 UINT DclCount; // Number of declarations (input + output)
213 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
214 UINT TextureLoadInstructions; // Number of texture load instructions
215 UINT TextureCompInstructions; // Number of texture comparison instructions
216 UINT TextureBiasInstructions; // Number of texture bias instructions
217 UINT TextureGradientInstructions; // Number of texture gradient instructions
218 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
219 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
220 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
221 UINT StaticFlowControlCount; // Number of static flow control instructions used
222 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
223 UINT MacroInstructionCount; // Number of macro instructions used
224 UINT ArrayInstructionCount; // Number of array instructions used
225 UINT MovInstructionCount; // Number of mov instructions used
226 UINT MovcInstructionCount; // Number of movc instructions used
227 UINT ConversionInstructionCount; // Number of type conversion instructions used
228 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
229 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
230 UINT64 RequiredFeatureFlags; // Required feature flags
231
232 LPCSTR Name; // Function name
233 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
234 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
235 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
236 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
237} D3D12_FUNCTION_DESC;
238
239typedef struct _D3D12_PARAMETER_DESC
240{
241 LPCSTR Name; // Parameter name.
242 LPCSTR SemanticName; // Parameter semantic name (+index).
243 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
244 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
245 UINT Rows; // Rows are for matrix parameters.
246 UINT Columns; // Components or Columns in matrix.
247 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
248 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
249
250 UINT FirstInRegister; // The first input register for this parameter.
251 UINT FirstInComponent; // The first input register component for this parameter.
252 UINT FirstOutRegister; // The first output register for this parameter.
253 UINT FirstOutComponent; // The first output register component for this parameter.
254} D3D12_PARAMETER_DESC;
255
256
257//////////////////////////////////////////////////////////////////////////////
258// Interfaces ////////////////////////////////////////////////////////////////
259//////////////////////////////////////////////////////////////////////////////
260
261typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
262typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
263
264typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
265typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
266
267typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
268typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
269
270typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
271typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
272
273typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
274typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
275
276typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
277typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
278
279typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
280typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
281
282
283// {E913C351-783D-48CA-A1D1-4F306284AD56}
284interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
285DEFINE_GUID(IID_ID3D12ShaderReflectionType,
2860xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
287
288#undef INTERFACE
289#define INTERFACE ID3D12ShaderReflectionType
290
291DECLARE_INTERFACE(ID3D12ShaderReflectionType)
292{
293 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
294
295 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
296 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
297 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
298
299 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
300 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
301 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
302 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
303 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
304 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
305 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
306};
307
308// {8337A8A6-A216-444A-B2F4-314733A73AEA}
309interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
310DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3110x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
312
313#undef INTERFACE
314#define INTERFACE ID3D12ShaderReflectionVariable
315
316DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
317{
318 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
319
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
322
323 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
324};
325
326// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
327interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
328DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3290xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
330
331#undef INTERFACE
332#define INTERFACE ID3D12ShaderReflectionConstantBuffer
333
334DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
335{
336 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
337
338 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
339 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
340};
341
342// The ID3D12ShaderReflection IID may change from SDK version to SDK version
343// if the reflection API changes. This prevents new code with the new API
344// from working with an old binary. Recompiling with the new header
345// will pick up the new IID.
346
347// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
348interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
349DEFINE_GUID(IID_ID3D12ShaderReflection,
3500x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
351
352#undef INTERFACE
353#define INTERFACE ID3D12ShaderReflection
354
355DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
356{
357 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
358 _Out_ LPVOID *ppv) PURE;
359 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
360 STDMETHOD_(ULONG, Release)(THIS) PURE;
361
362 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
363
364 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
365 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
366
367 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
368 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
369
370 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
371 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
372 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
373 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
374 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
375 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
376
377 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
378
379 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
380 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
381
382 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
383 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
384 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
385 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
386
387 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
388 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
389
390 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
391 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
392
393 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
394 _Out_opt_ UINT* pSizeX,
395 _Out_opt_ UINT* pSizeY,
396 _Out_opt_ UINT* pSizeZ) PURE;
397
398 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
399};
400
401// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
402interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
403DEFINE_GUID(IID_ID3D12LibraryReflection,
4040x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
405
406#undef INTERFACE
407#define INTERFACE ID3D12LibraryReflection
408
409DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
410{
411 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
412 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
413 STDMETHOD_(ULONG, Release)(THIS) PURE;
414
415 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
416
417 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
418};
419
420// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
421interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
422DEFINE_GUID(IID_ID3D12FunctionReflection,
4230x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
424
425#undef INTERFACE
426#define INTERFACE ID3D12FunctionReflection
427
428DECLARE_INTERFACE(ID3D12FunctionReflection)
429{
430 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
431
432 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
433 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
434
435 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
436 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
437
438 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
439
440 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
441 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
442
443 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
444 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
445};
446
447// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
448interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
449DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4500xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
451
452#undef INTERFACE
453#define INTERFACE ID3D12FunctionParameterReflection
454
455DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
456{
457 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
458};
459
460
461//////////////////////////////////////////////////////////////////////////////
462// APIs //////////////////////////////////////////////////////////////////////
463//////////////////////////////////////////////////////////////////////////////
464
465#ifdef __cplusplus
466extern "C" {
467#endif //__cplusplus
468
469#ifdef __cplusplus
470}
471#endif //__cplusplus
472
473#endif //__D3D12SHADER_H__
474
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.h b/contrib/DirectX-Headers/include/directx/d3d12video.h
new file mode 100644
index 0000000..8d9d658
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.h
@@ -0,0 +1,5533 @@
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.0625 */
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 _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 __ID3D12VideoProcessCommandList2_FWD_DEFINED__
182#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
183typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
184
185#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
189#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
190typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
191
192#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "OAIdl.h"
197#include "OCIdl.h"
198#include "dxgicommon.h"
199#include "d3d12.h"
200
201#ifdef __cplusplus
202extern "C"{
203#endif
204
205
206/* interface __MIDL_itf_d3d12video_0000_0000 */
207/* [local] */
208
209#include <winapifamily.h>
210#pragma region App Family
211#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
212typedef
213enum D3D12_VIDEO_FIELD_TYPE
214 {
215 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
216 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
217 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
218 } D3D12_VIDEO_FIELD_TYPE;
219
220typedef
221enum D3D12_VIDEO_FRAME_STEREO_FORMAT
222 {
223 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
224 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
225 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
226 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
227 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
228 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
229
230typedef struct D3D12_VIDEO_FORMAT
231 {
232 DXGI_FORMAT Format;
233 DXGI_COLOR_SPACE_TYPE ColorSpace;
234 } D3D12_VIDEO_FORMAT;
235
236typedef struct D3D12_VIDEO_SAMPLE
237 {
238 UINT Width;
239 UINT Height;
240 D3D12_VIDEO_FORMAT Format;
241 } D3D12_VIDEO_SAMPLE;
242
243typedef
244enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
245 {
246 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
247 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
248 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
249
250typedef
251enum D3D12_FEATURE_VIDEO
252 {
253 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
254 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
255 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
256 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
257 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
258 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
259 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
260 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
261 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
262 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
263 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
264 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
265 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
266 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
267 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
268 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
269 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
270 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
271 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
272 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
273 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
274 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
275 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
276 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
277 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
278 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
279 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32
280 } D3D12_FEATURE_VIDEO;
281
282typedef
283enum D3D12_BITSTREAM_ENCRYPTION_TYPE
284 {
285 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
286 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
287
288typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
289 {
290 GUID DecodeProfile;
291 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
292 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
293 } D3D12_VIDEO_DECODE_CONFIGURATION;
294
295typedef struct D3D12_VIDEO_DECODER_DESC
296 {
297 UINT NodeMask;
298 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
299 } D3D12_VIDEO_DECODER_DESC;
300
301typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
302 {
303 UINT NodeMask;
304 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
305 UINT DecodeWidth;
306 UINT DecodeHeight;
307 DXGI_FORMAT Format;
308 DXGI_RATIONAL FrameRate;
309 UINT BitRate;
310 UINT MaxDecodePictureBufferCount;
311 } D3D12_VIDEO_DECODER_HEAP_DESC;
312
313typedef struct D3D12_VIDEO_SIZE_RANGE
314 {
315 UINT MaxWidth;
316 UINT MaxHeight;
317 UINT MinWidth;
318 UINT MinHeight;
319 } D3D12_VIDEO_SIZE_RANGE;
320
321typedef
322enum D3D12_VIDEO_PROCESS_FILTER
323 {
324 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
325 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
326 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
327 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
328 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
329 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
330 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
331 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
332 } D3D12_VIDEO_PROCESS_FILTER;
333
334typedef
335enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
336 {
337 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
338 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
339 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
340 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
341 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
342 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
343 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
344 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
345 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
346 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
347
348DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );
349typedef
350enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
351 {
352 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
353 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
354 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
355 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
356
357DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
358typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
359 {
360 BOOL Enable;
361 FLOAT Alpha;
362 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
363
364typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
365 {
366 BOOL Enable;
367 FLOAT Lower;
368 FLOAT Upper;
369 } D3D12_VIDEO_PROCESS_LUMA_KEY;
370
371typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
372 {
373 DXGI_FORMAT Format;
374 DXGI_COLOR_SPACE_TYPE ColorSpace;
375 DXGI_RATIONAL SourceAspectRatio;
376 DXGI_RATIONAL DestinationAspectRatio;
377 DXGI_RATIONAL FrameRate;
378 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
379 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
380 BOOL EnableOrientation;
381 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
382 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
383 D3D12_VIDEO_FIELD_TYPE FieldType;
384 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
385 BOOL EnableAlphaBlending;
386 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
387 UINT NumPastFrames;
388 UINT NumFutureFrames;
389 BOOL EnableAutoProcessing;
390 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
391
392typedef
393enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
394 {
395 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
396 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
397 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
398 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
399 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
400
401typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
402 {
403 DXGI_FORMAT Format;
404 DXGI_COLOR_SPACE_TYPE ColorSpace;
405 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
406 UINT AlphaFillModeSourceStreamIndex;
407 FLOAT BackgroundColor[ 4 ];
408 DXGI_RATIONAL FrameRate;
409 BOOL EnableStereo;
410 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
411
412
413
414extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
415extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
416
417#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
418#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
419
420/* interface ID3D12VideoDecoderHeap */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
429 ID3D12VideoDecoderHeap : public ID3D12Pageable
430 {
431 public:
432 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12VideoDecoderHeapVtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12VideoDecoderHeap * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12VideoDecoderHeap * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12VideoDecoderHeap * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
458 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
459 ID3D12VideoDecoderHeap * This,
460 _In_ REFGUID guid,
461 _Inout_ UINT *pDataSize,
462 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
463
464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
465 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
466 ID3D12VideoDecoderHeap * This,
467 _In_ REFGUID guid,
468 _In_ UINT DataSize,
469 _In_reads_bytes_opt_( DataSize ) const void *pData);
470
471 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
472 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
473 ID3D12VideoDecoderHeap * This,
474 _In_ REFGUID guid,
475 _In_opt_ const IUnknown *pData);
476
477 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
478 HRESULT ( STDMETHODCALLTYPE *SetName )(
479 ID3D12VideoDecoderHeap * This,
480 _In_z_ LPCWSTR Name);
481
482 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
483 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
484 ID3D12VideoDecoderHeap * This,
485 REFIID riid,
486 _COM_Outptr_opt_ void **ppvDevice);
487
488 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
489 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
490 ID3D12VideoDecoderHeap * This,
491 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
492
493 END_INTERFACE
494 } ID3D12VideoDecoderHeapVtbl;
495
496 interface ID3D12VideoDecoderHeap
497 {
498 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
499 };
500
501
502
503#ifdef COBJMACROS
504
505
506#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
507 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
508
509#define ID3D12VideoDecoderHeap_AddRef(This) \
510 ( (This)->lpVtbl -> AddRef(This) )
511
512#define ID3D12VideoDecoderHeap_Release(This) \
513 ( (This)->lpVtbl -> Release(This) )
514
515
516#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
517 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
518
519#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
520 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
521
522#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
523 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
524
525#define ID3D12VideoDecoderHeap_SetName(This,Name) \
526 ( (This)->lpVtbl -> SetName(This,Name) )
527
528
529#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
530 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
531
532
533
534#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
535 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
536
537#endif /* COBJMACROS */
538
539
540#endif /* C style interface */
541
542
543
544
545#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
546
547
548#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
549#define __ID3D12VideoDevice_INTERFACE_DEFINED__
550
551/* interface ID3D12VideoDevice */
552/* [unique][local][object][uuid] */
553
554
555EXTERN_C const IID IID_ID3D12VideoDevice;
556
557#if defined(__cplusplus) && !defined(CINTERFACE)
558
559 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
560 ID3D12VideoDevice : public IUnknown
561 {
562 public:
563 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
564 D3D12_FEATURE_VIDEO FeatureVideo,
565 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
566 UINT FeatureSupportDataSize) = 0;
567
568 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
569 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
570 _In_ REFIID riid,
571 _COM_Outptr_ void **ppVideoDecoder) = 0;
572
573 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
574 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
575 _In_ REFIID riid,
576 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
577
578 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
579 UINT NodeMask,
580 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
581 UINT NumInputStreamDescs,
582 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppVideoProcessor) = 0;
585
586 };
587
588
589#else /* C style interface */
590
591 typedef struct ID3D12VideoDeviceVtbl
592 {
593 BEGIN_INTERFACE
594
595 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
596 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
597 ID3D12VideoDevice * This,
598 REFIID riid,
599 _COM_Outptr_ void **ppvObject);
600
601 DECLSPEC_XFGVIRT(IUnknown, AddRef)
602 ULONG ( STDMETHODCALLTYPE *AddRef )(
603 ID3D12VideoDevice * This);
604
605 DECLSPEC_XFGVIRT(IUnknown, Release)
606 ULONG ( STDMETHODCALLTYPE *Release )(
607 ID3D12VideoDevice * This);
608
609 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
610 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
611 ID3D12VideoDevice * This,
612 D3D12_FEATURE_VIDEO FeatureVideo,
613 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
614 UINT FeatureSupportDataSize);
615
616 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
617 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
618 ID3D12VideoDevice * This,
619 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
620 _In_ REFIID riid,
621 _COM_Outptr_ void **ppVideoDecoder);
622
623 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
624 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
625 ID3D12VideoDevice * This,
626 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
627 _In_ REFIID riid,
628 _COM_Outptr_ void **ppVideoDecoderHeap);
629
630 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
631 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
632 ID3D12VideoDevice * This,
633 UINT NodeMask,
634 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
635 UINT NumInputStreamDescs,
636 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
637 _In_ REFIID riid,
638 _COM_Outptr_ void **ppVideoProcessor);
639
640 END_INTERFACE
641 } ID3D12VideoDeviceVtbl;
642
643 interface ID3D12VideoDevice
644 {
645 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
646 };
647
648
649
650#ifdef COBJMACROS
651
652
653#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
655
656#define ID3D12VideoDevice_AddRef(This) \
657 ( (This)->lpVtbl -> AddRef(This) )
658
659#define ID3D12VideoDevice_Release(This) \
660 ( (This)->lpVtbl -> Release(This) )
661
662
663#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
664 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
665
666#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
667 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
668
669#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
670 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
671
672#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
673 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
674
675#endif /* COBJMACROS */
676
677
678#endif /* C style interface */
679
680
681
682
683#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
684
685
686#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
687#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
688
689/* interface ID3D12VideoDecoder */
690/* [unique][local][object][uuid] */
691
692
693EXTERN_C const IID IID_ID3D12VideoDecoder;
694
695#if defined(__cplusplus) && !defined(CINTERFACE)
696
697 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
698 ID3D12VideoDecoder : public ID3D12Pageable
699 {
700 public:
701 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
702
703 };
704
705
706#else /* C style interface */
707
708 typedef struct ID3D12VideoDecoderVtbl
709 {
710 BEGIN_INTERFACE
711
712 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
713 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
714 ID3D12VideoDecoder * This,
715 REFIID riid,
716 _COM_Outptr_ void **ppvObject);
717
718 DECLSPEC_XFGVIRT(IUnknown, AddRef)
719 ULONG ( STDMETHODCALLTYPE *AddRef )(
720 ID3D12VideoDecoder * This);
721
722 DECLSPEC_XFGVIRT(IUnknown, Release)
723 ULONG ( STDMETHODCALLTYPE *Release )(
724 ID3D12VideoDecoder * This);
725
726 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
727 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
728 ID3D12VideoDecoder * This,
729 _In_ REFGUID guid,
730 _Inout_ UINT *pDataSize,
731 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
732
733 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
734 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
735 ID3D12VideoDecoder * This,
736 _In_ REFGUID guid,
737 _In_ UINT DataSize,
738 _In_reads_bytes_opt_( DataSize ) const void *pData);
739
740 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
741 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
742 ID3D12VideoDecoder * This,
743 _In_ REFGUID guid,
744 _In_opt_ const IUnknown *pData);
745
746 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
747 HRESULT ( STDMETHODCALLTYPE *SetName )(
748 ID3D12VideoDecoder * This,
749 _In_z_ LPCWSTR Name);
750
751 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
752 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
753 ID3D12VideoDecoder * This,
754 REFIID riid,
755 _COM_Outptr_opt_ void **ppvDevice);
756
757 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
758 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
759 ID3D12VideoDecoder * This,
760 D3D12_VIDEO_DECODER_DESC * RetVal);
761
762 END_INTERFACE
763 } ID3D12VideoDecoderVtbl;
764
765 interface ID3D12VideoDecoder
766 {
767 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
768 };
769
770
771
772#ifdef COBJMACROS
773
774
775#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
776 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
777
778#define ID3D12VideoDecoder_AddRef(This) \
779 ( (This)->lpVtbl -> AddRef(This) )
780
781#define ID3D12VideoDecoder_Release(This) \
782 ( (This)->lpVtbl -> Release(This) )
783
784
785#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
786 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
787
788#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
789 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
790
791#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
792 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
793
794#define ID3D12VideoDecoder_SetName(This,Name) \
795 ( (This)->lpVtbl -> SetName(This,Name) )
796
797
798#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
799 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
800
801
802
803#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
804 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
805
806#endif /* COBJMACROS */
807
808
809#endif /* C style interface */
810
811
812
813
814#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
815
816
817/* interface __MIDL_itf_d3d12video_0000_0003 */
818/* [local] */
819
820typedef
821enum D3D12_VIDEO_DECODE_TIER
822 {
823 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
824 D3D12_VIDEO_DECODE_TIER_1 = 1,
825 D3D12_VIDEO_DECODE_TIER_2 = 2,
826 D3D12_VIDEO_DECODE_TIER_3 = 3
827 } D3D12_VIDEO_DECODE_TIER;
828
829typedef
830enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
831 {
832 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
833 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
834 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
835
836DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );
837typedef
838enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
839 {
840 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
841 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
842 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
843 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
844 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
845 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
846
847DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );
848typedef
849enum D3D12_VIDEO_DECODE_STATUS
850 {
851 D3D12_VIDEO_DECODE_STATUS_OK = 0,
852 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
853 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
854 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
855 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
856 } D3D12_VIDEO_DECODE_STATUS;
857
858typedef
859enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
860 {
861 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
862 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
863 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
864 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
865 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
866
867typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
868 {
869 UINT NodeIndex;
870 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
871 UINT Width;
872 UINT Height;
873 DXGI_FORMAT DecodeFormat;
874 DXGI_RATIONAL FrameRate;
875 UINT BitRate;
876 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
877 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
878 D3D12_VIDEO_DECODE_TIER DecodeTier;
879 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
880
881typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
882 {
883 UINT NodeIndex;
884 UINT ProfileCount;
885 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
886
887typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
888 {
889 UINT NodeIndex;
890 UINT ProfileCount;
891 _Field_size_full_(ProfileCount) GUID *pProfiles;
892 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
893
894typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
895 {
896 UINT NodeIndex;
897 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
898 UINT FormatCount;
899 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
900
901typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
902 {
903 UINT NodeIndex;
904 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
905 UINT FormatCount;
906 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
907 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
908
909typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
910 {
911 BOOL IOCoherent;
912 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
913
914typedef
915enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
916 {
917 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
918 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
919 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
920 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
921 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
922 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
923 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
924 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
925
926typedef
927enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
928 {
929 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
930 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
931 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
932 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
933 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
934 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
935 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
936 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
937 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
938
939DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );
940typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
941 {
942 UINT NodeIndex;
943 GUID DecodeProfile;
944 UINT Width;
945 UINT Height;
946 DXGI_FORMAT DecodeFormat;
947 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
948 UINT BinCount;
949 UINT CounterBitDepth;
950 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
951
952typedef
953enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
954 {
955 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
956 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
957 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
958
959DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );
960typedef
961enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
962 {
963 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
964 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
965 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2
966 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
967
968DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );
969typedef struct D3D12_VIDEO_SCALE_SUPPORT
970 {
971 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
972 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
973 } D3D12_VIDEO_SCALE_SUPPORT;
974
975typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
976 {
977 UINT NodeIndex;
978 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
979 D3D12_VIDEO_SAMPLE DecodeSample;
980 D3D12_VIDEO_FORMAT OutputFormat;
981 DXGI_RATIONAL FrameRate;
982 UINT BitRate;
983 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
984 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
985 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
986
987typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
988 {
989 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
990 UINT64 MemoryPoolL0Size;
991 UINT64 MemoryPoolL1Size;
992 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
995 {
996 UINT NodeMask;
997 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
998 UINT NumInputStreamDescs;
999 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1000 UINT64 MemoryPoolL0Size;
1001 UINT64 MemoryPoolL1Size;
1002 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1003
1004typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1005 {
1006 UINT64 Status;
1007 UINT64 NumMacroblocksAffected;
1008 DXGI_RATIONAL FrameRate;
1009 UINT BitRate;
1010 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1011
1012typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1013 {
1014 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1015 UINT Size;
1016 _Field_size_bytes_full_(Size) void *pData;
1017 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1018
1019typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1020 {
1021 UINT NumTexture2Ds;
1022 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1023 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1024 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1025 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1026
1027typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1028 {
1029 ID3D12Resource *pBuffer;
1030 UINT64 Offset;
1031 UINT64 Size;
1032 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1033
1034typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1035 {
1036 BOOL Enable;
1037 ID3D12Resource *pReferenceTexture2D;
1038 UINT ReferenceSubresource;
1039 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1040 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1041 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1042
1043typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1044 {
1045 UINT NumFrameArguments;
1046 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1047 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1048 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1049 ID3D12VideoDecoderHeap *pHeap;
1050 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1051
1052typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1053 {
1054 ID3D12Resource *pOutputTexture2D;
1055 UINT OutputSubresource;
1056 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1057 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1065#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1066
1067/* interface ID3D12VideoProcessor */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12VideoProcessor;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1076 ID3D12VideoProcessor : public ID3D12Pageable
1077 {
1078 public:
1079 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1080
1081 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1082
1083 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1084 UINT NumInputStreamDescs,
1085 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1086
1087 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1088
1089 };
1090
1091
1092#else /* C style interface */
1093
1094 typedef struct ID3D12VideoProcessorVtbl
1095 {
1096 BEGIN_INTERFACE
1097
1098 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1099 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1100 ID3D12VideoProcessor * This,
1101 REFIID riid,
1102 _COM_Outptr_ void **ppvObject);
1103
1104 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1105 ULONG ( STDMETHODCALLTYPE *AddRef )(
1106 ID3D12VideoProcessor * This);
1107
1108 DECLSPEC_XFGVIRT(IUnknown, Release)
1109 ULONG ( STDMETHODCALLTYPE *Release )(
1110 ID3D12VideoProcessor * This);
1111
1112 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1113 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1114 ID3D12VideoProcessor * This,
1115 _In_ REFGUID guid,
1116 _Inout_ UINT *pDataSize,
1117 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1118
1119 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1120 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1121 ID3D12VideoProcessor * This,
1122 _In_ REFGUID guid,
1123 _In_ UINT DataSize,
1124 _In_reads_bytes_opt_( DataSize ) const void *pData);
1125
1126 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1127 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1128 ID3D12VideoProcessor * This,
1129 _In_ REFGUID guid,
1130 _In_opt_ const IUnknown *pData);
1131
1132 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1133 HRESULT ( STDMETHODCALLTYPE *SetName )(
1134 ID3D12VideoProcessor * This,
1135 _In_z_ LPCWSTR Name);
1136
1137 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1138 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1139 ID3D12VideoProcessor * This,
1140 REFIID riid,
1141 _COM_Outptr_opt_ void **ppvDevice);
1142
1143 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1144 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1145 ID3D12VideoProcessor * This);
1146
1147 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1148 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1149 ID3D12VideoProcessor * This);
1150
1151 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1152 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1153 ID3D12VideoProcessor * This,
1154 UINT NumInputStreamDescs,
1155 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1156
1157 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1158 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1159 ID3D12VideoProcessor * This,
1160 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1161
1162 END_INTERFACE
1163 } ID3D12VideoProcessorVtbl;
1164
1165 interface ID3D12VideoProcessor
1166 {
1167 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1168 };
1169
1170
1171
1172#ifdef COBJMACROS
1173
1174
1175#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1176 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1177
1178#define ID3D12VideoProcessor_AddRef(This) \
1179 ( (This)->lpVtbl -> AddRef(This) )
1180
1181#define ID3D12VideoProcessor_Release(This) \
1182 ( (This)->lpVtbl -> Release(This) )
1183
1184
1185#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1186 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1187
1188#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1189 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1190
1191#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1192 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1193
1194#define ID3D12VideoProcessor_SetName(This,Name) \
1195 ( (This)->lpVtbl -> SetName(This,Name) )
1196
1197
1198#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1199 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1200
1201
1202
1203#define ID3D12VideoProcessor_GetNodeMask(This) \
1204 ( (This)->lpVtbl -> GetNodeMask(This) )
1205
1206#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1207 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1208
1209#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1210 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1211
1212#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1213 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1214
1215#endif /* COBJMACROS */
1216
1217
1218#endif /* C style interface */
1219
1220
1221
1222
1223#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1224
1225
1226/* interface __MIDL_itf_d3d12video_0000_0004 */
1227/* [local] */
1228
1229typedef
1230enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1231 {
1232 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1233 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1234 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1235 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1236 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1237 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1238 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1239 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1240 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1241
1242DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );
1243typedef
1244enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1245 {
1246 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1247 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1248 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1249 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1250 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1251 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1252 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1253 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1254 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1255 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1256 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1257
1258DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );
1259typedef
1260enum D3D12_VIDEO_PROCESS_ORIENTATION
1261 {
1262 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1263 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1264 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1265 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1266 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1267 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1268 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1269 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1270 } D3D12_VIDEO_PROCESS_ORIENTATION;
1271
1272typedef
1273enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1274 {
1275 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1276 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1277 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1278 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1279
1280DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );
1281typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1282 {
1283 INT Minimum;
1284 INT Maximum;
1285 INT Default;
1286 FLOAT Multiplier;
1287 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1288
1289typedef
1290enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1291 {
1292 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1293 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1294 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1295
1296DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );
1297typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1298 {
1299 UINT NodeIndex;
1300 D3D12_VIDEO_SAMPLE InputSample;
1301 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1302 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1303 DXGI_RATIONAL InputFrameRate;
1304 D3D12_VIDEO_FORMAT OutputFormat;
1305 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1306 DXGI_RATIONAL OutputFrameRate;
1307 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1308 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1309 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1310 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1311 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1312 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1313 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1314 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1315
1316typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1317 {
1318 UINT NodeIndex;
1319 UINT MaxInputStreams;
1320 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1321
1322typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1323 {
1324 UINT NodeIndex;
1325 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1326 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1327 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1328 DXGI_RATIONAL InputFrameRate;
1329 DXGI_RATIONAL OutputFrameRate;
1330 BOOL EnableAutoProcessing;
1331 UINT PastFrames;
1332 UINT FutureFrames;
1333 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1334
1335typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1336 {
1337 UINT NumPastFrames;
1338 ID3D12Resource **ppPastFrames;
1339 UINT *pPastSubresources;
1340 UINT NumFutureFrames;
1341 ID3D12Resource **ppFutureFrames;
1342 UINT *pFutureSubresources;
1343 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1344
1345typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1346 {
1347 D3D12_RECT SourceRectangle;
1348 D3D12_RECT DestinationRectangle;
1349 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1350 } D3D12_VIDEO_PROCESS_TRANSFORM;
1351
1352typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1353 {
1354 UINT OutputIndex;
1355 UINT InputFrameOrField;
1356 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1357
1358typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1359 {
1360 ID3D12Resource *pTexture2D;
1361 UINT Subresource;
1362 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1363 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1364
1365typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1366 {
1367 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1368 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1369 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1370 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1371 INT FilterLevels[ 32 ];
1372 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1373 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1374
1375typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1376 {
1377 ID3D12Resource *pTexture2D;
1378 UINT Subresource;
1379 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1380
1381typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1382 {
1383 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1384 D3D12_RECT TargetRectangle;
1385 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1386
1387
1388
1389extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1390extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1391
1392#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1393#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1394
1395/* interface ID3D12VideoDecodeCommandList */
1396/* [unique][local][object][uuid] */
1397
1398
1399EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1400
1401#if defined(__cplusplus) && !defined(CINTERFACE)
1402
1403 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1404 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1405 {
1406 public:
1407 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1408
1409 virtual HRESULT STDMETHODCALLTYPE Reset(
1410 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1411
1412 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1413
1414 virtual void STDMETHODCALLTYPE ResourceBarrier(
1415 _In_ UINT NumBarriers,
1416 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1417
1418 virtual void STDMETHODCALLTYPE DiscardResource(
1419 _In_ ID3D12Resource *pResource,
1420 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1421
1422 virtual void STDMETHODCALLTYPE BeginQuery(
1423 _In_ ID3D12QueryHeap *pQueryHeap,
1424 _In_ D3D12_QUERY_TYPE Type,
1425 _In_ UINT Index) = 0;
1426
1427 virtual void STDMETHODCALLTYPE EndQuery(
1428 _In_ ID3D12QueryHeap *pQueryHeap,
1429 _In_ D3D12_QUERY_TYPE Type,
1430 _In_ UINT Index) = 0;
1431
1432 virtual void STDMETHODCALLTYPE ResolveQueryData(
1433 _In_ ID3D12QueryHeap *pQueryHeap,
1434 _In_ D3D12_QUERY_TYPE Type,
1435 _In_ UINT StartIndex,
1436 _In_ UINT NumQueries,
1437 _In_ ID3D12Resource *pDestinationBuffer,
1438 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1439
1440 virtual void STDMETHODCALLTYPE SetPredication(
1441 _In_opt_ ID3D12Resource *pBuffer,
1442 _In_ UINT64 AlignedBufferOffset,
1443 _In_ D3D12_PREDICATION_OP Operation) = 0;
1444
1445 virtual void STDMETHODCALLTYPE SetMarker(
1446 UINT Metadata,
1447 _In_reads_bytes_opt_(Size) const void *pData,
1448 UINT Size) = 0;
1449
1450 virtual void STDMETHODCALLTYPE BeginEvent(
1451 UINT Metadata,
1452 _In_reads_bytes_opt_(Size) const void *pData,
1453 UINT Size) = 0;
1454
1455 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1456
1457 virtual void STDMETHODCALLTYPE DecodeFrame(
1458 _In_ ID3D12VideoDecoder *pDecoder,
1459 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1460 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1461
1462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1463 UINT Count,
1464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1466
1467 };
1468
1469
1470#else /* C style interface */
1471
1472 typedef struct ID3D12VideoDecodeCommandListVtbl
1473 {
1474 BEGIN_INTERFACE
1475
1476 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1477 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1478 ID3D12VideoDecodeCommandList * This,
1479 REFIID riid,
1480 _COM_Outptr_ void **ppvObject);
1481
1482 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1483 ULONG ( STDMETHODCALLTYPE *AddRef )(
1484 ID3D12VideoDecodeCommandList * This);
1485
1486 DECLSPEC_XFGVIRT(IUnknown, Release)
1487 ULONG ( STDMETHODCALLTYPE *Release )(
1488 ID3D12VideoDecodeCommandList * This);
1489
1490 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1491 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1492 ID3D12VideoDecodeCommandList * This,
1493 _In_ REFGUID guid,
1494 _Inout_ UINT *pDataSize,
1495 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1496
1497 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1498 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1499 ID3D12VideoDecodeCommandList * This,
1500 _In_ REFGUID guid,
1501 _In_ UINT DataSize,
1502 _In_reads_bytes_opt_( DataSize ) const void *pData);
1503
1504 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1505 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1506 ID3D12VideoDecodeCommandList * This,
1507 _In_ REFGUID guid,
1508 _In_opt_ const IUnknown *pData);
1509
1510 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1511 HRESULT ( STDMETHODCALLTYPE *SetName )(
1512 ID3D12VideoDecodeCommandList * This,
1513 _In_z_ LPCWSTR Name);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1516 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1517 ID3D12VideoDecodeCommandList * This,
1518 REFIID riid,
1519 _COM_Outptr_opt_ void **ppvDevice);
1520
1521 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1522 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1523 ID3D12VideoDecodeCommandList * This);
1524
1525 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1526 HRESULT ( STDMETHODCALLTYPE *Close )(
1527 ID3D12VideoDecodeCommandList * This);
1528
1529 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1530 HRESULT ( STDMETHODCALLTYPE *Reset )(
1531 ID3D12VideoDecodeCommandList * This,
1532 _In_ ID3D12CommandAllocator *pAllocator);
1533
1534 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1535 void ( STDMETHODCALLTYPE *ClearState )(
1536 ID3D12VideoDecodeCommandList * This);
1537
1538 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1539 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1540 ID3D12VideoDecodeCommandList * This,
1541 _In_ UINT NumBarriers,
1542 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1543
1544 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1545 void ( STDMETHODCALLTYPE *DiscardResource )(
1546 ID3D12VideoDecodeCommandList * This,
1547 _In_ ID3D12Resource *pResource,
1548 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1549
1550 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1551 void ( STDMETHODCALLTYPE *BeginQuery )(
1552 ID3D12VideoDecodeCommandList * This,
1553 _In_ ID3D12QueryHeap *pQueryHeap,
1554 _In_ D3D12_QUERY_TYPE Type,
1555 _In_ UINT Index);
1556
1557 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1558 void ( STDMETHODCALLTYPE *EndQuery )(
1559 ID3D12VideoDecodeCommandList * This,
1560 _In_ ID3D12QueryHeap *pQueryHeap,
1561 _In_ D3D12_QUERY_TYPE Type,
1562 _In_ UINT Index);
1563
1564 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1565 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1566 ID3D12VideoDecodeCommandList * This,
1567 _In_ ID3D12QueryHeap *pQueryHeap,
1568 _In_ D3D12_QUERY_TYPE Type,
1569 _In_ UINT StartIndex,
1570 _In_ UINT NumQueries,
1571 _In_ ID3D12Resource *pDestinationBuffer,
1572 _In_ UINT64 AlignedDestinationBufferOffset);
1573
1574 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1575 void ( STDMETHODCALLTYPE *SetPredication )(
1576 ID3D12VideoDecodeCommandList * This,
1577 _In_opt_ ID3D12Resource *pBuffer,
1578 _In_ UINT64 AlignedBufferOffset,
1579 _In_ D3D12_PREDICATION_OP Operation);
1580
1581 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1582 void ( STDMETHODCALLTYPE *SetMarker )(
1583 ID3D12VideoDecodeCommandList * This,
1584 UINT Metadata,
1585 _In_reads_bytes_opt_(Size) const void *pData,
1586 UINT Size);
1587
1588 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1589 void ( STDMETHODCALLTYPE *BeginEvent )(
1590 ID3D12VideoDecodeCommandList * This,
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size);
1594
1595 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1596 void ( STDMETHODCALLTYPE *EndEvent )(
1597 ID3D12VideoDecodeCommandList * This);
1598
1599 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1600 void ( STDMETHODCALLTYPE *DecodeFrame )(
1601 ID3D12VideoDecodeCommandList * This,
1602 _In_ ID3D12VideoDecoder *pDecoder,
1603 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1604 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1605
1606 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1607 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1608 ID3D12VideoDecodeCommandList * This,
1609 UINT Count,
1610 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1611 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1612
1613 END_INTERFACE
1614 } ID3D12VideoDecodeCommandListVtbl;
1615
1616 interface ID3D12VideoDecodeCommandList
1617 {
1618 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1619 };
1620
1621
1622
1623#ifdef COBJMACROS
1624
1625
1626#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1627 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1628
1629#define ID3D12VideoDecodeCommandList_AddRef(This) \
1630 ( (This)->lpVtbl -> AddRef(This) )
1631
1632#define ID3D12VideoDecodeCommandList_Release(This) \
1633 ( (This)->lpVtbl -> Release(This) )
1634
1635
1636#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1637 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1638
1639#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1640 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1641
1642#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1643 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1644
1645#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1646 ( (This)->lpVtbl -> SetName(This,Name) )
1647
1648
1649#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1650 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1651
1652
1653#define ID3D12VideoDecodeCommandList_GetType(This) \
1654 ( (This)->lpVtbl -> GetType(This) )
1655
1656
1657#define ID3D12VideoDecodeCommandList_Close(This) \
1658 ( (This)->lpVtbl -> Close(This) )
1659
1660#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1661 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1662
1663#define ID3D12VideoDecodeCommandList_ClearState(This) \
1664 ( (This)->lpVtbl -> ClearState(This) )
1665
1666#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1667 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1668
1669#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1670 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1671
1672#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1673 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1674
1675#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1676 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1677
1678#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1679 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1680
1681#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1682 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1683
1684#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1685 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1686
1687#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1688 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1689
1690#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1691 ( (This)->lpVtbl -> EndEvent(This) )
1692
1693#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1694 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1695
1696#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1697 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1698
1699#endif /* COBJMACROS */
1700
1701
1702#endif /* C style interface */
1703
1704
1705
1706
1707#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1708
1709
1710#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1711#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1712
1713/* interface ID3D12VideoProcessCommandList */
1714/* [unique][local][object][uuid] */
1715
1716
1717EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1718
1719#if defined(__cplusplus) && !defined(CINTERFACE)
1720
1721 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1722 ID3D12VideoProcessCommandList : public ID3D12CommandList
1723 {
1724 public:
1725 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1726
1727 virtual HRESULT STDMETHODCALLTYPE Reset(
1728 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1729
1730 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1731
1732 virtual void STDMETHODCALLTYPE ResourceBarrier(
1733 _In_ UINT NumBarriers,
1734 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1735
1736 virtual void STDMETHODCALLTYPE DiscardResource(
1737 _In_ ID3D12Resource *pResource,
1738 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1739
1740 virtual void STDMETHODCALLTYPE BeginQuery(
1741 _In_ ID3D12QueryHeap *pQueryHeap,
1742 _In_ D3D12_QUERY_TYPE Type,
1743 _In_ UINT Index) = 0;
1744
1745 virtual void STDMETHODCALLTYPE EndQuery(
1746 _In_ ID3D12QueryHeap *pQueryHeap,
1747 _In_ D3D12_QUERY_TYPE Type,
1748 _In_ UINT Index) = 0;
1749
1750 virtual void STDMETHODCALLTYPE ResolveQueryData(
1751 _In_ ID3D12QueryHeap *pQueryHeap,
1752 _In_ D3D12_QUERY_TYPE Type,
1753 _In_ UINT StartIndex,
1754 _In_ UINT NumQueries,
1755 _In_ ID3D12Resource *pDestinationBuffer,
1756 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1757
1758 virtual void STDMETHODCALLTYPE SetPredication(
1759 _In_opt_ ID3D12Resource *pBuffer,
1760 _In_ UINT64 AlignedBufferOffset,
1761 _In_ D3D12_PREDICATION_OP Operation) = 0;
1762
1763 virtual void STDMETHODCALLTYPE SetMarker(
1764 UINT Metadata,
1765 _In_reads_bytes_opt_(Size) const void *pData,
1766 UINT Size) = 0;
1767
1768 virtual void STDMETHODCALLTYPE BeginEvent(
1769 UINT Metadata,
1770 _In_reads_bytes_opt_(Size) const void *pData,
1771 UINT Size) = 0;
1772
1773 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1774
1775 virtual void STDMETHODCALLTYPE ProcessFrames(
1776 _In_ ID3D12VideoProcessor *pVideoProcessor,
1777 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1778 UINT NumInputStreams,
1779 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1780
1781 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1782 UINT Count,
1783 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1784 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1785
1786 };
1787
1788
1789#else /* C style interface */
1790
1791 typedef struct ID3D12VideoProcessCommandListVtbl
1792 {
1793 BEGIN_INTERFACE
1794
1795 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1796 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1797 ID3D12VideoProcessCommandList * This,
1798 REFIID riid,
1799 _COM_Outptr_ void **ppvObject);
1800
1801 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1802 ULONG ( STDMETHODCALLTYPE *AddRef )(
1803 ID3D12VideoProcessCommandList * This);
1804
1805 DECLSPEC_XFGVIRT(IUnknown, Release)
1806 ULONG ( STDMETHODCALLTYPE *Release )(
1807 ID3D12VideoProcessCommandList * This);
1808
1809 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1810 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1811 ID3D12VideoProcessCommandList * This,
1812 _In_ REFGUID guid,
1813 _Inout_ UINT *pDataSize,
1814 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1815
1816 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1817 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1818 ID3D12VideoProcessCommandList * This,
1819 _In_ REFGUID guid,
1820 _In_ UINT DataSize,
1821 _In_reads_bytes_opt_( DataSize ) const void *pData);
1822
1823 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1824 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1825 ID3D12VideoProcessCommandList * This,
1826 _In_ REFGUID guid,
1827 _In_opt_ const IUnknown *pData);
1828
1829 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1830 HRESULT ( STDMETHODCALLTYPE *SetName )(
1831 ID3D12VideoProcessCommandList * This,
1832 _In_z_ LPCWSTR Name);
1833
1834 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1835 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1836 ID3D12VideoProcessCommandList * This,
1837 REFIID riid,
1838 _COM_Outptr_opt_ void **ppvDevice);
1839
1840 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1841 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1842 ID3D12VideoProcessCommandList * This);
1843
1844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1845 HRESULT ( STDMETHODCALLTYPE *Close )(
1846 ID3D12VideoProcessCommandList * This);
1847
1848 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1849 HRESULT ( STDMETHODCALLTYPE *Reset )(
1850 ID3D12VideoProcessCommandList * This,
1851 _In_ ID3D12CommandAllocator *pAllocator);
1852
1853 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1854 void ( STDMETHODCALLTYPE *ClearState )(
1855 ID3D12VideoProcessCommandList * This);
1856
1857 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
1858 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1859 ID3D12VideoProcessCommandList * This,
1860 _In_ UINT NumBarriers,
1861 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1862
1863 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
1864 void ( STDMETHODCALLTYPE *DiscardResource )(
1865 ID3D12VideoProcessCommandList * This,
1866 _In_ ID3D12Resource *pResource,
1867 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1868
1869 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
1870 void ( STDMETHODCALLTYPE *BeginQuery )(
1871 ID3D12VideoProcessCommandList * This,
1872 _In_ ID3D12QueryHeap *pQueryHeap,
1873 _In_ D3D12_QUERY_TYPE Type,
1874 _In_ UINT Index);
1875
1876 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
1877 void ( STDMETHODCALLTYPE *EndQuery )(
1878 ID3D12VideoProcessCommandList * This,
1879 _In_ ID3D12QueryHeap *pQueryHeap,
1880 _In_ D3D12_QUERY_TYPE Type,
1881 _In_ UINT Index);
1882
1883 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
1884 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1885 ID3D12VideoProcessCommandList * This,
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT StartIndex,
1889 _In_ UINT NumQueries,
1890 _In_ ID3D12Resource *pDestinationBuffer,
1891 _In_ UINT64 AlignedDestinationBufferOffset);
1892
1893 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
1894 void ( STDMETHODCALLTYPE *SetPredication )(
1895 ID3D12VideoProcessCommandList * This,
1896 _In_opt_ ID3D12Resource *pBuffer,
1897 _In_ UINT64 AlignedBufferOffset,
1898 _In_ D3D12_PREDICATION_OP Operation);
1899
1900 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
1901 void ( STDMETHODCALLTYPE *SetMarker )(
1902 ID3D12VideoProcessCommandList * This,
1903 UINT Metadata,
1904 _In_reads_bytes_opt_(Size) const void *pData,
1905 UINT Size);
1906
1907 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
1908 void ( STDMETHODCALLTYPE *BeginEvent )(
1909 ID3D12VideoProcessCommandList * This,
1910 UINT Metadata,
1911 _In_reads_bytes_opt_(Size) const void *pData,
1912 UINT Size);
1913
1914 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
1915 void ( STDMETHODCALLTYPE *EndEvent )(
1916 ID3D12VideoProcessCommandList * This);
1917
1918 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
1919 void ( STDMETHODCALLTYPE *ProcessFrames )(
1920 ID3D12VideoProcessCommandList * This,
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);
1925
1926 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
1927 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1928 ID3D12VideoProcessCommandList * This,
1929 UINT Count,
1930 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1931 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1932
1933 END_INTERFACE
1934 } ID3D12VideoProcessCommandListVtbl;
1935
1936 interface ID3D12VideoProcessCommandList
1937 {
1938 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
1939 };
1940
1941
1942
1943#ifdef COBJMACROS
1944
1945
1946#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
1947 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1948
1949#define ID3D12VideoProcessCommandList_AddRef(This) \
1950 ( (This)->lpVtbl -> AddRef(This) )
1951
1952#define ID3D12VideoProcessCommandList_Release(This) \
1953 ( (This)->lpVtbl -> Release(This) )
1954
1955
1956#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1957 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1958
1959#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
1960 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1961
1962#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
1963 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1964
1965#define ID3D12VideoProcessCommandList_SetName(This,Name) \
1966 ( (This)->lpVtbl -> SetName(This,Name) )
1967
1968
1969#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
1970 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1971
1972
1973#define ID3D12VideoProcessCommandList_GetType(This) \
1974 ( (This)->lpVtbl -> GetType(This) )
1975
1976
1977#define ID3D12VideoProcessCommandList_Close(This) \
1978 ( (This)->lpVtbl -> Close(This) )
1979
1980#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
1981 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1982
1983#define ID3D12VideoProcessCommandList_ClearState(This) \
1984 ( (This)->lpVtbl -> ClearState(This) )
1985
1986#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1987 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1988
1989#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
1990 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1991
1992#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1993 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1994
1995#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1996 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1997
1998#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1999 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2000
2001#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2002 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2003
2004#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2005 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2006
2007#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2008 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2009
2010#define ID3D12VideoProcessCommandList_EndEvent(This) \
2011 ( (This)->lpVtbl -> EndEvent(This) )
2012
2013#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2014 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2015
2016#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2017 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2018
2019#endif /* COBJMACROS */
2020
2021
2022#endif /* C style interface */
2023
2024
2025
2026
2027#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2028
2029
2030/* interface __MIDL_itf_d3d12video_0000_0006 */
2031/* [local] */
2032
2033typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2034 {
2035 UINT64 Offset;
2036 ID3D12Resource *pBuffer;
2037 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2038
2039typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2040 {
2041 BOOL Enable;
2042 ID3D12Resource *pReferenceTexture2D;
2043 UINT ReferenceSubresource;
2044 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2045 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2046 UINT OutputWidth;
2047 UINT OutputHeight;
2048 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2049
2050typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2051 {
2052 ID3D12Resource *pOutputTexture2D;
2053 UINT OutputSubresource;
2054 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2055 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2056 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2057
2058
2059
2060extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2062
2063#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2064#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2065
2066/* interface ID3D12VideoDecodeCommandList1 */
2067/* [unique][local][object][uuid] */
2068
2069
2070EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2071
2072#if defined(__cplusplus) && !defined(CINTERFACE)
2073
2074 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2075 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2076 {
2077 public:
2078 virtual void STDMETHODCALLTYPE DecodeFrame1(
2079 _In_ ID3D12VideoDecoder *pDecoder,
2080 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2081 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2082
2083 };
2084
2085
2086#else /* C style interface */
2087
2088 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2089 {
2090 BEGIN_INTERFACE
2091
2092 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2093 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2094 ID3D12VideoDecodeCommandList1 * This,
2095 REFIID riid,
2096 _COM_Outptr_ void **ppvObject);
2097
2098 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2099 ULONG ( STDMETHODCALLTYPE *AddRef )(
2100 ID3D12VideoDecodeCommandList1 * This);
2101
2102 DECLSPEC_XFGVIRT(IUnknown, Release)
2103 ULONG ( STDMETHODCALLTYPE *Release )(
2104 ID3D12VideoDecodeCommandList1 * This);
2105
2106 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2107 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2108 ID3D12VideoDecodeCommandList1 * This,
2109 _In_ REFGUID guid,
2110 _Inout_ UINT *pDataSize,
2111 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2112
2113 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2114 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2115 ID3D12VideoDecodeCommandList1 * This,
2116 _In_ REFGUID guid,
2117 _In_ UINT DataSize,
2118 _In_reads_bytes_opt_( DataSize ) const void *pData);
2119
2120 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2121 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2122 ID3D12VideoDecodeCommandList1 * This,
2123 _In_ REFGUID guid,
2124 _In_opt_ const IUnknown *pData);
2125
2126 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2127 HRESULT ( STDMETHODCALLTYPE *SetName )(
2128 ID3D12VideoDecodeCommandList1 * This,
2129 _In_z_ LPCWSTR Name);
2130
2131 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2132 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2133 ID3D12VideoDecodeCommandList1 * This,
2134 REFIID riid,
2135 _COM_Outptr_opt_ void **ppvDevice);
2136
2137 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2138 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2139 ID3D12VideoDecodeCommandList1 * This);
2140
2141 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2142 HRESULT ( STDMETHODCALLTYPE *Close )(
2143 ID3D12VideoDecodeCommandList1 * This);
2144
2145 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2146 HRESULT ( STDMETHODCALLTYPE *Reset )(
2147 ID3D12VideoDecodeCommandList1 * This,
2148 _In_ ID3D12CommandAllocator *pAllocator);
2149
2150 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2151 void ( STDMETHODCALLTYPE *ClearState )(
2152 ID3D12VideoDecodeCommandList1 * This);
2153
2154 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2155 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2156 ID3D12VideoDecodeCommandList1 * This,
2157 _In_ UINT NumBarriers,
2158 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2159
2160 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2161 void ( STDMETHODCALLTYPE *DiscardResource )(
2162 ID3D12VideoDecodeCommandList1 * This,
2163 _In_ ID3D12Resource *pResource,
2164 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2165
2166 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2167 void ( STDMETHODCALLTYPE *BeginQuery )(
2168 ID3D12VideoDecodeCommandList1 * This,
2169 _In_ ID3D12QueryHeap *pQueryHeap,
2170 _In_ D3D12_QUERY_TYPE Type,
2171 _In_ UINT Index);
2172
2173 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2174 void ( STDMETHODCALLTYPE *EndQuery )(
2175 ID3D12VideoDecodeCommandList1 * This,
2176 _In_ ID3D12QueryHeap *pQueryHeap,
2177 _In_ D3D12_QUERY_TYPE Type,
2178 _In_ UINT Index);
2179
2180 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2181 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2182 ID3D12VideoDecodeCommandList1 * This,
2183 _In_ ID3D12QueryHeap *pQueryHeap,
2184 _In_ D3D12_QUERY_TYPE Type,
2185 _In_ UINT StartIndex,
2186 _In_ UINT NumQueries,
2187 _In_ ID3D12Resource *pDestinationBuffer,
2188 _In_ UINT64 AlignedDestinationBufferOffset);
2189
2190 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2191 void ( STDMETHODCALLTYPE *SetPredication )(
2192 ID3D12VideoDecodeCommandList1 * This,
2193 _In_opt_ ID3D12Resource *pBuffer,
2194 _In_ UINT64 AlignedBufferOffset,
2195 _In_ D3D12_PREDICATION_OP Operation);
2196
2197 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2198 void ( STDMETHODCALLTYPE *SetMarker )(
2199 ID3D12VideoDecodeCommandList1 * This,
2200 UINT Metadata,
2201 _In_reads_bytes_opt_(Size) const void *pData,
2202 UINT Size);
2203
2204 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2205 void ( STDMETHODCALLTYPE *BeginEvent )(
2206 ID3D12VideoDecodeCommandList1 * This,
2207 UINT Metadata,
2208 _In_reads_bytes_opt_(Size) const void *pData,
2209 UINT Size);
2210
2211 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2212 void ( STDMETHODCALLTYPE *EndEvent )(
2213 ID3D12VideoDecodeCommandList1 * This);
2214
2215 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2216 void ( STDMETHODCALLTYPE *DecodeFrame )(
2217 ID3D12VideoDecodeCommandList1 * This,
2218 _In_ ID3D12VideoDecoder *pDecoder,
2219 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2220 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2221
2222 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2223 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2224 ID3D12VideoDecodeCommandList1 * This,
2225 UINT Count,
2226 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2227 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2228
2229 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2230 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2231 ID3D12VideoDecodeCommandList1 * This,
2232 _In_ ID3D12VideoDecoder *pDecoder,
2233 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2234 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2235
2236 END_INTERFACE
2237 } ID3D12VideoDecodeCommandList1Vtbl;
2238
2239 interface ID3D12VideoDecodeCommandList1
2240 {
2241 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2242 };
2243
2244
2245
2246#ifdef COBJMACROS
2247
2248
2249#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2250 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2251
2252#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2253 ( (This)->lpVtbl -> AddRef(This) )
2254
2255#define ID3D12VideoDecodeCommandList1_Release(This) \
2256 ( (This)->lpVtbl -> Release(This) )
2257
2258
2259#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2260 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2261
2262#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2263 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2264
2265#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2266 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2267
2268#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2269 ( (This)->lpVtbl -> SetName(This,Name) )
2270
2271
2272#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2273 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2274
2275
2276#define ID3D12VideoDecodeCommandList1_GetType(This) \
2277 ( (This)->lpVtbl -> GetType(This) )
2278
2279
2280#define ID3D12VideoDecodeCommandList1_Close(This) \
2281 ( (This)->lpVtbl -> Close(This) )
2282
2283#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2284 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2285
2286#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2287 ( (This)->lpVtbl -> ClearState(This) )
2288
2289#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2290 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2291
2292#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2293 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2294
2295#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2296 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2297
2298#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2299 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2300
2301#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2302 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2303
2304#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2305 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2306
2307#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2308 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2309
2310#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2311 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2312
2313#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2314 ( (This)->lpVtbl -> EndEvent(This) )
2315
2316#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2317 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2318
2319#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2320 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2321
2322
2323#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2324 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2325
2326#endif /* COBJMACROS */
2327
2328
2329#endif /* C style interface */
2330
2331
2332
2333
2334#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2335
2336
2337/* interface __MIDL_itf_d3d12video_0000_0007 */
2338/* [local] */
2339
2340typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2341 {
2342 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2343 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2344 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2345 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2346 INT FilterLevels[ 32 ];
2347 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2348 D3D12_VIDEO_FIELD_TYPE FieldType;
2349 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2350
2351
2352
2353extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2354extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2355
2356#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2357#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2358
2359/* interface ID3D12VideoProcessCommandList1 */
2360/* [unique][local][object][uuid] */
2361
2362
2363EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2364
2365#if defined(__cplusplus) && !defined(CINTERFACE)
2366
2367 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2368 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2369 {
2370 public:
2371 virtual void STDMETHODCALLTYPE ProcessFrames1(
2372 _In_ ID3D12VideoProcessor *pVideoProcessor,
2373 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2374 UINT NumInputStreams,
2375 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2376
2377 };
2378
2379
2380#else /* C style interface */
2381
2382 typedef struct ID3D12VideoProcessCommandList1Vtbl
2383 {
2384 BEGIN_INTERFACE
2385
2386 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2387 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2388 ID3D12VideoProcessCommandList1 * This,
2389 REFIID riid,
2390 _COM_Outptr_ void **ppvObject);
2391
2392 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2393 ULONG ( STDMETHODCALLTYPE *AddRef )(
2394 ID3D12VideoProcessCommandList1 * This);
2395
2396 DECLSPEC_XFGVIRT(IUnknown, Release)
2397 ULONG ( STDMETHODCALLTYPE *Release )(
2398 ID3D12VideoProcessCommandList1 * This);
2399
2400 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2401 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2402 ID3D12VideoProcessCommandList1 * This,
2403 _In_ REFGUID guid,
2404 _Inout_ UINT *pDataSize,
2405 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2406
2407 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2408 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2409 ID3D12VideoProcessCommandList1 * This,
2410 _In_ REFGUID guid,
2411 _In_ UINT DataSize,
2412 _In_reads_bytes_opt_( DataSize ) const void *pData);
2413
2414 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2415 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2416 ID3D12VideoProcessCommandList1 * This,
2417 _In_ REFGUID guid,
2418 _In_opt_ const IUnknown *pData);
2419
2420 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2421 HRESULT ( STDMETHODCALLTYPE *SetName )(
2422 ID3D12VideoProcessCommandList1 * This,
2423 _In_z_ LPCWSTR Name);
2424
2425 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2426 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2427 ID3D12VideoProcessCommandList1 * This,
2428 REFIID riid,
2429 _COM_Outptr_opt_ void **ppvDevice);
2430
2431 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2432 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2433 ID3D12VideoProcessCommandList1 * This);
2434
2435 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2436 HRESULT ( STDMETHODCALLTYPE *Close )(
2437 ID3D12VideoProcessCommandList1 * This);
2438
2439 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2440 HRESULT ( STDMETHODCALLTYPE *Reset )(
2441 ID3D12VideoProcessCommandList1 * This,
2442 _In_ ID3D12CommandAllocator *pAllocator);
2443
2444 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2445 void ( STDMETHODCALLTYPE *ClearState )(
2446 ID3D12VideoProcessCommandList1 * This);
2447
2448 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2449 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2450 ID3D12VideoProcessCommandList1 * This,
2451 _In_ UINT NumBarriers,
2452 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2453
2454 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2455 void ( STDMETHODCALLTYPE *DiscardResource )(
2456 ID3D12VideoProcessCommandList1 * This,
2457 _In_ ID3D12Resource *pResource,
2458 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2459
2460 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2461 void ( STDMETHODCALLTYPE *BeginQuery )(
2462 ID3D12VideoProcessCommandList1 * This,
2463 _In_ ID3D12QueryHeap *pQueryHeap,
2464 _In_ D3D12_QUERY_TYPE Type,
2465 _In_ UINT Index);
2466
2467 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2468 void ( STDMETHODCALLTYPE *EndQuery )(
2469 ID3D12VideoProcessCommandList1 * This,
2470 _In_ ID3D12QueryHeap *pQueryHeap,
2471 _In_ D3D12_QUERY_TYPE Type,
2472 _In_ UINT Index);
2473
2474 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2475 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2476 ID3D12VideoProcessCommandList1 * This,
2477 _In_ ID3D12QueryHeap *pQueryHeap,
2478 _In_ D3D12_QUERY_TYPE Type,
2479 _In_ UINT StartIndex,
2480 _In_ UINT NumQueries,
2481 _In_ ID3D12Resource *pDestinationBuffer,
2482 _In_ UINT64 AlignedDestinationBufferOffset);
2483
2484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2485 void ( STDMETHODCALLTYPE *SetPredication )(
2486 ID3D12VideoProcessCommandList1 * This,
2487 _In_opt_ ID3D12Resource *pBuffer,
2488 _In_ UINT64 AlignedBufferOffset,
2489 _In_ D3D12_PREDICATION_OP Operation);
2490
2491 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2492 void ( STDMETHODCALLTYPE *SetMarker )(
2493 ID3D12VideoProcessCommandList1 * This,
2494 UINT Metadata,
2495 _In_reads_bytes_opt_(Size) const void *pData,
2496 UINT Size);
2497
2498 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2499 void ( STDMETHODCALLTYPE *BeginEvent )(
2500 ID3D12VideoProcessCommandList1 * This,
2501 UINT Metadata,
2502 _In_reads_bytes_opt_(Size) const void *pData,
2503 UINT Size);
2504
2505 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2506 void ( STDMETHODCALLTYPE *EndEvent )(
2507 ID3D12VideoProcessCommandList1 * This);
2508
2509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2510 void ( STDMETHODCALLTYPE *ProcessFrames )(
2511 ID3D12VideoProcessCommandList1 * This,
2512 _In_ ID3D12VideoProcessor *pVideoProcessor,
2513 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2514 UINT NumInputStreams,
2515 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2516
2517 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2518 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2519 ID3D12VideoProcessCommandList1 * This,
2520 UINT Count,
2521 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2522 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2523
2524 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2525 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2526 ID3D12VideoProcessCommandList1 * This,
2527 _In_ ID3D12VideoProcessor *pVideoProcessor,
2528 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2529 UINT NumInputStreams,
2530 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2531
2532 END_INTERFACE
2533 } ID3D12VideoProcessCommandList1Vtbl;
2534
2535 interface ID3D12VideoProcessCommandList1
2536 {
2537 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2538 };
2539
2540
2541
2542#ifdef COBJMACROS
2543
2544
2545#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2546 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2547
2548#define ID3D12VideoProcessCommandList1_AddRef(This) \
2549 ( (This)->lpVtbl -> AddRef(This) )
2550
2551#define ID3D12VideoProcessCommandList1_Release(This) \
2552 ( (This)->lpVtbl -> Release(This) )
2553
2554
2555#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2556 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2557
2558#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2559 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2560
2561#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2562 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2563
2564#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2565 ( (This)->lpVtbl -> SetName(This,Name) )
2566
2567
2568#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2569 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2570
2571
2572#define ID3D12VideoProcessCommandList1_GetType(This) \
2573 ( (This)->lpVtbl -> GetType(This) )
2574
2575
2576#define ID3D12VideoProcessCommandList1_Close(This) \
2577 ( (This)->lpVtbl -> Close(This) )
2578
2579#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2580 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2581
2582#define ID3D12VideoProcessCommandList1_ClearState(This) \
2583 ( (This)->lpVtbl -> ClearState(This) )
2584
2585#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2586 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2587
2588#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2589 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2590
2591#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2592 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2593
2594#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2595 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2596
2597#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2598 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2599
2600#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2601 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2602
2603#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2604 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2605
2606#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2607 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2608
2609#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2610 ( (This)->lpVtbl -> EndEvent(This) )
2611
2612#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2613 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2614
2615#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2616 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2617
2618
2619#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2620 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2621
2622#endif /* COBJMACROS */
2623
2624
2625#endif /* C style interface */
2626
2627
2628
2629
2630#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2631
2632
2633/* interface __MIDL_itf_d3d12video_0000_0008 */
2634/* [local] */
2635
2636typedef
2637enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2638 {
2639 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2640 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2641 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2642
2643typedef
2644enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2645 {
2646 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2647 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2648 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2649 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2650
2651DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );
2652typedef
2653enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2654 {
2655 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2656 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2657
2658typedef
2659enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2660 {
2661 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2662 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2663 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2664
2665DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );
2666typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2667 {
2668 UINT NodeIndex;
2669 BOOL VideoDecodeSupport;
2670 BOOL VideoProcessSupport;
2671 BOOL VideoEncodeSupport;
2672 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2673
2674typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2675 {
2676 UINT NodeIndex;
2677 DXGI_FORMAT InputFormat;
2678 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2679 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2680 D3D12_VIDEO_SIZE_RANGE SizeRange;
2681 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2682
2683typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2684 {
2685 UINT NodeIndex;
2686 DXGI_FORMAT InputFormat;
2687 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2688 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2689 D3D12_VIDEO_SIZE_RANGE SizeRange;
2690 BOOL Protected;
2691 UINT64 MotionVectorHeapMemoryPoolL0Size;
2692 UINT64 MotionVectorHeapMemoryPoolL1Size;
2693 UINT64 MotionEstimatorMemoryPoolL0Size;
2694 UINT64 MotionEstimatorMemoryPoolL1Size;
2695 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2696
2697typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2698 {
2699 UINT NodeMask;
2700 DXGI_FORMAT InputFormat;
2701 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2702 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2703 D3D12_VIDEO_SIZE_RANGE SizeRange;
2704 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2705
2706
2707
2708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2710
2711#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2712#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2713
2714/* interface ID3D12VideoMotionEstimator */
2715/* [unique][local][object][uuid] */
2716
2717
2718EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2719
2720#if defined(__cplusplus) && !defined(CINTERFACE)
2721
2722 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2723 ID3D12VideoMotionEstimator : public ID3D12Pageable
2724 {
2725 public:
2726 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2727
2728 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2729 REFIID riid,
2730 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2731
2732 };
2733
2734
2735#else /* C style interface */
2736
2737 typedef struct ID3D12VideoMotionEstimatorVtbl
2738 {
2739 BEGIN_INTERFACE
2740
2741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2743 ID3D12VideoMotionEstimator * This,
2744 REFIID riid,
2745 _COM_Outptr_ void **ppvObject);
2746
2747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2748 ULONG ( STDMETHODCALLTYPE *AddRef )(
2749 ID3D12VideoMotionEstimator * This);
2750
2751 DECLSPEC_XFGVIRT(IUnknown, Release)
2752 ULONG ( STDMETHODCALLTYPE *Release )(
2753 ID3D12VideoMotionEstimator * This);
2754
2755 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2756 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2757 ID3D12VideoMotionEstimator * This,
2758 _In_ REFGUID guid,
2759 _Inout_ UINT *pDataSize,
2760 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2761
2762 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2763 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2764 ID3D12VideoMotionEstimator * This,
2765 _In_ REFGUID guid,
2766 _In_ UINT DataSize,
2767 _In_reads_bytes_opt_( DataSize ) const void *pData);
2768
2769 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2770 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2771 ID3D12VideoMotionEstimator * This,
2772 _In_ REFGUID guid,
2773 _In_opt_ const IUnknown *pData);
2774
2775 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2776 HRESULT ( STDMETHODCALLTYPE *SetName )(
2777 ID3D12VideoMotionEstimator * This,
2778 _In_z_ LPCWSTR Name);
2779
2780 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2781 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2782 ID3D12VideoMotionEstimator * This,
2783 REFIID riid,
2784 _COM_Outptr_opt_ void **ppvDevice);
2785
2786 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2787 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2788 ID3D12VideoMotionEstimator * This,
2789 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2790
2791 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2792 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2793 ID3D12VideoMotionEstimator * This,
2794 REFIID riid,
2795 _COM_Outptr_opt_ void **ppProtectedSession);
2796
2797 END_INTERFACE
2798 } ID3D12VideoMotionEstimatorVtbl;
2799
2800 interface ID3D12VideoMotionEstimator
2801 {
2802 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2803 };
2804
2805
2806
2807#ifdef COBJMACROS
2808
2809
2810#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2811 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2812
2813#define ID3D12VideoMotionEstimator_AddRef(This) \
2814 ( (This)->lpVtbl -> AddRef(This) )
2815
2816#define ID3D12VideoMotionEstimator_Release(This) \
2817 ( (This)->lpVtbl -> Release(This) )
2818
2819
2820#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2821 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2822
2823#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2824 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2825
2826#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2827 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2828
2829#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2830 ( (This)->lpVtbl -> SetName(This,Name) )
2831
2832
2833#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2834 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2835
2836
2837
2838#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
2839 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
2840
2841#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
2842 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
2843
2844#endif /* COBJMACROS */
2845
2846
2847#endif /* C style interface */
2848
2849
2850
2851
2852#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
2853
2854
2855/* interface __MIDL_itf_d3d12video_0000_0009 */
2856/* [local] */
2857
2858typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
2859 {
2860 UINT NodeMask;
2861 DXGI_FORMAT InputFormat;
2862 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2863 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2864 D3D12_VIDEO_SIZE_RANGE SizeRange;
2865 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
2866
2867
2868
2869extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
2870extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
2871
2872#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2873#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2874
2875/* interface ID3D12VideoMotionVectorHeap */
2876/* [unique][local][object][uuid] */
2877
2878
2879EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
2880
2881#if defined(__cplusplus) && !defined(CINTERFACE)
2882
2883 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
2884 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
2885 {
2886 public:
2887 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2888
2889 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2890 REFIID riid,
2891 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2892
2893 };
2894
2895
2896#else /* C style interface */
2897
2898 typedef struct ID3D12VideoMotionVectorHeapVtbl
2899 {
2900 BEGIN_INTERFACE
2901
2902 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2903 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2904 ID3D12VideoMotionVectorHeap * This,
2905 REFIID riid,
2906 _COM_Outptr_ void **ppvObject);
2907
2908 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2909 ULONG ( STDMETHODCALLTYPE *AddRef )(
2910 ID3D12VideoMotionVectorHeap * This);
2911
2912 DECLSPEC_XFGVIRT(IUnknown, Release)
2913 ULONG ( STDMETHODCALLTYPE *Release )(
2914 ID3D12VideoMotionVectorHeap * This);
2915
2916 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2917 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2918 ID3D12VideoMotionVectorHeap * This,
2919 _In_ REFGUID guid,
2920 _Inout_ UINT *pDataSize,
2921 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2922
2923 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2924 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2925 ID3D12VideoMotionVectorHeap * This,
2926 _In_ REFGUID guid,
2927 _In_ UINT DataSize,
2928 _In_reads_bytes_opt_( DataSize ) const void *pData);
2929
2930 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2931 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2932 ID3D12VideoMotionVectorHeap * This,
2933 _In_ REFGUID guid,
2934 _In_opt_ const IUnknown *pData);
2935
2936 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2937 HRESULT ( STDMETHODCALLTYPE *SetName )(
2938 ID3D12VideoMotionVectorHeap * This,
2939 _In_z_ LPCWSTR Name);
2940
2941 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2942 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2943 ID3D12VideoMotionVectorHeap * This,
2944 REFIID riid,
2945 _COM_Outptr_opt_ void **ppvDevice);
2946
2947 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
2948 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
2949 ID3D12VideoMotionVectorHeap * This,
2950 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
2951
2952 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
2953 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2954 ID3D12VideoMotionVectorHeap * This,
2955 REFIID riid,
2956 _COM_Outptr_opt_ void **ppProtectedSession);
2957
2958 END_INTERFACE
2959 } ID3D12VideoMotionVectorHeapVtbl;
2960
2961 interface ID3D12VideoMotionVectorHeap
2962 {
2963 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
2964 };
2965
2966
2967
2968#ifdef COBJMACROS
2969
2970
2971#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
2972 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2973
2974#define ID3D12VideoMotionVectorHeap_AddRef(This) \
2975 ( (This)->lpVtbl -> AddRef(This) )
2976
2977#define ID3D12VideoMotionVectorHeap_Release(This) \
2978 ( (This)->lpVtbl -> Release(This) )
2979
2980
2981#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
2982 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2983
2984#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
2985 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2986
2987#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
2988 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2989
2990#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
2991 ( (This)->lpVtbl -> SetName(This,Name) )
2992
2993
2994#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
2995 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2996
2997
2998
2999#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001
3002#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3003 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3004
3005#endif /* COBJMACROS */
3006
3007
3008#endif /* C style interface */
3009
3010
3011
3012
3013#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3014
3015
3016#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3017#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3018
3019/* interface ID3D12VideoDevice1 */
3020/* [unique][local][object][uuid] */
3021
3022
3023EXTERN_C const IID IID_ID3D12VideoDevice1;
3024
3025#if defined(__cplusplus) && !defined(CINTERFACE)
3026
3027 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3028 ID3D12VideoDevice1 : public ID3D12VideoDevice
3029 {
3030 public:
3031 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3032 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3033 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3034 _In_ REFIID riid,
3035 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3036
3037 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3038 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3039 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3040 _In_ REFIID riid,
3041 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3042
3043 };
3044
3045
3046#else /* C style interface */
3047
3048 typedef struct ID3D12VideoDevice1Vtbl
3049 {
3050 BEGIN_INTERFACE
3051
3052 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3053 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3054 ID3D12VideoDevice1 * This,
3055 REFIID riid,
3056 _COM_Outptr_ void **ppvObject);
3057
3058 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3059 ULONG ( STDMETHODCALLTYPE *AddRef )(
3060 ID3D12VideoDevice1 * This);
3061
3062 DECLSPEC_XFGVIRT(IUnknown, Release)
3063 ULONG ( STDMETHODCALLTYPE *Release )(
3064 ID3D12VideoDevice1 * This);
3065
3066 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3067 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3068 ID3D12VideoDevice1 * This,
3069 D3D12_FEATURE_VIDEO FeatureVideo,
3070 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3071 UINT FeatureSupportDataSize);
3072
3073 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3074 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3075 ID3D12VideoDevice1 * This,
3076 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3077 _In_ REFIID riid,
3078 _COM_Outptr_ void **ppVideoDecoder);
3079
3080 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3081 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3082 ID3D12VideoDevice1 * This,
3083 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3084 _In_ REFIID riid,
3085 _COM_Outptr_ void **ppVideoDecoderHeap);
3086
3087 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3088 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3089 ID3D12VideoDevice1 * This,
3090 UINT NodeMask,
3091 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3092 UINT NumInputStreamDescs,
3093 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3094 _In_ REFIID riid,
3095 _COM_Outptr_ void **ppVideoProcessor);
3096
3097 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3098 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3099 ID3D12VideoDevice1 * This,
3100 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3101 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3102 _In_ REFIID riid,
3103 _COM_Outptr_ void **ppVideoMotionEstimator);
3104
3105 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3106 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3107 ID3D12VideoDevice1 * This,
3108 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3109 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3110 _In_ REFIID riid,
3111 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3112
3113 END_INTERFACE
3114 } ID3D12VideoDevice1Vtbl;
3115
3116 interface ID3D12VideoDevice1
3117 {
3118 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3119 };
3120
3121
3122
3123#ifdef COBJMACROS
3124
3125
3126#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3127 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3128
3129#define ID3D12VideoDevice1_AddRef(This) \
3130 ( (This)->lpVtbl -> AddRef(This) )
3131
3132#define ID3D12VideoDevice1_Release(This) \
3133 ( (This)->lpVtbl -> Release(This) )
3134
3135
3136#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3137 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3138
3139#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3140 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3141
3142#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3143 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3144
3145#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3146 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3147
3148
3149#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3150 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3151
3152#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3153 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3154
3155#endif /* COBJMACROS */
3156
3157
3158#endif /* C style interface */
3159
3160
3161
3162
3163#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3164
3165
3166/* interface __MIDL_itf_d3d12video_0000_0011 */
3167/* [local] */
3168
3169typedef struct D3D12_RESOURCE_COORDINATE
3170 {
3171 UINT64 X;
3172 UINT Y;
3173 UINT Z;
3174 UINT SubresourceIndex;
3175 } D3D12_RESOURCE_COORDINATE;
3176
3177typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3178 {
3179 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3180 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3181
3182typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3183 {
3184 ID3D12Resource *pInputTexture2D;
3185 UINT InputSubresourceIndex;
3186 ID3D12Resource *pReferenceTexture2D;
3187 UINT ReferenceSubresourceIndex;
3188 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3189 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3190
3191typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3192 {
3193 ID3D12Resource *pMotionVectorTexture2D;
3194 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3195 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3196
3197typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3198 {
3199 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3200 UINT PixelWidth;
3201 UINT PixelHeight;
3202 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3203
3204
3205
3206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3207extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3208
3209#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3210#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3211
3212/* interface ID3D12VideoEncodeCommandList */
3213/* [unique][local][object][uuid] */
3214
3215
3216EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3217
3218#if defined(__cplusplus) && !defined(CINTERFACE)
3219
3220 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3221 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3222 {
3223 public:
3224 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3225
3226 virtual HRESULT STDMETHODCALLTYPE Reset(
3227 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3228
3229 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3230
3231 virtual void STDMETHODCALLTYPE ResourceBarrier(
3232 _In_ UINT NumBarriers,
3233 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3234
3235 virtual void STDMETHODCALLTYPE DiscardResource(
3236 _In_ ID3D12Resource *pResource,
3237 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3238
3239 virtual void STDMETHODCALLTYPE BeginQuery(
3240 _In_ ID3D12QueryHeap *pQueryHeap,
3241 _In_ D3D12_QUERY_TYPE Type,
3242 _In_ UINT Index) = 0;
3243
3244 virtual void STDMETHODCALLTYPE EndQuery(
3245 _In_ ID3D12QueryHeap *pQueryHeap,
3246 _In_ D3D12_QUERY_TYPE Type,
3247 _In_ UINT Index) = 0;
3248
3249 virtual void STDMETHODCALLTYPE ResolveQueryData(
3250 _In_ ID3D12QueryHeap *pQueryHeap,
3251 _In_ D3D12_QUERY_TYPE Type,
3252 _In_ UINT StartIndex,
3253 _In_ UINT NumQueries,
3254 _In_ ID3D12Resource *pDestinationBuffer,
3255 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3256
3257 virtual void STDMETHODCALLTYPE SetPredication(
3258 _In_opt_ ID3D12Resource *pBuffer,
3259 _In_ UINT64 AlignedBufferOffset,
3260 _In_ D3D12_PREDICATION_OP Operation) = 0;
3261
3262 virtual void STDMETHODCALLTYPE SetMarker(
3263 UINT Metadata,
3264 _In_reads_bytes_opt_(Size) const void *pData,
3265 UINT Size) = 0;
3266
3267 virtual void STDMETHODCALLTYPE BeginEvent(
3268 UINT Metadata,
3269 _In_reads_bytes_opt_(Size) const void *pData,
3270 UINT Size) = 0;
3271
3272 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3273
3274 virtual void STDMETHODCALLTYPE EstimateMotion(
3275 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3276 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3277 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3278
3279 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3280 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3281 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3282
3283 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3284 UINT Count,
3285 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3286 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3287
3288 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3289 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3290
3291 };
3292
3293
3294#else /* C style interface */
3295
3296 typedef struct ID3D12VideoEncodeCommandListVtbl
3297 {
3298 BEGIN_INTERFACE
3299
3300 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3301 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3302 ID3D12VideoEncodeCommandList * This,
3303 REFIID riid,
3304 _COM_Outptr_ void **ppvObject);
3305
3306 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3307 ULONG ( STDMETHODCALLTYPE *AddRef )(
3308 ID3D12VideoEncodeCommandList * This);
3309
3310 DECLSPEC_XFGVIRT(IUnknown, Release)
3311 ULONG ( STDMETHODCALLTYPE *Release )(
3312 ID3D12VideoEncodeCommandList * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3315 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3316 ID3D12VideoEncodeCommandList * This,
3317 _In_ REFGUID guid,
3318 _Inout_ UINT *pDataSize,
3319 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3320
3321 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3322 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3323 ID3D12VideoEncodeCommandList * This,
3324 _In_ REFGUID guid,
3325 _In_ UINT DataSize,
3326 _In_reads_bytes_opt_( DataSize ) const void *pData);
3327
3328 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3329 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3330 ID3D12VideoEncodeCommandList * This,
3331 _In_ REFGUID guid,
3332 _In_opt_ const IUnknown *pData);
3333
3334 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3335 HRESULT ( STDMETHODCALLTYPE *SetName )(
3336 ID3D12VideoEncodeCommandList * This,
3337 _In_z_ LPCWSTR Name);
3338
3339 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3340 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3341 ID3D12VideoEncodeCommandList * This,
3342 REFIID riid,
3343 _COM_Outptr_opt_ void **ppvDevice);
3344
3345 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3346 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3347 ID3D12VideoEncodeCommandList * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3350 HRESULT ( STDMETHODCALLTYPE *Close )(
3351 ID3D12VideoEncodeCommandList * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3354 HRESULT ( STDMETHODCALLTYPE *Reset )(
3355 ID3D12VideoEncodeCommandList * This,
3356 _In_ ID3D12CommandAllocator *pAllocator);
3357
3358 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3359 void ( STDMETHODCALLTYPE *ClearState )(
3360 ID3D12VideoEncodeCommandList * This);
3361
3362 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3363 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3364 ID3D12VideoEncodeCommandList * This,
3365 _In_ UINT NumBarriers,
3366 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3367
3368 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3369 void ( STDMETHODCALLTYPE *DiscardResource )(
3370 ID3D12VideoEncodeCommandList * This,
3371 _In_ ID3D12Resource *pResource,
3372 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3373
3374 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3375 void ( STDMETHODCALLTYPE *BeginQuery )(
3376 ID3D12VideoEncodeCommandList * This,
3377 _In_ ID3D12QueryHeap *pQueryHeap,
3378 _In_ D3D12_QUERY_TYPE Type,
3379 _In_ UINT Index);
3380
3381 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3382 void ( STDMETHODCALLTYPE *EndQuery )(
3383 ID3D12VideoEncodeCommandList * This,
3384 _In_ ID3D12QueryHeap *pQueryHeap,
3385 _In_ D3D12_QUERY_TYPE Type,
3386 _In_ UINT Index);
3387
3388 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3389 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3390 ID3D12VideoEncodeCommandList * This,
3391 _In_ ID3D12QueryHeap *pQueryHeap,
3392 _In_ D3D12_QUERY_TYPE Type,
3393 _In_ UINT StartIndex,
3394 _In_ UINT NumQueries,
3395 _In_ ID3D12Resource *pDestinationBuffer,
3396 _In_ UINT64 AlignedDestinationBufferOffset);
3397
3398 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3399 void ( STDMETHODCALLTYPE *SetPredication )(
3400 ID3D12VideoEncodeCommandList * This,
3401 _In_opt_ ID3D12Resource *pBuffer,
3402 _In_ UINT64 AlignedBufferOffset,
3403 _In_ D3D12_PREDICATION_OP Operation);
3404
3405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3406 void ( STDMETHODCALLTYPE *SetMarker )(
3407 ID3D12VideoEncodeCommandList * This,
3408 UINT Metadata,
3409 _In_reads_bytes_opt_(Size) const void *pData,
3410 UINT Size);
3411
3412 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3413 void ( STDMETHODCALLTYPE *BeginEvent )(
3414 ID3D12VideoEncodeCommandList * This,
3415 UINT Metadata,
3416 _In_reads_bytes_opt_(Size) const void *pData,
3417 UINT Size);
3418
3419 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3420 void ( STDMETHODCALLTYPE *EndEvent )(
3421 ID3D12VideoEncodeCommandList * This);
3422
3423 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3424 void ( STDMETHODCALLTYPE *EstimateMotion )(
3425 ID3D12VideoEncodeCommandList * This,
3426 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3427 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3428 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3429
3430 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3431 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3432 ID3D12VideoEncodeCommandList * This,
3433 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3434 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3435
3436 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3437 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3438 ID3D12VideoEncodeCommandList * This,
3439 UINT Count,
3440 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3441 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3442
3443 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3444 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3445 ID3D12VideoEncodeCommandList * This,
3446 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3447
3448 END_INTERFACE
3449 } ID3D12VideoEncodeCommandListVtbl;
3450
3451 interface ID3D12VideoEncodeCommandList
3452 {
3453 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3454 };
3455
3456
3457
3458#ifdef COBJMACROS
3459
3460
3461#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3462 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3463
3464#define ID3D12VideoEncodeCommandList_AddRef(This) \
3465 ( (This)->lpVtbl -> AddRef(This) )
3466
3467#define ID3D12VideoEncodeCommandList_Release(This) \
3468 ( (This)->lpVtbl -> Release(This) )
3469
3470
3471#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3472 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3473
3474#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3475 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3476
3477#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3478 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3479
3480#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3481 ( (This)->lpVtbl -> SetName(This,Name) )
3482
3483
3484#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3485 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3486
3487
3488#define ID3D12VideoEncodeCommandList_GetType(This) \
3489 ( (This)->lpVtbl -> GetType(This) )
3490
3491
3492#define ID3D12VideoEncodeCommandList_Close(This) \
3493 ( (This)->lpVtbl -> Close(This) )
3494
3495#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3496 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3497
3498#define ID3D12VideoEncodeCommandList_ClearState(This) \
3499 ( (This)->lpVtbl -> ClearState(This) )
3500
3501#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3502 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3503
3504#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3505 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3506
3507#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3508 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3509
3510#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3511 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3512
3513#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3514 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3515
3516#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3517 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3518
3519#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3520 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3521
3522#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3523 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3524
3525#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3526 ( (This)->lpVtbl -> EndEvent(This) )
3527
3528#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3529 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3530
3531#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3532 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3533
3534#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3535 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3536
3537#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3538 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3539
3540#endif /* COBJMACROS */
3541
3542
3543#endif /* C style interface */
3544
3545
3546
3547
3548#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3549
3550
3551/* interface __MIDL_itf_d3d12video_0000_0012 */
3552/* [local] */
3553
3554typedef
3555enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3556 {
3557 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3558 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3559 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3560
3561DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );
3562typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3563 {
3564 UINT NodeIndex;
3565 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3566 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3567 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3568
3569typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3570 {
3571 UINT NodeIndex;
3572 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3573 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3574
3575typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3576 {
3577 UINT NodeIndex;
3578 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3579 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3580
3581typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3582 {
3583 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3584 BOOL Protected;
3585 UINT64 MemoryPoolL0Size;
3586 UINT64 MemoryPoolL1Size;
3587 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3588
3589typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3590 {
3591 UINT NodeMask;
3592 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3593 UINT NumInputStreamDescs;
3594 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3595 BOOL Protected;
3596 UINT64 MemoryPoolL0Size;
3597 UINT64 MemoryPoolL1Size;
3598 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3599
3600typedef
3601enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3602 {
3603 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3604 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3605 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3606 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3607 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3608 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3609 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3610 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3611
3612typedef
3613enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3614 {
3615 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3616 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3617 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3618 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3619 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3620 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3621 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3622 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3623 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3624 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3625 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3626 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3627
3628typedef
3629enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3630 {
3631 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3632 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3633 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3634 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3635
3636DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );
3637typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3638 {
3639 UINT NodeIndex;
3640 UINT CommandCount;
3641 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3642
3643typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3644 {
3645 GUID CommandId;
3646 LPCWSTR Name;
3647 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3648 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3649
3650typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3651 {
3652 UINT NodeIndex;
3653 UINT CommandCount;
3654 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3655 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3656
3657typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3658 {
3659 GUID CommandId;
3660 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3661 UINT ParameterCount;
3662 UINT ParameterPacking;
3663 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3664
3665typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3666 {
3667 LPCWSTR Name;
3668 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3669 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3670 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3671
3672typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3673 {
3674 GUID CommandId;
3675 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3676 UINT ParameterCount;
3677 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3678 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3679
3680typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3681 {
3682 UINT NodeIndex;
3683 GUID CommandId;
3684 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3685 SIZE_T InputDataSizeInBytes;
3686 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3687 SIZE_T OutputDataSizeInBytes;
3688 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3689
3690typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3691 {
3692 UINT NodeIndex;
3693 GUID CommandId;
3694 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3695 SIZE_T CreationParametersSizeInBytes;
3696 UINT64 MemoryPoolL0Size;
3697 UINT64 MemoryPoolL1Size;
3698 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3699
3700typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3701 {
3702 UINT NodeMask;
3703 GUID CommandId;
3704 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3705
3706
3707
3708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3710
3711#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3712#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3713
3714/* interface ID3D12VideoDecoder1 */
3715/* [unique][local][object][uuid] */
3716
3717
3718EXTERN_C const IID IID_ID3D12VideoDecoder1;
3719
3720#if defined(__cplusplus) && !defined(CINTERFACE)
3721
3722 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3723 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3724 {
3725 public:
3726 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3727 REFIID riid,
3728 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3729
3730 };
3731
3732
3733#else /* C style interface */
3734
3735 typedef struct ID3D12VideoDecoder1Vtbl
3736 {
3737 BEGIN_INTERFACE
3738
3739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3741 ID3D12VideoDecoder1 * This,
3742 REFIID riid,
3743 _COM_Outptr_ void **ppvObject);
3744
3745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3746 ULONG ( STDMETHODCALLTYPE *AddRef )(
3747 ID3D12VideoDecoder1 * This);
3748
3749 DECLSPEC_XFGVIRT(IUnknown, Release)
3750 ULONG ( STDMETHODCALLTYPE *Release )(
3751 ID3D12VideoDecoder1 * This);
3752
3753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3755 ID3D12VideoDecoder1 * This,
3756 _In_ REFGUID guid,
3757 _Inout_ UINT *pDataSize,
3758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3759
3760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3762 ID3D12VideoDecoder1 * This,
3763 _In_ REFGUID guid,
3764 _In_ UINT DataSize,
3765 _In_reads_bytes_opt_( DataSize ) const void *pData);
3766
3767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3769 ID3D12VideoDecoder1 * This,
3770 _In_ REFGUID guid,
3771 _In_opt_ const IUnknown *pData);
3772
3773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3774 HRESULT ( STDMETHODCALLTYPE *SetName )(
3775 ID3D12VideoDecoder1 * This,
3776 _In_z_ LPCWSTR Name);
3777
3778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3780 ID3D12VideoDecoder1 * This,
3781 REFIID riid,
3782 _COM_Outptr_opt_ void **ppvDevice);
3783
3784 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3785 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3786 ID3D12VideoDecoder1 * This,
3787 D3D12_VIDEO_DECODER_DESC * RetVal);
3788
3789 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3790 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3791 ID3D12VideoDecoder1 * This,
3792 REFIID riid,
3793 _COM_Outptr_opt_ void **ppProtectedSession);
3794
3795 END_INTERFACE
3796 } ID3D12VideoDecoder1Vtbl;
3797
3798 interface ID3D12VideoDecoder1
3799 {
3800 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3801 };
3802
3803
3804
3805#ifdef COBJMACROS
3806
3807
3808#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3810
3811#define ID3D12VideoDecoder1_AddRef(This) \
3812 ( (This)->lpVtbl -> AddRef(This) )
3813
3814#define ID3D12VideoDecoder1_Release(This) \
3815 ( (This)->lpVtbl -> Release(This) )
3816
3817
3818#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
3819 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3820
3821#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
3822 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3823
3824#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
3825 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3826
3827#define ID3D12VideoDecoder1_SetName(This,Name) \
3828 ( (This)->lpVtbl -> SetName(This,Name) )
3829
3830
3831#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
3832 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3833
3834
3835
3836#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
3837 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3838
3839
3840#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3841 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3842
3843#endif /* COBJMACROS */
3844
3845
3846#endif /* C style interface */
3847
3848
3849
3850
3851#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
3852
3853
3854#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3855#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3856
3857/* interface ID3D12VideoDecoderHeap1 */
3858/* [unique][local][object][uuid] */
3859
3860
3861EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
3862
3863#if defined(__cplusplus) && !defined(CINTERFACE)
3864
3865 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
3866 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
3867 {
3868 public:
3869 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3870 REFIID riid,
3871 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3872
3873 };
3874
3875
3876#else /* C style interface */
3877
3878 typedef struct ID3D12VideoDecoderHeap1Vtbl
3879 {
3880 BEGIN_INTERFACE
3881
3882 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3883 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3884 ID3D12VideoDecoderHeap1 * This,
3885 REFIID riid,
3886 _COM_Outptr_ void **ppvObject);
3887
3888 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3889 ULONG ( STDMETHODCALLTYPE *AddRef )(
3890 ID3D12VideoDecoderHeap1 * This);
3891
3892 DECLSPEC_XFGVIRT(IUnknown, Release)
3893 ULONG ( STDMETHODCALLTYPE *Release )(
3894 ID3D12VideoDecoderHeap1 * This);
3895
3896 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3897 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3898 ID3D12VideoDecoderHeap1 * This,
3899 _In_ REFGUID guid,
3900 _Inout_ UINT *pDataSize,
3901 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3902
3903 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3904 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3905 ID3D12VideoDecoderHeap1 * This,
3906 _In_ REFGUID guid,
3907 _In_ UINT DataSize,
3908 _In_reads_bytes_opt_( DataSize ) const void *pData);
3909
3910 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3911 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3912 ID3D12VideoDecoderHeap1 * This,
3913 _In_ REFGUID guid,
3914 _In_opt_ const IUnknown *pData);
3915
3916 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3917 HRESULT ( STDMETHODCALLTYPE *SetName )(
3918 ID3D12VideoDecoderHeap1 * This,
3919 _In_z_ LPCWSTR Name);
3920
3921 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3922 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3923 ID3D12VideoDecoderHeap1 * This,
3924 REFIID riid,
3925 _COM_Outptr_opt_ void **ppvDevice);
3926
3927 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
3928 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3929 ID3D12VideoDecoderHeap1 * This,
3930 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
3931
3932 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
3933 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3934 ID3D12VideoDecoderHeap1 * This,
3935 REFIID riid,
3936 _COM_Outptr_opt_ void **ppProtectedSession);
3937
3938 END_INTERFACE
3939 } ID3D12VideoDecoderHeap1Vtbl;
3940
3941 interface ID3D12VideoDecoderHeap1
3942 {
3943 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
3944 };
3945
3946
3947
3948#ifdef COBJMACROS
3949
3950
3951#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
3952 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3953
3954#define ID3D12VideoDecoderHeap1_AddRef(This) \
3955 ( (This)->lpVtbl -> AddRef(This) )
3956
3957#define ID3D12VideoDecoderHeap1_Release(This) \
3958 ( (This)->lpVtbl -> Release(This) )
3959
3960
3961#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
3962 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3963
3964#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
3965 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3966
3967#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
3968 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3969
3970#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
3971 ( (This)->lpVtbl -> SetName(This,Name) )
3972
3973
3974#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
3975 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3976
3977
3978
3979#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
3980 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3981
3982
3983#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3984 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3985
3986#endif /* COBJMACROS */
3987
3988
3989#endif /* C style interface */
3990
3991
3992
3993
3994#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
3995
3996
3997#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3998#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3999
4000/* interface ID3D12VideoProcessor1 */
4001/* [unique][local][object][uuid] */
4002
4003
4004EXTERN_C const IID IID_ID3D12VideoProcessor1;
4005
4006#if defined(__cplusplus) && !defined(CINTERFACE)
4007
4008 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4009 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4010 {
4011 public:
4012 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4013 REFIID riid,
4014 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4015
4016 };
4017
4018
4019#else /* C style interface */
4020
4021 typedef struct ID3D12VideoProcessor1Vtbl
4022 {
4023 BEGIN_INTERFACE
4024
4025 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4026 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4027 ID3D12VideoProcessor1 * This,
4028 REFIID riid,
4029 _COM_Outptr_ void **ppvObject);
4030
4031 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4032 ULONG ( STDMETHODCALLTYPE *AddRef )(
4033 ID3D12VideoProcessor1 * This);
4034
4035 DECLSPEC_XFGVIRT(IUnknown, Release)
4036 ULONG ( STDMETHODCALLTYPE *Release )(
4037 ID3D12VideoProcessor1 * This);
4038
4039 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4040 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4041 ID3D12VideoProcessor1 * This,
4042 _In_ REFGUID guid,
4043 _Inout_ UINT *pDataSize,
4044 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4045
4046 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4047 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4048 ID3D12VideoProcessor1 * This,
4049 _In_ REFGUID guid,
4050 _In_ UINT DataSize,
4051 _In_reads_bytes_opt_( DataSize ) const void *pData);
4052
4053 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4054 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4055 ID3D12VideoProcessor1 * This,
4056 _In_ REFGUID guid,
4057 _In_opt_ const IUnknown *pData);
4058
4059 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4060 HRESULT ( STDMETHODCALLTYPE *SetName )(
4061 ID3D12VideoProcessor1 * This,
4062 _In_z_ LPCWSTR Name);
4063
4064 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4065 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4066 ID3D12VideoProcessor1 * This,
4067 REFIID riid,
4068 _COM_Outptr_opt_ void **ppvDevice);
4069
4070 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4071 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4072 ID3D12VideoProcessor1 * This);
4073
4074 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4075 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4076 ID3D12VideoProcessor1 * This);
4077
4078 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4079 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4080 ID3D12VideoProcessor1 * This,
4081 UINT NumInputStreamDescs,
4082 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4083
4084 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4085 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4086 ID3D12VideoProcessor1 * This,
4087 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4088
4089 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4090 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4091 ID3D12VideoProcessor1 * This,
4092 REFIID riid,
4093 _COM_Outptr_opt_ void **ppProtectedSession);
4094
4095 END_INTERFACE
4096 } ID3D12VideoProcessor1Vtbl;
4097
4098 interface ID3D12VideoProcessor1
4099 {
4100 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4101 };
4102
4103
4104
4105#ifdef COBJMACROS
4106
4107
4108#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4110
4111#define ID3D12VideoProcessor1_AddRef(This) \
4112 ( (This)->lpVtbl -> AddRef(This) )
4113
4114#define ID3D12VideoProcessor1_Release(This) \
4115 ( (This)->lpVtbl -> Release(This) )
4116
4117
4118#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4120
4121#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4123
4124#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4126
4127#define ID3D12VideoProcessor1_SetName(This,Name) \
4128 ( (This)->lpVtbl -> SetName(This,Name) )
4129
4130
4131#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4133
4134
4135
4136#define ID3D12VideoProcessor1_GetNodeMask(This) \
4137 ( (This)->lpVtbl -> GetNodeMask(This) )
4138
4139#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4140 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4141
4142#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4143 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4144
4145#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4146 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4147
4148
4149#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4150 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4151
4152#endif /* COBJMACROS */
4153
4154
4155#endif /* C style interface */
4156
4157
4158
4159
4160#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4161
4162
4163#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4164#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4165
4166/* interface ID3D12VideoExtensionCommand */
4167/* [unique][local][object][uuid] */
4168
4169
4170EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4171
4172#if defined(__cplusplus) && !defined(CINTERFACE)
4173
4174 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4175 ID3D12VideoExtensionCommand : public ID3D12Pageable
4176 {
4177 public:
4178 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4179
4180 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4181 REFIID riid,
4182 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4183
4184 };
4185
4186
4187#else /* C style interface */
4188
4189 typedef struct ID3D12VideoExtensionCommandVtbl
4190 {
4191 BEGIN_INTERFACE
4192
4193 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4194 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4195 ID3D12VideoExtensionCommand * This,
4196 REFIID riid,
4197 _COM_Outptr_ void **ppvObject);
4198
4199 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4200 ULONG ( STDMETHODCALLTYPE *AddRef )(
4201 ID3D12VideoExtensionCommand * This);
4202
4203 DECLSPEC_XFGVIRT(IUnknown, Release)
4204 ULONG ( STDMETHODCALLTYPE *Release )(
4205 ID3D12VideoExtensionCommand * This);
4206
4207 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4208 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4209 ID3D12VideoExtensionCommand * This,
4210 _In_ REFGUID guid,
4211 _Inout_ UINT *pDataSize,
4212 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4213
4214 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4215 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4216 ID3D12VideoExtensionCommand * This,
4217 _In_ REFGUID guid,
4218 _In_ UINT DataSize,
4219 _In_reads_bytes_opt_( DataSize ) const void *pData);
4220
4221 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4222 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4223 ID3D12VideoExtensionCommand * This,
4224 _In_ REFGUID guid,
4225 _In_opt_ const IUnknown *pData);
4226
4227 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4228 HRESULT ( STDMETHODCALLTYPE *SetName )(
4229 ID3D12VideoExtensionCommand * This,
4230 _In_z_ LPCWSTR Name);
4231
4232 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4233 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4234 ID3D12VideoExtensionCommand * This,
4235 REFIID riid,
4236 _COM_Outptr_opt_ void **ppvDevice);
4237
4238 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4239 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4240 ID3D12VideoExtensionCommand * This,
4241 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4242
4243 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4244 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4245 ID3D12VideoExtensionCommand * This,
4246 REFIID riid,
4247 _COM_Outptr_opt_ void **ppProtectedSession);
4248
4249 END_INTERFACE
4250 } ID3D12VideoExtensionCommandVtbl;
4251
4252 interface ID3D12VideoExtensionCommand
4253 {
4254 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4255 };
4256
4257
4258
4259#ifdef COBJMACROS
4260
4261
4262#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4263 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4264
4265#define ID3D12VideoExtensionCommand_AddRef(This) \
4266 ( (This)->lpVtbl -> AddRef(This) )
4267
4268#define ID3D12VideoExtensionCommand_Release(This) \
4269 ( (This)->lpVtbl -> Release(This) )
4270
4271
4272#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4273 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4274
4275#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4276 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4277
4278#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4279 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4280
4281#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4282 ( (This)->lpVtbl -> SetName(This,Name) )
4283
4284
4285#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4286 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4287
4288
4289
4290#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4291 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4292
4293#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4294 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4295
4296#endif /* COBJMACROS */
4297
4298
4299#endif /* C style interface */
4300
4301
4302
4303
4304#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4305
4306
4307#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4308#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4309
4310/* interface ID3D12VideoDevice2 */
4311/* [unique][local][object][uuid] */
4312
4313
4314EXTERN_C const IID IID_ID3D12VideoDevice2;
4315
4316#if defined(__cplusplus) && !defined(CINTERFACE)
4317
4318 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4319 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4320 {
4321 public:
4322 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4323 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4324 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4325 _In_ REFIID riid,
4326 _COM_Outptr_ void **ppVideoDecoder) = 0;
4327
4328 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4329 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4330 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4331 _In_ REFIID riid,
4332 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4333
4334 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4335 UINT NodeMask,
4336 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4337 UINT NumInputStreamDescs,
4338 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4339 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4340 _In_ REFIID riid,
4341 _COM_Outptr_ void **ppVideoProcessor) = 0;
4342
4343 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4344 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4345 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4346 SIZE_T CreationParametersDataSizeInBytes,
4347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4348 _In_ REFIID riid,
4349 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4350
4351 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4353 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4354 SIZE_T ExecutionParametersSizeInBytes,
4355 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4356 SIZE_T OutputDataSizeInBytes) = 0;
4357
4358 };
4359
4360
4361#else /* C style interface */
4362
4363 typedef struct ID3D12VideoDevice2Vtbl
4364 {
4365 BEGIN_INTERFACE
4366
4367 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4368 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4369 ID3D12VideoDevice2 * This,
4370 REFIID riid,
4371 _COM_Outptr_ void **ppvObject);
4372
4373 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4374 ULONG ( STDMETHODCALLTYPE *AddRef )(
4375 ID3D12VideoDevice2 * This);
4376
4377 DECLSPEC_XFGVIRT(IUnknown, Release)
4378 ULONG ( STDMETHODCALLTYPE *Release )(
4379 ID3D12VideoDevice2 * This);
4380
4381 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4382 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4383 ID3D12VideoDevice2 * This,
4384 D3D12_FEATURE_VIDEO FeatureVideo,
4385 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4386 UINT FeatureSupportDataSize);
4387
4388 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4389 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4390 ID3D12VideoDevice2 * This,
4391 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4392 _In_ REFIID riid,
4393 _COM_Outptr_ void **ppVideoDecoder);
4394
4395 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4396 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4397 ID3D12VideoDevice2 * This,
4398 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4399 _In_ REFIID riid,
4400 _COM_Outptr_ void **ppVideoDecoderHeap);
4401
4402 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4403 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4404 ID3D12VideoDevice2 * This,
4405 UINT NodeMask,
4406 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4407 UINT NumInputStreamDescs,
4408 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4409 _In_ REFIID riid,
4410 _COM_Outptr_ void **ppVideoProcessor);
4411
4412 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4413 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4414 ID3D12VideoDevice2 * This,
4415 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4416 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4417 _In_ REFIID riid,
4418 _COM_Outptr_ void **ppVideoMotionEstimator);
4419
4420 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4421 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4422 ID3D12VideoDevice2 * This,
4423 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4424 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4425 _In_ REFIID riid,
4426 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4427
4428 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4429 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4430 ID3D12VideoDevice2 * This,
4431 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4432 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4433 _In_ REFIID riid,
4434 _COM_Outptr_ void **ppVideoDecoder);
4435
4436 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4437 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4438 ID3D12VideoDevice2 * This,
4439 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4440 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4441 _In_ REFIID riid,
4442 _COM_Outptr_ void **ppVideoDecoderHeap);
4443
4444 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4445 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4446 ID3D12VideoDevice2 * This,
4447 UINT NodeMask,
4448 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4449 UINT NumInputStreamDescs,
4450 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4451 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4452 _In_ REFIID riid,
4453 _COM_Outptr_ void **ppVideoProcessor);
4454
4455 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4456 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4457 ID3D12VideoDevice2 * This,
4458 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4459 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4460 SIZE_T CreationParametersDataSizeInBytes,
4461 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4462 _In_ REFIID riid,
4463 _COM_Outptr_ void **ppVideoExtensionCommand);
4464
4465 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4466 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4467 ID3D12VideoDevice2 * This,
4468 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4469 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4470 SIZE_T ExecutionParametersSizeInBytes,
4471 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4472 SIZE_T OutputDataSizeInBytes);
4473
4474 END_INTERFACE
4475 } ID3D12VideoDevice2Vtbl;
4476
4477 interface ID3D12VideoDevice2
4478 {
4479 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4480 };
4481
4482
4483
4484#ifdef COBJMACROS
4485
4486
4487#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4488 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4489
4490#define ID3D12VideoDevice2_AddRef(This) \
4491 ( (This)->lpVtbl -> AddRef(This) )
4492
4493#define ID3D12VideoDevice2_Release(This) \
4494 ( (This)->lpVtbl -> Release(This) )
4495
4496
4497#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4498 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4499
4500#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4501 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4502
4503#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4504 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4505
4506#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4507 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4508
4509
4510#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4511 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4512
4513#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4514 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4515
4516
4517#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4518 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4519
4520#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4521 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4522
4523#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4524 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4525
4526#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4527 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4528
4529#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4530 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4531
4532#endif /* COBJMACROS */
4533
4534
4535#endif /* C style interface */
4536
4537
4538
4539
4540#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4541
4542
4543#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4544#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4545
4546/* interface ID3D12VideoDecodeCommandList2 */
4547/* [unique][local][object][uuid] */
4548
4549
4550EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4551
4552#if defined(__cplusplus) && !defined(CINTERFACE)
4553
4554 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4555 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4556 {
4557 public:
4558 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4559 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4560
4561 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4562 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4563 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4564 SIZE_T InitializationParametersSizeInBytes) = 0;
4565
4566 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4567 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4568 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4569 SIZE_T ExecutionParametersSizeInBytes) = 0;
4570
4571 };
4572
4573
4574#else /* C style interface */
4575
4576 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4577 {
4578 BEGIN_INTERFACE
4579
4580 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4581 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4582 ID3D12VideoDecodeCommandList2 * This,
4583 REFIID riid,
4584 _COM_Outptr_ void **ppvObject);
4585
4586 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4587 ULONG ( STDMETHODCALLTYPE *AddRef )(
4588 ID3D12VideoDecodeCommandList2 * This);
4589
4590 DECLSPEC_XFGVIRT(IUnknown, Release)
4591 ULONG ( STDMETHODCALLTYPE *Release )(
4592 ID3D12VideoDecodeCommandList2 * This);
4593
4594 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4595 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4596 ID3D12VideoDecodeCommandList2 * This,
4597 _In_ REFGUID guid,
4598 _Inout_ UINT *pDataSize,
4599 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4600
4601 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4602 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4603 ID3D12VideoDecodeCommandList2 * This,
4604 _In_ REFGUID guid,
4605 _In_ UINT DataSize,
4606 _In_reads_bytes_opt_( DataSize ) const void *pData);
4607
4608 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4609 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4610 ID3D12VideoDecodeCommandList2 * This,
4611 _In_ REFGUID guid,
4612 _In_opt_ const IUnknown *pData);
4613
4614 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4615 HRESULT ( STDMETHODCALLTYPE *SetName )(
4616 ID3D12VideoDecodeCommandList2 * This,
4617 _In_z_ LPCWSTR Name);
4618
4619 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4620 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4621 ID3D12VideoDecodeCommandList2 * This,
4622 REFIID riid,
4623 _COM_Outptr_opt_ void **ppvDevice);
4624
4625 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4626 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4627 ID3D12VideoDecodeCommandList2 * This);
4628
4629 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4630 HRESULT ( STDMETHODCALLTYPE *Close )(
4631 ID3D12VideoDecodeCommandList2 * This);
4632
4633 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4634 HRESULT ( STDMETHODCALLTYPE *Reset )(
4635 ID3D12VideoDecodeCommandList2 * This,
4636 _In_ ID3D12CommandAllocator *pAllocator);
4637
4638 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4639 void ( STDMETHODCALLTYPE *ClearState )(
4640 ID3D12VideoDecodeCommandList2 * This);
4641
4642 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4643 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4644 ID3D12VideoDecodeCommandList2 * This,
4645 _In_ UINT NumBarriers,
4646 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4647
4648 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4649 void ( STDMETHODCALLTYPE *DiscardResource )(
4650 ID3D12VideoDecodeCommandList2 * This,
4651 _In_ ID3D12Resource *pResource,
4652 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4653
4654 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4655 void ( STDMETHODCALLTYPE *BeginQuery )(
4656 ID3D12VideoDecodeCommandList2 * This,
4657 _In_ ID3D12QueryHeap *pQueryHeap,
4658 _In_ D3D12_QUERY_TYPE Type,
4659 _In_ UINT Index);
4660
4661 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4662 void ( STDMETHODCALLTYPE *EndQuery )(
4663 ID3D12VideoDecodeCommandList2 * This,
4664 _In_ ID3D12QueryHeap *pQueryHeap,
4665 _In_ D3D12_QUERY_TYPE Type,
4666 _In_ UINT Index);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4669 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4670 ID3D12VideoDecodeCommandList2 * This,
4671 _In_ ID3D12QueryHeap *pQueryHeap,
4672 _In_ D3D12_QUERY_TYPE Type,
4673 _In_ UINT StartIndex,
4674 _In_ UINT NumQueries,
4675 _In_ ID3D12Resource *pDestinationBuffer,
4676 _In_ UINT64 AlignedDestinationBufferOffset);
4677
4678 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4679 void ( STDMETHODCALLTYPE *SetPredication )(
4680 ID3D12VideoDecodeCommandList2 * This,
4681 _In_opt_ ID3D12Resource *pBuffer,
4682 _In_ UINT64 AlignedBufferOffset,
4683 _In_ D3D12_PREDICATION_OP Operation);
4684
4685 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4686 void ( STDMETHODCALLTYPE *SetMarker )(
4687 ID3D12VideoDecodeCommandList2 * This,
4688 UINT Metadata,
4689 _In_reads_bytes_opt_(Size) const void *pData,
4690 UINT Size);
4691
4692 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4693 void ( STDMETHODCALLTYPE *BeginEvent )(
4694 ID3D12VideoDecodeCommandList2 * This,
4695 UINT Metadata,
4696 _In_reads_bytes_opt_(Size) const void *pData,
4697 UINT Size);
4698
4699 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4700 void ( STDMETHODCALLTYPE *EndEvent )(
4701 ID3D12VideoDecodeCommandList2 * This);
4702
4703 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4704 void ( STDMETHODCALLTYPE *DecodeFrame )(
4705 ID3D12VideoDecodeCommandList2 * This,
4706 _In_ ID3D12VideoDecoder *pDecoder,
4707 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4708 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4709
4710 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4711 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4712 ID3D12VideoDecodeCommandList2 * This,
4713 UINT Count,
4714 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4715 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4716
4717 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4718 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4719 ID3D12VideoDecodeCommandList2 * This,
4720 _In_ ID3D12VideoDecoder *pDecoder,
4721 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4722 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4723
4724 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4725 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4726 ID3D12VideoDecodeCommandList2 * This,
4727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4728
4729 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4730 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4731 ID3D12VideoDecodeCommandList2 * This,
4732 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4733 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4734 SIZE_T InitializationParametersSizeInBytes);
4735
4736 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4737 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4738 ID3D12VideoDecodeCommandList2 * This,
4739 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4740 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4741 SIZE_T ExecutionParametersSizeInBytes);
4742
4743 END_INTERFACE
4744 } ID3D12VideoDecodeCommandList2Vtbl;
4745
4746 interface ID3D12VideoDecodeCommandList2
4747 {
4748 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4749 };
4750
4751
4752
4753#ifdef COBJMACROS
4754
4755
4756#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4757 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4758
4759#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4760 ( (This)->lpVtbl -> AddRef(This) )
4761
4762#define ID3D12VideoDecodeCommandList2_Release(This) \
4763 ( (This)->lpVtbl -> Release(This) )
4764
4765
4766#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4767 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4768
4769#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
4770 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4771
4772#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
4773 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4774
4775#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
4776 ( (This)->lpVtbl -> SetName(This,Name) )
4777
4778
4779#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
4780 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4781
4782
4783#define ID3D12VideoDecodeCommandList2_GetType(This) \
4784 ( (This)->lpVtbl -> GetType(This) )
4785
4786
4787#define ID3D12VideoDecodeCommandList2_Close(This) \
4788 ( (This)->lpVtbl -> Close(This) )
4789
4790#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
4791 ( (This)->lpVtbl -> Reset(This,pAllocator) )
4792
4793#define ID3D12VideoDecodeCommandList2_ClearState(This) \
4794 ( (This)->lpVtbl -> ClearState(This) )
4795
4796#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
4797 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
4798
4799#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
4800 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
4801
4802#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
4803 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
4804
4805#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
4806 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
4807
4808#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
4809 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
4810
4811#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
4812 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
4813
4814#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
4815 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
4816
4817#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
4818 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
4819
4820#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
4821 ( (This)->lpVtbl -> EndEvent(This) )
4822
4823#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
4824 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
4825
4826#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
4827 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
4828
4829
4830#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
4831 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
4832
4833
4834#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
4835 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
4836
4837#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
4838 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
4839
4840#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
4841 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
4842
4843#endif /* COBJMACROS */
4844
4845
4846#endif /* C style interface */
4847
4848
4849
4850
4851#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
4852
4853
4854#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4855#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4856
4857/* interface ID3D12VideoProcessCommandList2 */
4858/* [unique][local][object][uuid] */
4859
4860
4861EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
4862
4863#if defined(__cplusplus) && !defined(CINTERFACE)
4864
4865 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
4866 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
4867 {
4868 public:
4869 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4870 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4871
4872 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4873 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4874 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4875 SIZE_T InitializationParametersSizeInBytes) = 0;
4876
4877 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4878 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4879 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4880 SIZE_T ExecutionParametersSizeInBytes) = 0;
4881
4882 };
4883
4884
4885#else /* C style interface */
4886
4887 typedef struct ID3D12VideoProcessCommandList2Vtbl
4888 {
4889 BEGIN_INTERFACE
4890
4891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4893 ID3D12VideoProcessCommandList2 * This,
4894 REFIID riid,
4895 _COM_Outptr_ void **ppvObject);
4896
4897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4898 ULONG ( STDMETHODCALLTYPE *AddRef )(
4899 ID3D12VideoProcessCommandList2 * This);
4900
4901 DECLSPEC_XFGVIRT(IUnknown, Release)
4902 ULONG ( STDMETHODCALLTYPE *Release )(
4903 ID3D12VideoProcessCommandList2 * This);
4904
4905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4907 ID3D12VideoProcessCommandList2 * This,
4908 _In_ REFGUID guid,
4909 _Inout_ UINT *pDataSize,
4910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4911
4912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4914 ID3D12VideoProcessCommandList2 * This,
4915 _In_ REFGUID guid,
4916 _In_ UINT DataSize,
4917 _In_reads_bytes_opt_( DataSize ) const void *pData);
4918
4919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4921 ID3D12VideoProcessCommandList2 * This,
4922 _In_ REFGUID guid,
4923 _In_opt_ const IUnknown *pData);
4924
4925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4926 HRESULT ( STDMETHODCALLTYPE *SetName )(
4927 ID3D12VideoProcessCommandList2 * This,
4928 _In_z_ LPCWSTR Name);
4929
4930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4932 ID3D12VideoProcessCommandList2 * This,
4933 REFIID riid,
4934 _COM_Outptr_opt_ void **ppvDevice);
4935
4936 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4937 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4938 ID3D12VideoProcessCommandList2 * This);
4939
4940 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
4941 HRESULT ( STDMETHODCALLTYPE *Close )(
4942 ID3D12VideoProcessCommandList2 * This);
4943
4944 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
4945 HRESULT ( STDMETHODCALLTYPE *Reset )(
4946 ID3D12VideoProcessCommandList2 * This,
4947 _In_ ID3D12CommandAllocator *pAllocator);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
4950 void ( STDMETHODCALLTYPE *ClearState )(
4951 ID3D12VideoProcessCommandList2 * This);
4952
4953 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
4954 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4955 ID3D12VideoProcessCommandList2 * This,
4956 _In_ UINT NumBarriers,
4957 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4958
4959 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
4960 void ( STDMETHODCALLTYPE *DiscardResource )(
4961 ID3D12VideoProcessCommandList2 * This,
4962 _In_ ID3D12Resource *pResource,
4963 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4964
4965 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
4966 void ( STDMETHODCALLTYPE *BeginQuery )(
4967 ID3D12VideoProcessCommandList2 * This,
4968 _In_ ID3D12QueryHeap *pQueryHeap,
4969 _In_ D3D12_QUERY_TYPE Type,
4970 _In_ UINT Index);
4971
4972 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
4973 void ( STDMETHODCALLTYPE *EndQuery )(
4974 ID3D12VideoProcessCommandList2 * This,
4975 _In_ ID3D12QueryHeap *pQueryHeap,
4976 _In_ D3D12_QUERY_TYPE Type,
4977 _In_ UINT Index);
4978
4979 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
4980 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4981 ID3D12VideoProcessCommandList2 * This,
4982 _In_ ID3D12QueryHeap *pQueryHeap,
4983 _In_ D3D12_QUERY_TYPE Type,
4984 _In_ UINT StartIndex,
4985 _In_ UINT NumQueries,
4986 _In_ ID3D12Resource *pDestinationBuffer,
4987 _In_ UINT64 AlignedDestinationBufferOffset);
4988
4989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
4990 void ( STDMETHODCALLTYPE *SetPredication )(
4991 ID3D12VideoProcessCommandList2 * This,
4992 _In_opt_ ID3D12Resource *pBuffer,
4993 _In_ UINT64 AlignedBufferOffset,
4994 _In_ D3D12_PREDICATION_OP Operation);
4995
4996 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
4997 void ( STDMETHODCALLTYPE *SetMarker )(
4998 ID3D12VideoProcessCommandList2 * This,
4999 UINT Metadata,
5000 _In_reads_bytes_opt_(Size) const void *pData,
5001 UINT Size);
5002
5003 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5004 void ( STDMETHODCALLTYPE *BeginEvent )(
5005 ID3D12VideoProcessCommandList2 * This,
5006 UINT Metadata,
5007 _In_reads_bytes_opt_(Size) const void *pData,
5008 UINT Size);
5009
5010 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5011 void ( STDMETHODCALLTYPE *EndEvent )(
5012 ID3D12VideoProcessCommandList2 * This);
5013
5014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5015 void ( STDMETHODCALLTYPE *ProcessFrames )(
5016 ID3D12VideoProcessCommandList2 * This,
5017 _In_ ID3D12VideoProcessor *pVideoProcessor,
5018 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5019 UINT NumInputStreams,
5020 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5021
5022 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5023 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5024 ID3D12VideoProcessCommandList2 * This,
5025 UINT Count,
5026 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5027 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5028
5029 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5030 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5031 ID3D12VideoProcessCommandList2 * This,
5032 _In_ ID3D12VideoProcessor *pVideoProcessor,
5033 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5034 UINT NumInputStreams,
5035 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5036
5037 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5038 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5039 ID3D12VideoProcessCommandList2 * This,
5040 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5041
5042 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5043 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5044 ID3D12VideoProcessCommandList2 * This,
5045 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5046 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5047 SIZE_T InitializationParametersSizeInBytes);
5048
5049 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5050 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5051 ID3D12VideoProcessCommandList2 * This,
5052 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5053 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5054 SIZE_T ExecutionParametersSizeInBytes);
5055
5056 END_INTERFACE
5057 } ID3D12VideoProcessCommandList2Vtbl;
5058
5059 interface ID3D12VideoProcessCommandList2
5060 {
5061 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5062 };
5063
5064
5065
5066#ifdef COBJMACROS
5067
5068
5069#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5070 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5071
5072#define ID3D12VideoProcessCommandList2_AddRef(This) \
5073 ( (This)->lpVtbl -> AddRef(This) )
5074
5075#define ID3D12VideoProcessCommandList2_Release(This) \
5076 ( (This)->lpVtbl -> Release(This) )
5077
5078
5079#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5080 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5081
5082#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5083 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5084
5085#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5086 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5087
5088#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5089 ( (This)->lpVtbl -> SetName(This,Name) )
5090
5091
5092#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5093 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5094
5095
5096#define ID3D12VideoProcessCommandList2_GetType(This) \
5097 ( (This)->lpVtbl -> GetType(This) )
5098
5099
5100#define ID3D12VideoProcessCommandList2_Close(This) \
5101 ( (This)->lpVtbl -> Close(This) )
5102
5103#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5104 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5105
5106#define ID3D12VideoProcessCommandList2_ClearState(This) \
5107 ( (This)->lpVtbl -> ClearState(This) )
5108
5109#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5110 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5111
5112#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5113 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5114
5115#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5116 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5117
5118#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5119 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5120
5121#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5122 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5123
5124#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5125 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5126
5127#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5128 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5129
5130#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5131 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5132
5133#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5134 ( (This)->lpVtbl -> EndEvent(This) )
5135
5136#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5137 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5138
5139#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5140 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5141
5142
5143#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5144 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5145
5146
5147#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5148 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5149
5150#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5151 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5152
5153#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5154 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5155
5156#endif /* COBJMACROS */
5157
5158
5159#endif /* C style interface */
5160
5161
5162
5163
5164#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5165
5166
5167#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5168#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5169
5170/* interface ID3D12VideoEncodeCommandList1 */
5171/* [unique][local][object][uuid] */
5172
5173
5174EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
5175
5176#if defined(__cplusplus) && !defined(CINTERFACE)
5177
5178 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
5179 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
5180 {
5181 public:
5182 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5183 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5184 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5185 SIZE_T InitializationParametersSizeInBytes) = 0;
5186
5187 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5188 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5189 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5190 SIZE_T ExecutionParametersSizeInBytes) = 0;
5191
5192 };
5193
5194
5195#else /* C style interface */
5196
5197 typedef struct ID3D12VideoEncodeCommandList1Vtbl
5198 {
5199 BEGIN_INTERFACE
5200
5201 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5202 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5203 ID3D12VideoEncodeCommandList1 * This,
5204 REFIID riid,
5205 _COM_Outptr_ void **ppvObject);
5206
5207 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5208 ULONG ( STDMETHODCALLTYPE *AddRef )(
5209 ID3D12VideoEncodeCommandList1 * This);
5210
5211 DECLSPEC_XFGVIRT(IUnknown, Release)
5212 ULONG ( STDMETHODCALLTYPE *Release )(
5213 ID3D12VideoEncodeCommandList1 * This);
5214
5215 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5216 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5217 ID3D12VideoEncodeCommandList1 * This,
5218 _In_ REFGUID guid,
5219 _Inout_ UINT *pDataSize,
5220 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5221
5222 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5223 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5224 ID3D12VideoEncodeCommandList1 * This,
5225 _In_ REFGUID guid,
5226 _In_ UINT DataSize,
5227 _In_reads_bytes_opt_( DataSize ) const void *pData);
5228
5229 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5230 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5231 ID3D12VideoEncodeCommandList1 * This,
5232 _In_ REFGUID guid,
5233 _In_opt_ const IUnknown *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5236 HRESULT ( STDMETHODCALLTYPE *SetName )(
5237 ID3D12VideoEncodeCommandList1 * This,
5238 _In_z_ LPCWSTR Name);
5239
5240 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5241 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5242 ID3D12VideoEncodeCommandList1 * This,
5243 REFIID riid,
5244 _COM_Outptr_opt_ void **ppvDevice);
5245
5246 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5247 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5248 ID3D12VideoEncodeCommandList1 * This);
5249
5250 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
5251 HRESULT ( STDMETHODCALLTYPE *Close )(
5252 ID3D12VideoEncodeCommandList1 * This);
5253
5254 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
5255 HRESULT ( STDMETHODCALLTYPE *Reset )(
5256 ID3D12VideoEncodeCommandList1 * This,
5257 _In_ ID3D12CommandAllocator *pAllocator);
5258
5259 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
5260 void ( STDMETHODCALLTYPE *ClearState )(
5261 ID3D12VideoEncodeCommandList1 * This);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
5264 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5265 ID3D12VideoEncodeCommandList1 * This,
5266 _In_ UINT NumBarriers,
5267 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5268
5269 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
5270 void ( STDMETHODCALLTYPE *DiscardResource )(
5271 ID3D12VideoEncodeCommandList1 * This,
5272 _In_ ID3D12Resource *pResource,
5273 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5274
5275 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
5276 void ( STDMETHODCALLTYPE *BeginQuery )(
5277 ID3D12VideoEncodeCommandList1 * This,
5278 _In_ ID3D12QueryHeap *pQueryHeap,
5279 _In_ D3D12_QUERY_TYPE Type,
5280 _In_ UINT Index);
5281
5282 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
5283 void ( STDMETHODCALLTYPE *EndQuery )(
5284 ID3D12VideoEncodeCommandList1 * This,
5285 _In_ ID3D12QueryHeap *pQueryHeap,
5286 _In_ D3D12_QUERY_TYPE Type,
5287 _In_ UINT Index);
5288
5289 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
5290 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5291 ID3D12VideoEncodeCommandList1 * This,
5292 _In_ ID3D12QueryHeap *pQueryHeap,
5293 _In_ D3D12_QUERY_TYPE Type,
5294 _In_ UINT StartIndex,
5295 _In_ UINT NumQueries,
5296 _In_ ID3D12Resource *pDestinationBuffer,
5297 _In_ UINT64 AlignedDestinationBufferOffset);
5298
5299 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
5300 void ( STDMETHODCALLTYPE *SetPredication )(
5301 ID3D12VideoEncodeCommandList1 * This,
5302 _In_opt_ ID3D12Resource *pBuffer,
5303 _In_ UINT64 AlignedBufferOffset,
5304 _In_ D3D12_PREDICATION_OP Operation);
5305
5306 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
5307 void ( STDMETHODCALLTYPE *SetMarker )(
5308 ID3D12VideoEncodeCommandList1 * This,
5309 UINT Metadata,
5310 _In_reads_bytes_opt_(Size) const void *pData,
5311 UINT Size);
5312
5313 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
5314 void ( STDMETHODCALLTYPE *BeginEvent )(
5315 ID3D12VideoEncodeCommandList1 * This,
5316 UINT Metadata,
5317 _In_reads_bytes_opt_(Size) const void *pData,
5318 UINT Size);
5319
5320 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
5321 void ( STDMETHODCALLTYPE *EndEvent )(
5322 ID3D12VideoEncodeCommandList1 * This);
5323
5324 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
5325 void ( STDMETHODCALLTYPE *EstimateMotion )(
5326 ID3D12VideoEncodeCommandList1 * This,
5327 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
5328 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
5329 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
5330
5331 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
5332 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
5333 ID3D12VideoEncodeCommandList1 * This,
5334 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
5335 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
5336
5337 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
5338 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5339 ID3D12VideoEncodeCommandList1 * This,
5340 UINT Count,
5341 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5342 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5343
5344 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
5345 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5346 ID3D12VideoEncodeCommandList1 * This,
5347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5348
5349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
5350 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5351 ID3D12VideoEncodeCommandList1 * This,
5352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5353 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5354 SIZE_T InitializationParametersSizeInBytes);
5355
5356 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
5357 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5358 ID3D12VideoEncodeCommandList1 * This,
5359 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5360 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5361 SIZE_T ExecutionParametersSizeInBytes);
5362
5363 END_INTERFACE
5364 } ID3D12VideoEncodeCommandList1Vtbl;
5365
5366 interface ID3D12VideoEncodeCommandList1
5367 {
5368 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
5369 };
5370
5371
5372
5373#ifdef COBJMACROS
5374
5375
5376#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
5377 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5378
5379#define ID3D12VideoEncodeCommandList1_AddRef(This) \
5380 ( (This)->lpVtbl -> AddRef(This) )
5381
5382#define ID3D12VideoEncodeCommandList1_Release(This) \
5383 ( (This)->lpVtbl -> Release(This) )
5384
5385
5386#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
5387 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5388
5389#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
5390 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5391
5392#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
5393 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5394
5395#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
5396 ( (This)->lpVtbl -> SetName(This,Name) )
5397
5398
5399#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
5400 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5401
5402
5403#define ID3D12VideoEncodeCommandList1_GetType(This) \
5404 ( (This)->lpVtbl -> GetType(This) )
5405
5406
5407#define ID3D12VideoEncodeCommandList1_Close(This) \
5408 ( (This)->lpVtbl -> Close(This) )
5409
5410#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
5411 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5412
5413#define ID3D12VideoEncodeCommandList1_ClearState(This) \
5414 ( (This)->lpVtbl -> ClearState(This) )
5415
5416#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
5417 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5418
5419#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
5420 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5421
5422#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
5423 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5424
5425#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
5426 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5427
5428#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5429 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5430
5431#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5432 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5433
5434#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
5435 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5436
5437#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
5438 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5439
5440#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
5441 ( (This)->lpVtbl -> EndEvent(This) )
5442
5443#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
5444 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
5445
5446#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
5447 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
5448
5449#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
5450 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5451
5452#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
5453 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5454
5455
5456#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5457 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5458
5459#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5460 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5461
5462#endif /* COBJMACROS */
5463
5464
5465#endif /* C style interface */
5466
5467
5468
5469
5470#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
5471
5472
5473/* interface __MIDL_itf_d3d12video_0000_0020 */
5474/* [local] */
5475
5476DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
5477DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
5478DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5479DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
5480DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
5481DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
5482DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5483DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5484DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
5485DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
5486DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
5487DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
5488DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
5489DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
5490DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
5491DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
5492DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
5493DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
5494DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
5495DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
5496#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
5497#pragma endregion
5498DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
5499DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
5500DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
5501DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
5502DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
5503DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
5504DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
5505DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
5506DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
5507DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
5508DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
5509DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
5510DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
5511DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
5512DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
5513DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
5514DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
5515DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
5516DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
5517DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
5518
5519
5520extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_c_ifspec;
5521extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_s_ifspec;
5522
5523/* Additional Prototypes for ALL interfaces */
5524
5525/* end of Additional Prototypes */
5526
5527#ifdef __cplusplus
5528}
5529#endif
5530
5531#endif
5532
5533
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.idl b/contrib/DirectX-Headers/include/directx/d3d12video.idl
new file mode 100644
index 0000000..a4d8945
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.idl
@@ -0,0 +1,1448 @@
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
83} D3D12_FEATURE_VIDEO;
84
85typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
86{
87 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
88} D3D12_BITSTREAM_ENCRYPTION_TYPE;
89
90typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
91{
92 GUID DecodeProfile;
93 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
94 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
95} D3D12_VIDEO_DECODE_CONFIGURATION;
96
97typedef struct D3D12_VIDEO_DECODER_DESC
98{
99 UINT NodeMask;
100 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
101} D3D12_VIDEO_DECODER_DESC;
102
103typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
104{
105 UINT NodeMask;
106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
107 UINT DecodeWidth;
108 UINT DecodeHeight;
109 DXGI_FORMAT Format;
110 DXGI_RATIONAL FrameRate;
111 UINT BitRate;
112 UINT MaxDecodePictureBufferCount;
113} D3D12_VIDEO_DECODER_HEAP_DESC;
114
115typedef struct D3D12_VIDEO_SIZE_RANGE
116{
117 UINT MaxWidth;
118 UINT MaxHeight;
119 UINT MinWidth;
120 UINT MinHeight;
121} D3D12_VIDEO_SIZE_RANGE;
122
123typedef enum D3D12_VIDEO_PROCESS_FILTER
124{
125 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
126 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
127 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
128 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
129 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
130 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
131 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
132 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
133} D3D12_VIDEO_PROCESS_FILTER;
134
135typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
136{
137 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
138 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
139 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
140 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
141 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
142 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
143 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
144 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
145 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
146
147} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
148cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );")
149
150typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
151{
152 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
153 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
154 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
155
156} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
157cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );")
158
159typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
160{
161 BOOL Enable;
162 FLOAT Alpha;
163} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
164
165typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
166{
167 BOOL Enable;
168 FLOAT Lower;
169 FLOAT Upper;
170} D3D12_VIDEO_PROCESS_LUMA_KEY;
171
172typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
173{
174 DXGI_FORMAT Format;
175 DXGI_COLOR_SPACE_TYPE ColorSpace;
176 DXGI_RATIONAL SourceAspectRatio;
177 DXGI_RATIONAL DestinationAspectRatio;
178 DXGI_RATIONAL FrameRate;
179 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
180 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
181 BOOL EnableOrientation;
182 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
183 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
184 D3D12_VIDEO_FIELD_TYPE FieldType;
185 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
186 BOOL EnableAlphaBlending;
187 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
188 UINT NumPastFrames;
189 UINT NumFutureFrames;
190 BOOL EnableAutoProcessing;
191} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
192
193typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
194{
195 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
196 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
197 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
198 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
199} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
200
201typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
202{
203 DXGI_FORMAT Format;
204 DXGI_COLOR_SPACE_TYPE ColorSpace;
205 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
206 UINT AlphaFillModeSourceStreamIndex;
207 FLOAT BackgroundColor[4];
208 DXGI_RATIONAL FrameRate;
209 BOOL EnableStereo;
210} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
211
212[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
213interface ID3D12VideoDecoderHeap
214 : ID3D12Pageable
215{
216 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
217}
218
219[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
220interface ID3D12VideoDevice
221 : IUnknown
222{
223 HRESULT CheckFeatureSupport(
224 D3D12_FEATURE_VIDEO FeatureVideo,
225 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
226 UINT FeatureSupportDataSize
227 );
228
229 HRESULT CreateVideoDecoder(
230 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
231 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
232 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
233 );
234
235 HRESULT CreateVideoDecoderHeap(
236 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
237 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
238 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
239 );
240
241 HRESULT CreateVideoProcessor(
242 UINT NodeMask,
243 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
244 UINT NumInputStreamDescs,
245 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
246 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
247 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
248 );
249}
250
251[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
252interface ID3D12VideoDecoder
253 : ID3D12Pageable
254{
255 D3D12_VIDEO_DECODER_DESC GetDesc();
256}
257
258typedef enum D3D12_VIDEO_DECODE_TIER
259{
260 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
261 D3D12_VIDEO_DECODE_TIER_1 = 1,
262 D3D12_VIDEO_DECODE_TIER_2 = 2,
263 D3D12_VIDEO_DECODE_TIER_3 = 3,
264} D3D12_VIDEO_DECODE_TIER;
265
266typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
267{
268 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
269 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
270
271} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
272cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );")
273
274typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
275{
276 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
277 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
278 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
279 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
280 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
281
282} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
283cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );")
284
285typedef enum D3D12_VIDEO_DECODE_STATUS
286{
287 D3D12_VIDEO_DECODE_STATUS_OK = 0,
288 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
289 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
290 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
291 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
292} D3D12_VIDEO_DECODE_STATUS;
293
294typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
295{
296 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
297 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
298 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
299 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
300} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
301
302typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
303{
304 UINT NodeIndex; // input
305 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
306 UINT Width; // input
307 UINT Height; // input
308 DXGI_FORMAT DecodeFormat; // input
309 DXGI_RATIONAL FrameRate; // input
310 UINT BitRate; // input
311 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
312 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
313 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
314} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
315
316typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
317{
318 UINT NodeIndex; // input
319 UINT ProfileCount; // output
320} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
321
322typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
323{
324 UINT NodeIndex; // input
325 UINT ProfileCount; // input
326 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
327} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
328
329typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
330{
331 UINT NodeIndex; // input
332 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
333 UINT FormatCount; // output
334} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
335
336typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
337{
338 UINT NodeIndex; // input
339 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
340 UINT FormatCount; // input
341 [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.
342} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
343
344typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
345{
346 BOOL IOCoherent;
347} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
348
349typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
350{
351 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
352 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
353 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
354
355 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
356 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
357 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
358
359 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
360} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
361
362typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
363{
364 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
365
366 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
367 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
368 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
369
370 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
371 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
372 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
373
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
375} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
376cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );")
377
378typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
379{
380 UINT NodeIndex; // in
381 GUID DecodeProfile; // in
382 UINT Width; // in
383 UINT Height; // in
384 DXGI_FORMAT DecodeFormat; // in
385 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
386 UINT BinCount; // out
387 UINT CounterBitDepth; // out
388} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
389
390typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
391{
392 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
393 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
394
395} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
396cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );")
397
398typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
399{
400 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
401 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
402 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
403
404} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
405cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );")
406
407typedef struct D3D12_VIDEO_SCALE_SUPPORT
408{
409 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
410 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
411} D3D12_VIDEO_SCALE_SUPPORT;
412
413typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
414{
415 UINT NodeIndex; // input
416 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
417 D3D12_VIDEO_SAMPLE DecodeSample; // input
418 D3D12_VIDEO_FORMAT OutputFormat; // input
419 DXGI_RATIONAL FrameRate; // input
420 UINT BitRate; // input
421 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
422 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
423} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
424
425typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
426{
427 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
428 UINT64 MemoryPoolL0Size; // output
429 UINT64 MemoryPoolL1Size; // output
430} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
431
432typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
433{
434 UINT NodeMask;
435 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
436 UINT NumInputStreamDescs; // input
437 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
438 UINT64 MemoryPoolL0Size; // output
439 UINT64 MemoryPoolL1Size; // output
440} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
441
442typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
443{
444 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
445 UINT64 NumMacroblocksAffected;
446 DXGI_RATIONAL FrameRate;
447 UINT BitRate;
448} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
449
450typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
451{
452 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
453 UINT Size;
454 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
455} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
456
457typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
458{
459 UINT NumTexture2Ds;
460 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
461 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
462 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
463} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
464
465typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
466{
467 ID3D12Resource* pBuffer;
468 UINT64 Offset;
469 UINT64 Size;
470} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
471
472typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
473{
474 BOOL Enable;
475 ID3D12Resource* pReferenceTexture2D;
476 UINT ReferenceSubresource;
477 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
478 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
479} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
480
481typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
482{
483 UINT NumFrameArguments;
484 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
485 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
486 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
487 ID3D12VideoDecoderHeap *pHeap;
488} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
489
490typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
491{
492 ID3D12Resource* pOutputTexture2D;
493 UINT OutputSubresource;
494 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
495} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
496
497[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
498interface ID3D12VideoProcessor
499 : ID3D12Pageable
500{
501 UINT GetNodeMask();
502 UINT GetNumInputStreamDescs();
503 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
504 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
505}
506
507typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
508{
509 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
510 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
511 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
512 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
513 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
514 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
515 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
516 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
517
518} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
519cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );")
520
521typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
522{
523 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
524 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
525 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
526 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
527 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
528 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
529 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
530 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
531 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
532 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
533
534} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
535cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );")
536
537typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
538{
539 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
540 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
541 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
542 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
543 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
544 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
545 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
546 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
547} D3D12_VIDEO_PROCESS_ORIENTATION;
548
549typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
550{
551 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
552 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
553 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
554
555} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
556cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );")
557
558typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
559{
560 INT Minimum;
561 INT Maximum;
562 INT Default;
563 FLOAT Multiplier;
564} D3D12_VIDEO_PROCESS_FILTER_RANGE;
565
566typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
567{
568 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
569 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
570
571} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );")
573
574typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
575{
576 UINT NodeIndex; // input
577 D3D12_VIDEO_SAMPLE InputSample; // input
578 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
579 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
580 DXGI_RATIONAL InputFrameRate; // input
581 D3D12_VIDEO_FORMAT OutputFormat; // input
582 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
583 DXGI_RATIONAL OutputFrameRate; // input
584 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
585 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
586 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
587 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
588 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
589 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
590 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
591} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
592
593typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
594{
595 UINT NodeIndex; // input
596 UINT MaxInputStreams; // output
597} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
598
599typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
600{
601 UINT NodeIndex; // input
602 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
603 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
604 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
605 DXGI_RATIONAL InputFrameRate; // input
606 DXGI_RATIONAL OutputFrameRate; // input
607 BOOL EnableAutoProcessing; // input
608 UINT PastFrames; // output
609 UINT FutureFrames; // output
610} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
611
612typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
613{
614 UINT NumPastFrames;
615 ID3D12Resource **ppPastFrames;
616 UINT *pPastSubresources;
617 UINT NumFutureFrames;
618 ID3D12Resource **ppFutureFrames;
619 UINT *pFutureSubresources;
620} D3D12_VIDEO_PROCESS_REFERENCE_SET;
621
622typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
623{
624 D3D12_RECT SourceRectangle;
625 D3D12_RECT DestinationRectangle;
626 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
627} D3D12_VIDEO_PROCESS_TRANSFORM;
628
629typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
630{
631 UINT OutputIndex;
632 UINT InputFrameOrField;
633} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
634
635typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
636{
637 ID3D12Resource *pTexture2D;
638 UINT Subresource;
639 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
640} D3D12_VIDEO_PROCESS_INPUT_STREAM;
641
642typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
643{
644 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
645 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
646 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
647 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
648 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
649 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
650} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
651
652typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
653{
654 ID3D12Resource* pTexture2D;
655 UINT Subresource;
656} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
657
658typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
659{
660 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
661 D3D12_RECT TargetRectangle;
662} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
663
664[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
665interface ID3D12VideoDecodeCommandList
666 : ID3D12CommandList
667{
668 HRESULT Close();
669
670 HRESULT Reset(
671 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
672 );
673
674 void ClearState();
675
676 void ResourceBarrier(
677 [annotation("_In_")] UINT NumBarriers,
678 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
679 );
680
681 void DiscardResource(
682 [annotation("_In_")] ID3D12Resource* pResource,
683 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
684 );
685
686 void BeginQuery(
687 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
688 [annotation("_In_")] D3D12_QUERY_TYPE Type,
689 [annotation("_In_")] UINT Index
690 );
691
692 void EndQuery(
693 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
694 [annotation("_In_")] D3D12_QUERY_TYPE Type,
695 [annotation("_In_")] UINT Index
696 );
697
698 void ResolveQueryData(
699 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
700 [annotation("_In_")] D3D12_QUERY_TYPE Type,
701 [annotation("_In_")] UINT StartIndex,
702 [annotation("_In_")] UINT NumQueries,
703 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
704 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
705 );
706
707 void SetPredication(
708 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
709 [annotation("_In_")] UINT64 AlignedBufferOffset,
710 [annotation("_In_")] D3D12_PREDICATION_OP Operation
711 );
712
713 void SetMarker(
714 UINT Metadata,
715 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
716 UINT Size);
717
718 void BeginEvent(
719 UINT Metadata,
720 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
721 UINT Size);
722
723 void EndEvent();
724
725 void DecodeFrame(
726 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
727 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
728 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
729 );
730
731 void WriteBufferImmediate(
732 UINT Count,
733 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
734 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
735 );
736}
737
738[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
739interface ID3D12VideoProcessCommandList
740 : ID3D12CommandList
741{
742 HRESULT Close();
743
744 HRESULT Reset(
745 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
746 );
747
748 void ClearState();
749
750 void ResourceBarrier(
751 [annotation("_In_")] UINT NumBarriers,
752 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
753 );
754
755 void DiscardResource(
756 [annotation("_In_")] ID3D12Resource* pResource,
757 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
758 );
759
760 void BeginQuery(
761 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
762 [annotation("_In_")] D3D12_QUERY_TYPE Type,
763 [annotation("_In_")] UINT Index
764 );
765
766 void EndQuery(
767 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
768 [annotation("_In_")] D3D12_QUERY_TYPE Type,
769 [annotation("_In_")] UINT Index
770 );
771
772 void ResolveQueryData(
773 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
774 [annotation("_In_")] D3D12_QUERY_TYPE Type,
775 [annotation("_In_")] UINT StartIndex,
776 [annotation("_In_")] UINT NumQueries,
777 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
778 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
779 );
780
781 void SetPredication(
782 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
783 [annotation("_In_")] UINT64 AlignedBufferOffset,
784 [annotation("_In_")] D3D12_PREDICATION_OP Operation
785 );
786
787 void SetMarker(
788 UINT Metadata,
789 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
790 UINT Size);
791
792 void BeginEvent(
793 UINT Metadata,
794 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
795 UINT Size);
796
797 void EndEvent();
798
799 void ProcessFrames(
800 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
801 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
802 UINT NumInputStreams,
803 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
804 );
805
806 void WriteBufferImmediate(
807 UINT Count,
808 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
809 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
810 );
811}
812
813typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
814{
815 UINT64 Offset;
816 ID3D12Resource* pBuffer;
817} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
818
819typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
820{
821 BOOL Enable;
822 ID3D12Resource* pReferenceTexture2D;
823 UINT ReferenceSubresource;
824 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
825 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
826 UINT OutputWidth;
827 UINT OutputHeight;
828} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
829
830typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
831{
832 ID3D12Resource* pOutputTexture2D;
833 UINT OutputSubresource;
834 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
835 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
836} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
837
838[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
839interface ID3D12VideoDecodeCommandList1
840 : ID3D12VideoDecodeCommandList
841{
842 void DecodeFrame1(
843 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
844 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
845 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
846 );
847}
848
849typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
850{
851 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
852 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
853 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
854 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
855 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
856 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
857 D3D12_VIDEO_FIELD_TYPE FieldType;
858} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
859
860[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
861interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
862{
863 void ProcessFrames1(
864 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
865 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
866 UINT NumInputStreams,
867 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
868 );
869}
870
871typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
872{
873 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
874 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
875} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
876
877typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
878{
879 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
880 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
881 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
882
883} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
884cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );" )
885
886typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
887{
888 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
889} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
890
891typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
892{
893 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
894 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
895
896} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
897cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );" )
898
899// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
900typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
901{
902 UINT NodeIndex; // input
903 BOOL VideoDecodeSupport; // output
904 BOOL VideoProcessSupport; // output
905 BOOL VideoEncodeSupport; // output
906} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
907
908// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
909typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
910{
911 UINT NodeIndex; // input
912 DXGI_FORMAT InputFormat; // input
913 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
914 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
915 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
916} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
917
918// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
919typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
920{
921 UINT NodeIndex; // input
922 DXGI_FORMAT InputFormat; // input
923 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
924 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
925 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
926 BOOL Protected; // input
927 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
928 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
929 UINT64 MotionEstimatorMemoryPoolL0Size; // output
930 UINT64 MotionEstimatorMemoryPoolL1Size; // output
931} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
932
933typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
934{
935 UINT NodeMask;
936 DXGI_FORMAT InputFormat;
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
939 D3D12_VIDEO_SIZE_RANGE SizeRange;
940
941} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
942
943[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
944interface ID3D12VideoMotionEstimator
945 : ID3D12Pageable
946{
947 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
948
949 HRESULT GetProtectedResourceSession(
950 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
951 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
952}
953
954typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
955{
956 UINT NodeMask;
957 DXGI_FORMAT InputFormat;
958 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
959 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
960 D3D12_VIDEO_SIZE_RANGE SizeRange;
961
962} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
963
964[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
965interface ID3D12VideoMotionVectorHeap
966 : ID3D12Pageable
967{
968 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
969
970 HRESULT GetProtectedResourceSession(
971 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
972 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
973}
974
975[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
976interface ID3D12VideoDevice1
977 : ID3D12VideoDevice
978{
979 HRESULT CreateVideoMotionEstimator(
980 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
981 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
982 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
983 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
984 );
985
986 HRESULT CreateVideoMotionVectorHeap(
987 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
988 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
989 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
990 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
991 );
992}
993
994typedef struct D3D12_RESOURCE_COORDINATE
995{
996 // Coordinate values below index pixels.
997 UINT64 X; // Used for buffer, 1D, 2D, 3D
998 UINT Y; // Used for 2D, 3D
999 UINT Z; // Used for 3D
1000 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1001} D3D12_RESOURCE_COORDINATE;
1002
1003typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1004{
1005 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1006} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1007
1008typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1009{
1010 ID3D12Resource* pInputTexture2D;
1011 UINT InputSubresourceIndex;
1012 ID3D12Resource* pReferenceTexture2D;
1013 UINT ReferenceSubresourceIndex;
1014 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1015} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1016
1017typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1018{
1019 ID3D12Resource* pMotionVectorTexture2D;
1020 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1021} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1022
1023typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1024{
1025 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1026 UINT PixelWidth;
1027 UINT PixelHeight;
1028} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1029
1030[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1031interface ID3D12VideoEncodeCommandList
1032 : ID3D12CommandList
1033{
1034 HRESULT Close();
1035
1036 HRESULT Reset(
1037 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1038 );
1039
1040 void ClearState();
1041
1042 void ResourceBarrier(
1043 [annotation("_In_")] UINT NumBarriers,
1044 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1045 );
1046
1047 void DiscardResource(
1048 [annotation("_In_")] ID3D12Resource* pResource,
1049 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1050 );
1051
1052 void BeginQuery(
1053 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1054 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1055 [annotation("_In_")] UINT Index
1056 );
1057
1058 void EndQuery(
1059 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1060 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1061 [annotation("_In_")] UINT Index
1062 );
1063
1064 void ResolveQueryData(
1065 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1066 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1067 [annotation("_In_")] UINT StartIndex,
1068 [annotation("_In_")] UINT NumQueries,
1069 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1070 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1071 );
1072
1073 void SetPredication(
1074 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1075 [annotation("_In_")] UINT64 AlignedBufferOffset,
1076 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1077 );
1078
1079 void SetMarker(
1080 UINT Metadata,
1081 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1082 UINT Size);
1083
1084 void BeginEvent(
1085 UINT Metadata,
1086 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1087 UINT Size);
1088
1089 void EndEvent();
1090
1091 void EstimateMotion(
1092 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1093 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1094 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1095 );
1096
1097 void ResolveMotionVectorHeap(
1098 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1099 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1100 );
1101
1102 void WriteBufferImmediate(
1103 UINT Count,
1104 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1105 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1106 );
1107
1108 void SetProtectedResourceSession(
1109 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1110 );
1111}
1112
1113typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1114{
1115 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1116 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1117
1118} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1119cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );")
1120
1121// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1122typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1123{
1124 UINT NodeIndex; // input
1125 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1126 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1127} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1128
1129// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1130typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1131{
1132 UINT NodeIndex; // input
1133 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1134} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1135
1136// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1137typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1138{
1139 UINT NodeIndex; // input
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1141} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1142
1143//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1144typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1145{
1146 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1147 BOOL Protected; // input
1148 UINT64 MemoryPoolL0Size; // output
1149 UINT64 MemoryPoolL1Size; // output
1150} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1151
1152// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1153typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1154{
1155 UINT NodeMask;
1156 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1157 UINT NumInputStreamDescs; // input
1158 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1159 BOOL Protected; // input
1160 UINT64 MemoryPoolL0Size; // output
1161 UINT64 MemoryPoolL1Size; // output
1162} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1163
1164typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1165{
1166 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1167 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1168 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1169 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1170 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1171 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1172 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1173} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1174
1175typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1176{
1177 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1178 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1179 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1180 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1181 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1182 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1183 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1184 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1185 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1186 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1187 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1188} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1189
1190typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1191{
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1195} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1196
1197cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );")
1198
1199typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1200{
1201 UINT NodeIndex; // in
1202 UINT CommandCount; // out
1203} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1204
1205typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1206{
1207 GUID CommandId;
1208 LPCWSTR Name;
1209 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1210} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1211
1212typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1213{
1214 UINT NodeIndex;
1215 UINT CommandCount;
1216 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1217} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1218
1219typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1220{
1221 GUID CommandId; // in
1222 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1223 UINT ParameterCount; // out
1224 UINT ParameterPacking; // out
1225} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1226
1227typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1228{
1229 LPCWSTR Name;
1230 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1231 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1232} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1233
1234typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1235{
1236 GUID CommandId; // in
1237 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1238 UINT ParameterCount; // in
1239 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1240} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1241
1242typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1243{
1244 UINT NodeIndex;
1245 GUID CommandId;
1246 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1247 SIZE_T InputDataSizeInBytes;
1248 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1249 SIZE_T OutputDataSizeInBytes;
1250} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1251
1252typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1253{
1254 UINT NodeIndex;
1255 GUID CommandId;
1256 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1257 SIZE_T CreationParametersSizeInBytes;
1258 UINT64 MemoryPoolL0Size; // output
1259 UINT64 MemoryPoolL1Size; // output
1260} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1261
1262typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1263{
1264 UINT NodeMask;
1265 GUID CommandId;
1266} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1267
1268[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1269interface ID3D12VideoDecoder1
1270 : ID3D12VideoDecoder
1271{
1272 HRESULT GetProtectedResourceSession(
1273 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1274 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1275}
1276
1277[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1278interface ID3D12VideoDecoderHeap1
1279 : ID3D12VideoDecoderHeap
1280{
1281 HRESULT GetProtectedResourceSession(
1282 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1283 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1284}
1285
1286[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1287interface ID3D12VideoProcessor1
1288 : ID3D12VideoProcessor
1289{
1290 HRESULT GetProtectedResourceSession(
1291 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1292 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1293}
1294
1295[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1296interface ID3D12VideoExtensionCommand
1297 : ID3D12Pageable
1298{
1299 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1300
1301 HRESULT GetProtectedResourceSession(
1302 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1303 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1304}
1305
1306[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1307interface ID3D12VideoDevice2
1308 : ID3D12VideoDevice1
1309{
1310 HRESULT CreateVideoDecoder1(
1311 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1312 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1313 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1314 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1315 );
1316
1317 HRESULT CreateVideoDecoderHeap1(
1318 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1319 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1320 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1321 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1322 );
1323
1324 HRESULT CreateVideoProcessor1(
1325 UINT NodeMask,
1326 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1327 UINT NumInputStreamDescs,
1328 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1329 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1330 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1331 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1332 );
1333
1334 HRESULT CreateVideoExtensionCommand(
1335 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1336 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1337 SIZE_T CreationParametersDataSizeInBytes,
1338 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1339 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1340 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1341
1342 HRESULT ExecuteExtensionCommand(
1343 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1344 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1345 SIZE_T ExecutionParametersSizeInBytes,
1346 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1347 SIZE_T OutputDataSizeInBytes
1348 );
1349}
1350
1351[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1352interface ID3D12VideoDecodeCommandList2
1353 : ID3D12VideoDecodeCommandList1
1354{
1355 void SetProtectedResourceSession(
1356 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1357 );
1358
1359 void InitializeExtensionCommand(
1360 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1361 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1362 SIZE_T InitializationParametersSizeInBytes);
1363
1364 void ExecuteExtensionCommand(
1365 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1366 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1367 SIZE_T ExecutionParametersSizeInBytes);
1368}
1369
1370[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1371interface ID3D12VideoProcessCommandList2
1372 : ID3D12VideoProcessCommandList1
1373{
1374
1375 void SetProtectedResourceSession(
1376 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1377 );
1378
1379 void InitializeExtensionCommand(
1380 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1381 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1382 SIZE_T InitializationParametersSizeInBytes);
1383
1384 void ExecuteExtensionCommand(
1385 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1386 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1387 SIZE_T ExecutionParametersSizeInBytes);
1388}
1389
1390[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1391interface ID3D12VideoEncodeCommandList1
1392 : ID3D12VideoEncodeCommandList
1393{
1394 void InitializeExtensionCommand(
1395 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1396 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1397 SIZE_T InitializationParametersSizeInBytes);
1398
1399 void ExecuteExtensionCommand(
1400 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1401 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1402 SIZE_T ExecutionParametersSizeInBytes);
1403}
1404
1405cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1406cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1407cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1408cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1409cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1410cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1411cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1412cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1413cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1414cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1415cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1416cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1417cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1418cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1419cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1420cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1421cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1422cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1423cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1424cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1425
1426cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1427#pragma endregion
1428
1429cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
1430cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
1431cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
1432cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
1433cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
1434cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
1435cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
1436cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
1437cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
1438cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
1439cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
1440cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
1441cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
1442cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
1443cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
1444cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
1445cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
1446cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
1447cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
1448cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.h b/contrib/DirectX-Headers/include/directx/d3dcommon.h
new file mode 100644
index 0000000..b41fbbf
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.h
@@ -0,0 +1,1068 @@
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.0625 */
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 _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_CORE = 0x1000,
97 D3D_FEATURE_LEVEL_9_1 = 0x9100,
98 D3D_FEATURE_LEVEL_9_2 = 0x9200,
99 D3D_FEATURE_LEVEL_9_3 = 0x9300,
100 D3D_FEATURE_LEVEL_10_0 = 0xa000,
101 D3D_FEATURE_LEVEL_10_1 = 0xa100,
102 D3D_FEATURE_LEVEL_11_0 = 0xb000,
103 D3D_FEATURE_LEVEL_11_1 = 0xb100,
104 D3D_FEATURE_LEVEL_12_0 = 0xc000,
105 D3D_FEATURE_LEVEL_12_1 = 0xc100,
106 D3D_FEATURE_LEVEL_12_2 = 0xc200
107 } D3D_FEATURE_LEVEL;
108
109#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
110#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
111#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
112#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
113#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
114#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
115#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
116#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
117#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
118#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
119#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
120#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
121#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
122#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
123#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
124typedef
125enum D3D_PRIMITIVE_TOPOLOGY
126 {
127 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
128 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
129 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
130 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
131 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
133 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
134 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
135 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
136 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
137 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
138 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
139 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
140 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
141 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
142 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
143 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
144 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
145 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
146 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
147 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
148 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
149 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
150 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
151 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
152 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
153 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
154 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
155 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
156 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
157 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
158 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
159 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
160 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
161 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
162 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
163 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
164 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
165 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
166 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
167 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
168 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
169 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
170 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
171 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
172 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
173 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
176 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
177 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
179 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
180 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
181 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
182 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
183 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
186 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
187 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
190 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
191 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
221 } D3D_PRIMITIVE_TOPOLOGY;
222
223typedef
224enum D3D_PRIMITIVE
225 {
226 D3D_PRIMITIVE_UNDEFINED = 0,
227 D3D_PRIMITIVE_POINT = 1,
228 D3D_PRIMITIVE_LINE = 2,
229 D3D_PRIMITIVE_TRIANGLE = 3,
230 D3D_PRIMITIVE_LINE_ADJ = 6,
231 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
232 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
233 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
234 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
235 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
236 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
237 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
238 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
239 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
240 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
241 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
242 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
243 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
244 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
245 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
246 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
247 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
248 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
249 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
250 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
251 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
252 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
253 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
254 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
255 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
256 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
257 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
258 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
259 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
260 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
261 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
262 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
263 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
264 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
265 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
266 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
267 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
268 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
269 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
270 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
271 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
272 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
273 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
274 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
275 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
276 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
277 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
278 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
308 } D3D_PRIMITIVE;
309
310typedef
311enum D3D_SRV_DIMENSION
312 {
313 D3D_SRV_DIMENSION_UNKNOWN = 0,
314 D3D_SRV_DIMENSION_BUFFER = 1,
315 D3D_SRV_DIMENSION_TEXTURE1D = 2,
316 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
317 D3D_SRV_DIMENSION_TEXTURE2D = 4,
318 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
319 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
320 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
321 D3D_SRV_DIMENSION_TEXTURE3D = 8,
322 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
323 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
324 D3D_SRV_DIMENSION_BUFFEREX = 11,
325 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
326 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
327 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
328 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
329 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
330 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
332 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
334 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
335 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
336 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
337 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
338 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
339 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
340 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
344 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
345 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
346 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
347 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
348 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
349 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
350 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
351 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
353 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
355 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
356 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
357 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
358 } D3D_SRV_DIMENSION;
359
360#define D3D_SHADER_FEATURE_DOUBLES 0x00001
361#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
362#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
363#define D3D_SHADER_FEATURE_64_UAVS 0x00008
364#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
365#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
366#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
367#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
368#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
369#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
370#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
371#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
372#define D3D_SHADER_FEATURE_ROVS 0x01000
373#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
374#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
375#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
376#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
377#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
378#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
379#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
380#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
381#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
382#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
383#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
384#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
385#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
386#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
387#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
388#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
389typedef struct _D3D_SHADER_MACRO
390 {
391 LPCSTR Name;
392 LPCSTR Definition;
393 } D3D_SHADER_MACRO;
394
395typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
396
397DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
398
399
400extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
401extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
402
403#ifndef __ID3D10Blob_INTERFACE_DEFINED__
404#define __ID3D10Blob_INTERFACE_DEFINED__
405
406/* interface ID3D10Blob */
407/* [unique][local][object][uuid] */
408
409
410EXTERN_C const IID IID_ID3D10Blob;
411
412#if defined(__cplusplus) && !defined(CINTERFACE)
413
414 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
415 ID3D10Blob : public IUnknown
416 {
417 public:
418 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
419
420 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
421
422 };
423
424
425#else /* C style interface */
426
427 typedef struct ID3D10BlobVtbl
428 {
429 BEGIN_INTERFACE
430
431 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
432 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
433 ID3D10Blob * This,
434 /* [in] */ REFIID riid,
435 /* [annotation][iid_is][out] */
436 _COM_Outptr_ void **ppvObject);
437
438 DECLSPEC_XFGVIRT(IUnknown, AddRef)
439 ULONG ( STDMETHODCALLTYPE *AddRef )(
440 ID3D10Blob * This);
441
442 DECLSPEC_XFGVIRT(IUnknown, Release)
443 ULONG ( STDMETHODCALLTYPE *Release )(
444 ID3D10Blob * This);
445
446 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
447 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
451 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
452 ID3D10Blob * This);
453
454 END_INTERFACE
455 } ID3D10BlobVtbl;
456
457 interface ID3D10Blob
458 {
459 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
460 };
461
462
463
464#ifdef COBJMACROS
465
466
467#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
468 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
469
470#define ID3D10Blob_AddRef(This) \
471 ( (This)->lpVtbl -> AddRef(This) )
472
473#define ID3D10Blob_Release(This) \
474 ( (This)->lpVtbl -> Release(This) )
475
476
477#define ID3D10Blob_GetBufferPointer(This) \
478 ( (This)->lpVtbl -> GetBufferPointer(This) )
479
480#define ID3D10Blob_GetBufferSize(This) \
481 ( (This)->lpVtbl -> GetBufferSize(This) )
482
483#endif /* COBJMACROS */
484
485
486#endif /* C style interface */
487
488
489
490
491#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
492
493
494/* interface __MIDL_itf_d3dcommon_0000_0001 */
495/* [local] */
496
497typedef interface ID3D10Blob* LPD3D10BLOB;
498typedef ID3D10Blob ID3DBlob;
499
500typedef ID3DBlob* LPD3DBLOB;
501#define IID_ID3DBlob IID_ID3D10Blob
502typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
503 void *pData);
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
509
510#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
511#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
512
513/* interface ID3DDestructionNotifier */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3DDestructionNotifier;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
522 ID3DDestructionNotifier : public IUnknown
523 {
524 public:
525 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
526 /* [annotation] */
527 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
528 /* [annotation] */
529 _In_ void *pData,
530 /* [annotation] */
531 _Out_ UINT *pCallbackID) = 0;
532
533 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
534 /* [annotation] */
535 _In_ UINT callbackID) = 0;
536
537 };
538
539
540#else /* C style interface */
541
542 typedef struct ID3DDestructionNotifierVtbl
543 {
544 BEGIN_INTERFACE
545
546 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
547 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
548 ID3DDestructionNotifier * This,
549 /* [in] */ REFIID riid,
550 /* [annotation][iid_is][out] */
551 _COM_Outptr_ void **ppvObject);
552
553 DECLSPEC_XFGVIRT(IUnknown, AddRef)
554 ULONG ( STDMETHODCALLTYPE *AddRef )(
555 ID3DDestructionNotifier * This);
556
557 DECLSPEC_XFGVIRT(IUnknown, Release)
558 ULONG ( STDMETHODCALLTYPE *Release )(
559 ID3DDestructionNotifier * This);
560
561 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
562 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
563 ID3DDestructionNotifier * This,
564 /* [annotation] */
565 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
566 /* [annotation] */
567 _In_ void *pData,
568 /* [annotation] */
569 _Out_ UINT *pCallbackID);
570
571 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
572 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
573 ID3DDestructionNotifier * This,
574 /* [annotation] */
575 _In_ UINT callbackID);
576
577 END_INTERFACE
578 } ID3DDestructionNotifierVtbl;
579
580 interface ID3DDestructionNotifier
581 {
582 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
583 };
584
585
586
587#ifdef COBJMACROS
588
589
590#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
591 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
592
593#define ID3DDestructionNotifier_AddRef(This) \
594 ( (This)->lpVtbl -> AddRef(This) )
595
596#define ID3DDestructionNotifier_Release(This) \
597 ( (This)->lpVtbl -> Release(This) )
598
599
600#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
601 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
602
603#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
604 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
605
606#endif /* COBJMACROS */
607
608
609#endif /* C style interface */
610
611
612
613
614#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
615
616
617/* interface __MIDL_itf_d3dcommon_0000_0002 */
618/* [local] */
619
620typedef
621enum _D3D_INCLUDE_TYPE
622 {
623 D3D_INCLUDE_LOCAL = 0,
624 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
625 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
626 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
627 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
628 } D3D_INCLUDE_TYPE;
629
630typedef interface ID3DInclude ID3DInclude;
631#undef INTERFACE
632#define INTERFACE ID3DInclude
633DECLARE_INTERFACE(ID3DInclude)
634{
635 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
636 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
637};
638typedef ID3DInclude* LPD3DINCLUDE;
639typedef
640enum _D3D_SHADER_VARIABLE_CLASS
641 {
642 D3D_SVC_SCALAR = 0,
643 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
644 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
645 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
646 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
647 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
648 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
649 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
650 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
651 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
652 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
653 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
654 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
655 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
656 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
657 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
658 D3D_SVC_FORCE_DWORD = 0x7fffffff
659 } D3D_SHADER_VARIABLE_CLASS;
660
661typedef
662enum _D3D_SHADER_VARIABLE_FLAGS
663 {
664 D3D_SVF_USERPACKED = 1,
665 D3D_SVF_USED = 2,
666 D3D_SVF_INTERFACE_POINTER = 4,
667 D3D_SVF_INTERFACE_PARAMETER = 8,
668 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
669 D3D10_SVF_USED = D3D_SVF_USED,
670 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
671 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
672 D3D_SVF_FORCE_DWORD = 0x7fffffff
673 } D3D_SHADER_VARIABLE_FLAGS;
674
675typedef
676enum _D3D_SHADER_VARIABLE_TYPE
677 {
678 D3D_SVT_VOID = 0,
679 D3D_SVT_BOOL = 1,
680 D3D_SVT_INT = 2,
681 D3D_SVT_FLOAT = 3,
682 D3D_SVT_STRING = 4,
683 D3D_SVT_TEXTURE = 5,
684 D3D_SVT_TEXTURE1D = 6,
685 D3D_SVT_TEXTURE2D = 7,
686 D3D_SVT_TEXTURE3D = 8,
687 D3D_SVT_TEXTURECUBE = 9,
688 D3D_SVT_SAMPLER = 10,
689 D3D_SVT_SAMPLER1D = 11,
690 D3D_SVT_SAMPLER2D = 12,
691 D3D_SVT_SAMPLER3D = 13,
692 D3D_SVT_SAMPLERCUBE = 14,
693 D3D_SVT_PIXELSHADER = 15,
694 D3D_SVT_VERTEXSHADER = 16,
695 D3D_SVT_PIXELFRAGMENT = 17,
696 D3D_SVT_VERTEXFRAGMENT = 18,
697 D3D_SVT_UINT = 19,
698 D3D_SVT_UINT8 = 20,
699 D3D_SVT_GEOMETRYSHADER = 21,
700 D3D_SVT_RASTERIZER = 22,
701 D3D_SVT_DEPTHSTENCIL = 23,
702 D3D_SVT_BLEND = 24,
703 D3D_SVT_BUFFER = 25,
704 D3D_SVT_CBUFFER = 26,
705 D3D_SVT_TBUFFER = 27,
706 D3D_SVT_TEXTURE1DARRAY = 28,
707 D3D_SVT_TEXTURE2DARRAY = 29,
708 D3D_SVT_RENDERTARGETVIEW = 30,
709 D3D_SVT_DEPTHSTENCILVIEW = 31,
710 D3D_SVT_TEXTURE2DMS = 32,
711 D3D_SVT_TEXTURE2DMSARRAY = 33,
712 D3D_SVT_TEXTURECUBEARRAY = 34,
713 D3D_SVT_HULLSHADER = 35,
714 D3D_SVT_DOMAINSHADER = 36,
715 D3D_SVT_INTERFACE_POINTER = 37,
716 D3D_SVT_COMPUTESHADER = 38,
717 D3D_SVT_DOUBLE = 39,
718 D3D_SVT_RWTEXTURE1D = 40,
719 D3D_SVT_RWTEXTURE1DARRAY = 41,
720 D3D_SVT_RWTEXTURE2D = 42,
721 D3D_SVT_RWTEXTURE2DARRAY = 43,
722 D3D_SVT_RWTEXTURE3D = 44,
723 D3D_SVT_RWBUFFER = 45,
724 D3D_SVT_BYTEADDRESS_BUFFER = 46,
725 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
726 D3D_SVT_STRUCTURED_BUFFER = 48,
727 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
728 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
729 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
730 D3D_SVT_MIN8FLOAT = 52,
731 D3D_SVT_MIN10FLOAT = 53,
732 D3D_SVT_MIN16FLOAT = 54,
733 D3D_SVT_MIN12INT = 55,
734 D3D_SVT_MIN16INT = 56,
735 D3D_SVT_MIN16UINT = 57,
736 D3D10_SVT_VOID = D3D_SVT_VOID,
737 D3D10_SVT_BOOL = D3D_SVT_BOOL,
738 D3D10_SVT_INT = D3D_SVT_INT,
739 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
740 D3D10_SVT_STRING = D3D_SVT_STRING,
741 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
742 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
743 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
744 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
745 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
746 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
747 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
748 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
749 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
750 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
751 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
752 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
753 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
754 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
755 D3D10_SVT_UINT = D3D_SVT_UINT,
756 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
757 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
758 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
759 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
760 D3D10_SVT_BLEND = D3D_SVT_BLEND,
761 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
762 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
763 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
764 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
765 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
766 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
767 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
768 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
769 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
770 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
771 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
772 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
773 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
774 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
775 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
776 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
777 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
778 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
779 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
780 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
781 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
782 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
783 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
784 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
785 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
786 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
787 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
788 D3D_SVT_FORCE_DWORD = 0x7fffffff
789 } D3D_SHADER_VARIABLE_TYPE;
790
791typedef
792enum _D3D_SHADER_INPUT_FLAGS
793 {
794 D3D_SIF_USERPACKED = 0x1,
795 D3D_SIF_COMPARISON_SAMPLER = 0x2,
796 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
797 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
798 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
799 D3D_SIF_UNUSED = 0x10,
800 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
801 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
802 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
803 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
804 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
805 D3D_SIF_FORCE_DWORD = 0x7fffffff
806 } D3D_SHADER_INPUT_FLAGS;
807
808typedef
809enum _D3D_SHADER_INPUT_TYPE
810 {
811 D3D_SIT_CBUFFER = 0,
812 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
813 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
814 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
815 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
816 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
817 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
818 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
819 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
820 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
821 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
822 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
823 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
824 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
825 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
826 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
827 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
828 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
829 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
830 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
831 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
832 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
833 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
834 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
835 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
836 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
837 } D3D_SHADER_INPUT_TYPE;
838
839typedef
840enum _D3D_SHADER_CBUFFER_FLAGS
841 {
842 D3D_CBF_USERPACKED = 1,
843 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
844 D3D_CBF_FORCE_DWORD = 0x7fffffff
845 } D3D_SHADER_CBUFFER_FLAGS;
846
847typedef
848enum _D3D_CBUFFER_TYPE
849 {
850 D3D_CT_CBUFFER = 0,
851 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
852 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
853 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
854 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
855 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
856 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
857 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
858 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
859 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
860 } D3D_CBUFFER_TYPE;
861
862typedef
863enum D3D_NAME
864 {
865 D3D_NAME_UNDEFINED = 0,
866 D3D_NAME_POSITION = 1,
867 D3D_NAME_CLIP_DISTANCE = 2,
868 D3D_NAME_CULL_DISTANCE = 3,
869 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
870 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
871 D3D_NAME_VERTEX_ID = 6,
872 D3D_NAME_PRIMITIVE_ID = 7,
873 D3D_NAME_INSTANCE_ID = 8,
874 D3D_NAME_IS_FRONT_FACE = 9,
875 D3D_NAME_SAMPLE_INDEX = 10,
876 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
877 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
878 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
879 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
880 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
881 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
882 D3D_NAME_BARYCENTRICS = 23,
883 D3D_NAME_SHADINGRATE = 24,
884 D3D_NAME_CULLPRIMITIVE = 25,
885 D3D_NAME_TARGET = 64,
886 D3D_NAME_DEPTH = 65,
887 D3D_NAME_COVERAGE = 66,
888 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
889 D3D_NAME_DEPTH_LESS_EQUAL = 68,
890 D3D_NAME_STENCIL_REF = 69,
891 D3D_NAME_INNER_COVERAGE = 70,
892 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
893 D3D10_NAME_POSITION = D3D_NAME_POSITION,
894 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
895 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
896 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
897 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
898 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
899 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
900 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
901 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
902 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
903 D3D10_NAME_TARGET = D3D_NAME_TARGET,
904 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
905 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
906 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
907 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
908 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
909 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
910 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
911 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
912 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
913 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
914 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
915 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
916 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
917 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
918 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
919 } D3D_NAME;
920
921typedef
922enum D3D_RESOURCE_RETURN_TYPE
923 {
924 D3D_RETURN_TYPE_UNORM = 1,
925 D3D_RETURN_TYPE_SNORM = 2,
926 D3D_RETURN_TYPE_SINT = 3,
927 D3D_RETURN_TYPE_UINT = 4,
928 D3D_RETURN_TYPE_FLOAT = 5,
929 D3D_RETURN_TYPE_MIXED = 6,
930 D3D_RETURN_TYPE_DOUBLE = 7,
931 D3D_RETURN_TYPE_CONTINUED = 8,
932 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
933 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
934 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
935 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
936 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
937 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
938 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
939 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
940 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
941 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
942 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
943 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
944 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
945 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
946 } D3D_RESOURCE_RETURN_TYPE;
947
948typedef
949enum D3D_REGISTER_COMPONENT_TYPE
950 {
951 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
952 D3D_REGISTER_COMPONENT_UINT32 = 1,
953 D3D_REGISTER_COMPONENT_SINT32 = 2,
954 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
955 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
956 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
957 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
958 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32
959 } D3D_REGISTER_COMPONENT_TYPE;
960
961typedef
962enum D3D_TESSELLATOR_DOMAIN
963 {
964 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
965 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
966 D3D_TESSELLATOR_DOMAIN_TRI = 2,
967 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
968 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
969 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
970 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
971 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
972 } D3D_TESSELLATOR_DOMAIN;
973
974typedef
975enum D3D_TESSELLATOR_PARTITIONING
976 {
977 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
978 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
979 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
980 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
981 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
982 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
983 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
984 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
985 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
986 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
987 } D3D_TESSELLATOR_PARTITIONING;
988
989typedef
990enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
991 {
992 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
993 D3D_TESSELLATOR_OUTPUT_POINT = 1,
994 D3D_TESSELLATOR_OUTPUT_LINE = 2,
995 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
996 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
997 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
998 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
999 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1000 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1001 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1002 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1003
1004typedef
1005enum D3D_MIN_PRECISION
1006 {
1007 D3D_MIN_PRECISION_DEFAULT = 0,
1008 D3D_MIN_PRECISION_FLOAT_16 = 1,
1009 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1010 D3D_MIN_PRECISION_RESERVED = 3,
1011 D3D_MIN_PRECISION_SINT_16 = 4,
1012 D3D_MIN_PRECISION_UINT_16 = 5,
1013 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1014 D3D_MIN_PRECISION_ANY_10 = 0xf1
1015 } D3D_MIN_PRECISION;
1016
1017typedef
1018enum D3D_INTERPOLATION_MODE
1019 {
1020 D3D_INTERPOLATION_UNDEFINED = 0,
1021 D3D_INTERPOLATION_CONSTANT = 1,
1022 D3D_INTERPOLATION_LINEAR = 2,
1023 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1024 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1025 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1026 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1027 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1028 } D3D_INTERPOLATION_MODE;
1029
1030typedef
1031enum _D3D_PARAMETER_FLAGS
1032 {
1033 D3D_PF_NONE = 0,
1034 D3D_PF_IN = 0x1,
1035 D3D_PF_OUT = 0x2,
1036 D3D_PF_FORCE_DWORD = 0x7fffffff
1037 } D3D_PARAMETER_FLAGS;
1038
1039DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1040DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1041DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1042DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1043#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1044#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1045#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1046#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1047#define D3D_COMPONENT_MASK_X 1
1048#define D3D_COMPONENT_MASK_Y 2
1049#define D3D_COMPONENT_MASK_Z 4
1050#define D3D_COMPONENT_MASK_W 8
1051DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1052DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1053
1054
1055extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1056extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1057
1058/* Additional Prototypes for ALL interfaces */
1059
1060/* end of Additional Prototypes */
1061
1062#ifdef __cplusplus
1063}
1064#endif
1065
1066#endif
1067
1068
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.idl b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
new file mode 100644
index 0000000..c7bf623
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
@@ -0,0 +1,911 @@
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_CORE = 0x1000,
29 D3D_FEATURE_LEVEL_9_1 = 0x9100,
30 D3D_FEATURE_LEVEL_9_2 = 0x9200,
31 D3D_FEATURE_LEVEL_9_3 = 0x9300,
32 D3D_FEATURE_LEVEL_10_0 = 0xa000,
33 D3D_FEATURE_LEVEL_10_1 = 0xa100,
34 D3D_FEATURE_LEVEL_11_0 = 0xb000,
35 D3D_FEATURE_LEVEL_11_1 = 0xb100,
36 D3D_FEATURE_LEVEL_12_0 = 0xc000,
37 D3D_FEATURE_LEVEL_12_1 = 0xc100,
38 D3D_FEATURE_LEVEL_12_2 = 0xc200
39} D3D_FEATURE_LEVEL;
40
41cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
42cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
43cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
44cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
45cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
46cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
47cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
48cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
49cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
50cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
51cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
52cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
53cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
54cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
55cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
56
57typedef enum D3D_PRIMITIVE_TOPOLOGY
58{
59 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
60 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
61 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
62 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
63 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
65 // 6 is reserved for legacy triangle fans
66 // Adjacency values should be equal to (0x8 & non-adjacency):
67 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
68 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
69 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
71 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
72 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
73 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
74 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
75 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
76 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
77 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
78 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
79 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
80 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
81 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
82 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
83 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
84 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
85 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
86 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
87 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
88 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
89 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
90 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
91 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
92 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
93 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
94 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
95 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
96 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
97 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
98 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
99 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
100 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
101 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
102 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
103
104 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
105 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
106 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
108 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
110 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
111 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
114
115 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
116 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
117 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
119 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
121 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
122 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
126 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST,
157} D3D_PRIMITIVE_TOPOLOGY;
158
159typedef enum D3D_PRIMITIVE
160{
161 D3D_PRIMITIVE_UNDEFINED = 0,
162 D3D_PRIMITIVE_POINT = 1,
163 D3D_PRIMITIVE_LINE = 2,
164 D3D_PRIMITIVE_TRIANGLE = 3,
165 // Adjacency values should be equal to (0x4 & non-adjacency):
166 D3D_PRIMITIVE_LINE_ADJ = 6,
167 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
168 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
169 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
170 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
171 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
172 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
173 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
174 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
175 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
176 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
177 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
178 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
179 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
180 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
181 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
182 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
183 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
184 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
185 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
186 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
187 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
188 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
189 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
190 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
191 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
192 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
193 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
194 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
195 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
196 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
197 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
198 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
199 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
200
201 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
202 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
203 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
204 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
205 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
206 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
207
208 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
209 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
210 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
211 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
212 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
213 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
214 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
215 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
246} D3D_PRIMITIVE;
247
248typedef enum D3D_SRV_DIMENSION
249{
250 D3D_SRV_DIMENSION_UNKNOWN = 0,
251 D3D_SRV_DIMENSION_BUFFER = 1,
252 D3D_SRV_DIMENSION_TEXTURE1D = 2,
253 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
254 D3D_SRV_DIMENSION_TEXTURE2D = 4,
255 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
256 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
257 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
258 D3D_SRV_DIMENSION_TEXTURE3D = 8,
259 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
260 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
261 D3D_SRV_DIMENSION_BUFFEREX = 11,
262
263 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
264 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
265 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
266 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
267 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
268 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
269 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
270 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
271 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
272 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
273
274 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
275 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
276 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
277 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
278 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
279 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
282 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
283 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
285
286 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
287 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
288 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
289 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
290 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
291 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
292 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
293 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
294 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
295 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
296 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
297 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
298} D3D_SRV_DIMENSION;
299
300// Bits in shaders indicating features they use which the runtime checks against current device support:
301cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
302cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
303cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
304cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
305cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
306cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
308cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
309cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
310cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
311cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
312cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
313cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
314cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
315cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
316cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
317cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
318cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
319cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
320cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
321cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
322cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
323cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
325cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
326cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
327cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
328cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
329cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
330
331// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
332// When adding entries here, make sure they don't conflict with what's there.
333
334//----------------------------------------------------------------------------
335//
336// Shader compilation information.
337//
338//----------------------------------------------------------------------------
339
340//----------------------------------------------------------------------------
341// D3D_SHADER_MACRO:
342// ----------
343// Preprocessor macro definition. The application pass in a NULL-terminated
344// array of this structure to various D3D APIs. This enables the application
345// to #define tokens at runtime, before the file is parsed.
346//----------------------------------------------------------------------------
347
348typedef struct _D3D_SHADER_MACRO
349{
350 LPCSTR Name;
351 LPCSTR Definition;
352} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
353
354//----------------------------------------------------------------------------
355// ID3DBlob:
356// ------------
357// The buffer object is used by D3D to return arbitrary size data.
358// For compatibility with D3D10 this interface is also called ID3D10Blob,
359// but the version-neutral form is preferred.
360//
361// GetBufferPointer -
362// Returns a pointer to the beginning of the buffer.
363//
364// GetBufferSize -
365// Returns the size of the buffer, in bytes.
366//----------------------------------------------------------------------------
367
368// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
369cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
370
371[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
372interface ID3D10Blob : IUnknown
373{
374 LPVOID GetBufferPointer();
375 SIZE_T GetBufferSize();
376};
377
378cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
379
380typedef ID3D10Blob ID3DBlob;
381cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
382cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
383
384// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
385typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
386
387[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
388interface ID3DDestructionNotifier
389 : IUnknown
390{
391 HRESULT RegisterDestructionCallback(
392 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
393 [annotation("_In_")] void* pData,
394 [annotation("_Out_")] UINT* pCallbackID
395 );
396 HRESULT UnregisterDestructionCallback(
397 [annotation("_In_")] UINT callbackID
398 );
399};
400
401typedef enum _D3D_INCLUDE_TYPE
402{
403 D3D_INCLUDE_LOCAL,
404 D3D_INCLUDE_SYSTEM,
405
406 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
407 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
408
409 // force 32-bit size enum
410 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
411} D3D_INCLUDE_TYPE;
412
413//----------------------------------------------------------------------------
414// ID3DInclude:
415// -------------
416// This interface is intended to be implemented by the application, and can
417// be used by various D3D APIs. This enables application-specific handling
418// of #include directives in source files.
419//
420// Open()
421// Opens an include file. If successful, it should fill in ppData and
422// pBytes. The data pointer returned must remain valid until Close is
423// subsequently called. The name of the file is encoded in UTF-8 format.
424// Close()
425// Closes an include file. If Open was successful, Close is guaranteed
426// to be called before the API using this interface returns.
427//----------------------------------------------------------------------------
428
429cpp_quote("typedef interface ID3DInclude ID3DInclude;")
430
431cpp_quote("#undef INTERFACE")
432cpp_quote("#define INTERFACE ID3DInclude")
433
434cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
435cpp_quote("{")
436cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
437cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
438cpp_quote("};")
439
440cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
441
442//----------------------------------------------------------------------------
443//
444// Shader reflection information.
445//
446//----------------------------------------------------------------------------
447
448typedef enum _D3D_SHADER_VARIABLE_CLASS
449{
450 D3D_SVC_SCALAR,
451 D3D_SVC_VECTOR,
452 D3D_SVC_MATRIX_ROWS,
453 D3D_SVC_MATRIX_COLUMNS,
454 D3D_SVC_OBJECT,
455 D3D_SVC_STRUCT,
456 D3D_SVC_INTERFACE_CLASS,
457 D3D_SVC_INTERFACE_POINTER,
458
459 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
460 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
461 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
462 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
463 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
464 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
465
466 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
467 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
468
469 // force 32-bit size enum
470 D3D_SVC_FORCE_DWORD = 0x7fffffff
471} D3D_SHADER_VARIABLE_CLASS;
472
473typedef enum _D3D_SHADER_VARIABLE_FLAGS
474{
475 D3D_SVF_USERPACKED = 1,
476 D3D_SVF_USED = 2,
477
478 D3D_SVF_INTERFACE_POINTER = 4,
479 D3D_SVF_INTERFACE_PARAMETER = 8,
480
481 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
482 D3D10_SVF_USED = D3D_SVF_USED,
483
484 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
485 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
486
487 // force 32-bit size enum
488 D3D_SVF_FORCE_DWORD = 0x7fffffff
489} D3D_SHADER_VARIABLE_FLAGS;
490
491typedef enum _D3D_SHADER_VARIABLE_TYPE
492{
493 D3D_SVT_VOID = 0,
494 D3D_SVT_BOOL = 1,
495 D3D_SVT_INT = 2,
496 D3D_SVT_FLOAT = 3,
497 D3D_SVT_STRING = 4,
498 D3D_SVT_TEXTURE = 5,
499 D3D_SVT_TEXTURE1D = 6,
500 D3D_SVT_TEXTURE2D = 7,
501 D3D_SVT_TEXTURE3D = 8,
502 D3D_SVT_TEXTURECUBE = 9,
503 D3D_SVT_SAMPLER = 10,
504 D3D_SVT_SAMPLER1D = 11,
505 D3D_SVT_SAMPLER2D = 12,
506 D3D_SVT_SAMPLER3D = 13,
507 D3D_SVT_SAMPLERCUBE = 14,
508 D3D_SVT_PIXELSHADER = 15,
509 D3D_SVT_VERTEXSHADER = 16,
510 D3D_SVT_PIXELFRAGMENT = 17,
511 D3D_SVT_VERTEXFRAGMENT = 18,
512 D3D_SVT_UINT = 19,
513 D3D_SVT_UINT8 = 20,
514 D3D_SVT_GEOMETRYSHADER = 21,
515 D3D_SVT_RASTERIZER = 22,
516 D3D_SVT_DEPTHSTENCIL = 23,
517 D3D_SVT_BLEND = 24,
518 D3D_SVT_BUFFER = 25,
519 D3D_SVT_CBUFFER = 26,
520 D3D_SVT_TBUFFER = 27,
521 D3D_SVT_TEXTURE1DARRAY = 28,
522 D3D_SVT_TEXTURE2DARRAY = 29,
523 D3D_SVT_RENDERTARGETVIEW = 30,
524 D3D_SVT_DEPTHSTENCILVIEW = 31,
525
526 D3D_SVT_TEXTURE2DMS = 32,
527 D3D_SVT_TEXTURE2DMSARRAY = 33,
528
529 D3D_SVT_TEXTURECUBEARRAY = 34,
530
531 D3D_SVT_HULLSHADER = 35,
532 D3D_SVT_DOMAINSHADER = 36,
533
534 D3D_SVT_INTERFACE_POINTER = 37,
535 D3D_SVT_COMPUTESHADER = 38,
536
537 D3D_SVT_DOUBLE = 39,
538
539 D3D_SVT_RWTEXTURE1D = 40,
540 D3D_SVT_RWTEXTURE1DARRAY = 41,
541 D3D_SVT_RWTEXTURE2D = 42,
542 D3D_SVT_RWTEXTURE2DARRAY = 43,
543 D3D_SVT_RWTEXTURE3D = 44,
544 D3D_SVT_RWBUFFER = 45,
545
546 D3D_SVT_BYTEADDRESS_BUFFER = 46,
547 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
548 D3D_SVT_STRUCTURED_BUFFER = 48,
549 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
550 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
551 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
552
553 D3D_SVT_MIN8FLOAT = 52,
554 D3D_SVT_MIN10FLOAT = 53,
555 D3D_SVT_MIN16FLOAT = 54,
556 D3D_SVT_MIN12INT = 55,
557 D3D_SVT_MIN16INT = 56,
558 D3D_SVT_MIN16UINT = 57,
559
560 D3D10_SVT_VOID = D3D_SVT_VOID,
561 D3D10_SVT_BOOL = D3D_SVT_BOOL,
562 D3D10_SVT_INT = D3D_SVT_INT,
563 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
564 D3D10_SVT_STRING = D3D_SVT_STRING,
565 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
566 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
567 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
568 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
569 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
570 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
571 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
572 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
573 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
574 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
575 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
576 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
577 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
578 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
579 D3D10_SVT_UINT = D3D_SVT_UINT,
580 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
581 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
582 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
583 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
584 D3D10_SVT_BLEND = D3D_SVT_BLEND,
585 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
586 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
587 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
588 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
589 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
590 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
591 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
592
593 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
594 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
595
596 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
597
598 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
599 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
600
601 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
602 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
603
604 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
605
606 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
607 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
608 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
609 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
610 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
611 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
612
613 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
614 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
615 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
616 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
617 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
618 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
619
620 // force 32-bit size enum
621 D3D_SVT_FORCE_DWORD = 0x7fffffff
622} D3D_SHADER_VARIABLE_TYPE;
623
624typedef enum _D3D_SHADER_INPUT_FLAGS
625{
626 D3D_SIF_USERPACKED = 0x01,
627 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
628 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
629 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
630 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
631 D3D_SIF_UNUSED = 0x10,
632
633 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
634 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
635 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
636 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
637 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
638
639 // force 32-bit size enum
640 D3D_SIF_FORCE_DWORD = 0x7fffffff
641} D3D_SHADER_INPUT_FLAGS;
642
643typedef enum _D3D_SHADER_INPUT_TYPE
644{
645 D3D_SIT_CBUFFER,
646 D3D_SIT_TBUFFER,
647 D3D_SIT_TEXTURE,
648 D3D_SIT_SAMPLER,
649 D3D_SIT_UAV_RWTYPED,
650 D3D_SIT_STRUCTURED,
651 D3D_SIT_UAV_RWSTRUCTURED,
652 D3D_SIT_BYTEADDRESS,
653 D3D_SIT_UAV_RWBYTEADDRESS,
654 D3D_SIT_UAV_APPEND_STRUCTURED,
655 D3D_SIT_UAV_CONSUME_STRUCTURED,
656 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
657 D3D_SIT_RTACCELERATIONSTRUCTURE,
658 D3D_SIT_UAV_FEEDBACKTEXTURE,
659
660 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
661 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
662 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
663 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
664
665 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
666 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
667 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
668 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
669 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
670 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
671 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
672 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
673} D3D_SHADER_INPUT_TYPE;
674
675typedef enum _D3D_SHADER_CBUFFER_FLAGS
676{
677 D3D_CBF_USERPACKED = 1,
678
679 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
680
681 // force 32-bit size enum
682 D3D_CBF_FORCE_DWORD = 0x7fffffff
683} D3D_SHADER_CBUFFER_FLAGS;
684
685typedef enum _D3D_CBUFFER_TYPE
686{
687 D3D_CT_CBUFFER,
688 D3D_CT_TBUFFER,
689 D3D_CT_INTERFACE_POINTERS,
690 D3D_CT_RESOURCE_BIND_INFO,
691
692 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
693 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
694
695 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
696 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
697 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
698 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
699} D3D_CBUFFER_TYPE;
700
701typedef enum D3D_NAME
702{
703 D3D_NAME_UNDEFINED = 0,
704
705 // Names meaningful to both HLSL and hardware
706 D3D_NAME_POSITION = 1,
707 D3D_NAME_CLIP_DISTANCE = 2,
708 D3D_NAME_CULL_DISTANCE = 3,
709 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
710 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
711 D3D_NAME_VERTEX_ID = 6,
712 D3D_NAME_PRIMITIVE_ID = 7,
713 D3D_NAME_INSTANCE_ID = 8,
714 D3D_NAME_IS_FRONT_FACE = 9,
715 D3D_NAME_SAMPLE_INDEX = 10,
716 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
717 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
718 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
719 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
720 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
721 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
722 D3D_NAME_BARYCENTRICS = 23,
723 D3D_NAME_SHADINGRATE = 24,
724 D3D_NAME_CULLPRIMITIVE = 25,
725
726 // Names meaningful to HLSL only
727 D3D_NAME_TARGET = 64,
728 D3D_NAME_DEPTH = 65,
729 D3D_NAME_COVERAGE = 66,
730 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
731 D3D_NAME_DEPTH_LESS_EQUAL = 68,
732 D3D_NAME_STENCIL_REF = 69,
733 D3D_NAME_INNER_COVERAGE = 70,
734
735 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
736 D3D10_NAME_POSITION = D3D_NAME_POSITION,
737 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
738 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
739 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
740 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
741 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
742 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
743 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
744 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
745 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
746 D3D10_NAME_TARGET = D3D_NAME_TARGET,
747 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
748 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
749
750 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
751 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
752 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
753 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
754 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
755 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
756 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
757 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
758
759 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
760 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
761
762 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
763 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
764 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
765} D3D_NAME;
766
767typedef enum D3D_RESOURCE_RETURN_TYPE
768{
769 D3D_RETURN_TYPE_UNORM = 1,
770 D3D_RETURN_TYPE_SNORM = 2,
771 D3D_RETURN_TYPE_SINT = 3,
772 D3D_RETURN_TYPE_UINT = 4,
773 D3D_RETURN_TYPE_FLOAT = 5,
774 D3D_RETURN_TYPE_MIXED = 6,
775 D3D_RETURN_TYPE_DOUBLE = 7,
776 D3D_RETURN_TYPE_CONTINUED = 8,
777
778 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
779 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
780 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
781 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
782 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
783 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
784
785 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
786 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
787 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
788 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
789 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
790 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
791 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
792 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
793} D3D_RESOURCE_RETURN_TYPE;
794
795typedef enum D3D_REGISTER_COMPONENT_TYPE
796{
797 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
798 D3D_REGISTER_COMPONENT_UINT32 = 1,
799 D3D_REGISTER_COMPONENT_SINT32 = 2,
800 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
801
802 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
803 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
804 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
805 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
806} D3D_REGISTER_COMPONENT_TYPE;
807
808typedef enum D3D_TESSELLATOR_DOMAIN
809{
810 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
811 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
812 D3D_TESSELLATOR_DOMAIN_TRI = 2,
813 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
814
815 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
816 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
817 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
818 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
819} D3D_TESSELLATOR_DOMAIN;
820
821typedef enum D3D_TESSELLATOR_PARTITIONING
822{
823 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
824 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
825 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
826 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
827 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
828
829 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
830 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
831 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
832 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
833 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
834} D3D_TESSELLATOR_PARTITIONING;
835
836typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
837{
838 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
839 D3D_TESSELLATOR_OUTPUT_POINT = 1,
840 D3D_TESSELLATOR_OUTPUT_LINE = 2,
841 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
842 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
843
844 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
845 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
846 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
847 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
848 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
849} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
850
851typedef enum D3D_MIN_PRECISION
852{
853 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
854 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
855 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
856 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
857 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
858 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
859
860 // These values are abstractions of width only for use in situations
861 // where a general width is needed instead of specific types. They
862 // will never be used in shader operands.
863 D3D_MIN_PRECISION_ANY_16 = 0xf0,
864 D3D_MIN_PRECISION_ANY_10 = 0xf1,
865} D3D_MIN_PRECISION;
866
867typedef enum D3D_INTERPOLATION_MODE
868{
869 D3D_INTERPOLATION_UNDEFINED = 0,
870 D3D_INTERPOLATION_CONSTANT = 1,
871 D3D_INTERPOLATION_LINEAR = 2,
872 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
873 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
874 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
875 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
876 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
877} D3D_INTERPOLATION_MODE;
878
879// Parameter flags.
880typedef enum _D3D_PARAMETER_FLAGS
881{
882 D3D_PF_NONE = 0x00000000,
883 D3D_PF_IN = 0x00000001,
884 D3D_PF_OUT = 0x00000002,
885 D3D_PF_FORCE_DWORD = 0x7fffffff
886} D3D_PARAMETER_FLAGS;
887
888// Well-Known Private Data IDs (WKPDID_*):
889
890// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
891//
892// const char c_szName[] = "texture.jpg";
893// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
894cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
895cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
896cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
897cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
898
899cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
900cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
901cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
902cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
903
904cpp_quote("#define D3D_COMPONENT_MASK_X 1")
905cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
906cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
907cpp_quote("#define D3D_COMPONENT_MASK_W 8")
908
909cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
910cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
911
diff --git a/contrib/DirectX-Headers/include/directx/d3dx12.h b/contrib/DirectX-Headers/include/directx/d3dx12.h
new file mode 100644
index 0000000..b135598
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dx12.h
@@ -0,0 +1,4049 @@
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
15struct CD3DX12_DEFAULT {};
16extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
17
18//------------------------------------------------------------------------------------------------
19inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
20{
21 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
22 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
23}
24
25//------------------------------------------------------------------------------------------------
26inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
27{ return !( l == r ); }
28
29//------------------------------------------------------------------------------------------------
30struct CD3DX12_RECT : public D3D12_RECT
31{
32 CD3DX12_RECT() = default;
33 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
34 D3D12_RECT( o )
35 {}
36 explicit CD3DX12_RECT(
37 LONG Left,
38 LONG Top,
39 LONG Right,
40 LONG Bottom ) noexcept
41 {
42 left = Left;
43 top = Top;
44 right = Right;
45 bottom = Bottom;
46 }
47};
48
49//------------------------------------------------------------------------------------------------
50struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
51{
52 CD3DX12_VIEWPORT() = default;
53 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
54 D3D12_VIEWPORT( o )
55 {}
56 explicit CD3DX12_VIEWPORT(
57 FLOAT topLeftX,
58 FLOAT topLeftY,
59 FLOAT width,
60 FLOAT height,
61 FLOAT minDepth = D3D12_MIN_DEPTH,
62 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
63 {
64 TopLeftX = topLeftX;
65 TopLeftY = topLeftY;
66 Width = width;
67 Height = height;
68 MinDepth = minDepth;
69 MaxDepth = maxDepth;
70 }
71 explicit CD3DX12_VIEWPORT(
72 _In_ ID3D12Resource* pResource,
73 UINT mipSlice = 0,
74 FLOAT topLeftX = 0.0f,
75 FLOAT topLeftY = 0.0f,
76 FLOAT minDepth = D3D12_MIN_DEPTH,
77 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
78 {
79 auto Desc = pResource->GetDesc();
80 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
81 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
82 switch (Desc.Dimension)
83 {
84 case D3D12_RESOURCE_DIMENSION_BUFFER:
85 TopLeftX = topLeftX;
86 TopLeftY = 0.0f;
87 Width = float(Desc.Width) - topLeftX;
88 Height = 1.0f;
89 break;
90 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
91 TopLeftX = topLeftX;
92 TopLeftY = 0.0f;
93 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
94 Height = 1.0f;
95 break;
96 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
97 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
98 TopLeftX = topLeftX;
99 TopLeftY = topLeftY;
100 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
101 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
102 break;
103 default: break;
104 }
105
106 MinDepth = minDepth;
107 MaxDepth = maxDepth;
108 }
109};
110
111//------------------------------------------------------------------------------------------------
112struct CD3DX12_BOX : public D3D12_BOX
113{
114 CD3DX12_BOX() = default;
115 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
116 D3D12_BOX( o )
117 {}
118 explicit CD3DX12_BOX(
119 LONG Left,
120 LONG Right ) noexcept
121 {
122 left = static_cast<UINT>(Left);
123 top = 0;
124 front = 0;
125 right = static_cast<UINT>(Right);
126 bottom = 1;
127 back = 1;
128 }
129 explicit CD3DX12_BOX(
130 LONG Left,
131 LONG Top,
132 LONG Right,
133 LONG Bottom ) noexcept
134 {
135 left = static_cast<UINT>(Left);
136 top = static_cast<UINT>(Top);
137 front = 0;
138 right = static_cast<UINT>(Right);
139 bottom = static_cast<UINT>(Bottom);
140 back = 1;
141 }
142 explicit CD3DX12_BOX(
143 LONG Left,
144 LONG Top,
145 LONG Front,
146 LONG Right,
147 LONG Bottom,
148 LONG Back ) noexcept
149 {
150 left = static_cast<UINT>(Left);
151 top = static_cast<UINT>(Top);
152 front = static_cast<UINT>(Front);
153 right = static_cast<UINT>(Right);
154 bottom = static_cast<UINT>(Bottom);
155 back = static_cast<UINT>(Back);
156 }
157};
158inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
159{
160 return l.left == r.left && l.top == r.top && l.front == r.front &&
161 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
162}
163inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
164{ return !( l == r ); }
165
166//------------------------------------------------------------------------------------------------
167struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
168{
169 CD3DX12_DEPTH_STENCIL_DESC() = default;
170 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
171 D3D12_DEPTH_STENCIL_DESC( o )
172 {}
173 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
174 {
175 DepthEnable = TRUE;
176 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
177 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
178 StencilEnable = FALSE;
179 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
180 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
181 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
182 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
183 FrontFace = defaultStencilOp;
184 BackFace = defaultStencilOp;
185 }
186 explicit CD3DX12_DEPTH_STENCIL_DESC(
187 BOOL depthEnable,
188 D3D12_DEPTH_WRITE_MASK depthWriteMask,
189 D3D12_COMPARISON_FUNC depthFunc,
190 BOOL stencilEnable,
191 UINT8 stencilReadMask,
192 UINT8 stencilWriteMask,
193 D3D12_STENCIL_OP frontStencilFailOp,
194 D3D12_STENCIL_OP frontStencilDepthFailOp,
195 D3D12_STENCIL_OP frontStencilPassOp,
196 D3D12_COMPARISON_FUNC frontStencilFunc,
197 D3D12_STENCIL_OP backStencilFailOp,
198 D3D12_STENCIL_OP backStencilDepthFailOp,
199 D3D12_STENCIL_OP backStencilPassOp,
200 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
201 {
202 DepthEnable = depthEnable;
203 DepthWriteMask = depthWriteMask;
204 DepthFunc = depthFunc;
205 StencilEnable = stencilEnable;
206 StencilReadMask = stencilReadMask;
207 StencilWriteMask = stencilWriteMask;
208 FrontFace.StencilFailOp = frontStencilFailOp;
209 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
210 FrontFace.StencilPassOp = frontStencilPassOp;
211 FrontFace.StencilFunc = frontStencilFunc;
212 BackFace.StencilFailOp = backStencilFailOp;
213 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
214 BackFace.StencilPassOp = backStencilPassOp;
215 BackFace.StencilFunc = backStencilFunc;
216 }
217};
218
219//------------------------------------------------------------------------------------------------
220struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
221{
222 CD3DX12_DEPTH_STENCIL_DESC1() = default;
223 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
224 D3D12_DEPTH_STENCIL_DESC1( o )
225 {}
226 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
227 {
228 DepthEnable = o.DepthEnable;
229 DepthWriteMask = o.DepthWriteMask;
230 DepthFunc = o.DepthFunc;
231 StencilEnable = o.StencilEnable;
232 StencilReadMask = o.StencilReadMask;
233 StencilWriteMask = o.StencilWriteMask;
234 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
235 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
236 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
237 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
238 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
239 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
240 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
241 BackFace.StencilFunc = o.BackFace.StencilFunc;
242 DepthBoundsTestEnable = FALSE;
243 }
244 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
245 {
246 DepthEnable = TRUE;
247 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
248 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
249 StencilEnable = FALSE;
250 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
251 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
252 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
253 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
254 FrontFace = defaultStencilOp;
255 BackFace = defaultStencilOp;
256 DepthBoundsTestEnable = FALSE;
257 }
258 explicit CD3DX12_DEPTH_STENCIL_DESC1(
259 BOOL depthEnable,
260 D3D12_DEPTH_WRITE_MASK depthWriteMask,
261 D3D12_COMPARISON_FUNC depthFunc,
262 BOOL stencilEnable,
263 UINT8 stencilReadMask,
264 UINT8 stencilWriteMask,
265 D3D12_STENCIL_OP frontStencilFailOp,
266 D3D12_STENCIL_OP frontStencilDepthFailOp,
267 D3D12_STENCIL_OP frontStencilPassOp,
268 D3D12_COMPARISON_FUNC frontStencilFunc,
269 D3D12_STENCIL_OP backStencilFailOp,
270 D3D12_STENCIL_OP backStencilDepthFailOp,
271 D3D12_STENCIL_OP backStencilPassOp,
272 D3D12_COMPARISON_FUNC backStencilFunc,
273 BOOL depthBoundsTestEnable ) noexcept
274 {
275 DepthEnable = depthEnable;
276 DepthWriteMask = depthWriteMask;
277 DepthFunc = depthFunc;
278 StencilEnable = stencilEnable;
279 StencilReadMask = stencilReadMask;
280 StencilWriteMask = stencilWriteMask;
281 FrontFace.StencilFailOp = frontStencilFailOp;
282 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
283 FrontFace.StencilPassOp = frontStencilPassOp;
284 FrontFace.StencilFunc = frontStencilFunc;
285 BackFace.StencilFailOp = backStencilFailOp;
286 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
287 BackFace.StencilPassOp = backStencilPassOp;
288 BackFace.StencilFunc = backStencilFunc;
289 DepthBoundsTestEnable = depthBoundsTestEnable;
290 }
291 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
292 {
293 D3D12_DEPTH_STENCIL_DESC D;
294 D.DepthEnable = DepthEnable;
295 D.DepthWriteMask = DepthWriteMask;
296 D.DepthFunc = DepthFunc;
297 D.StencilEnable = StencilEnable;
298 D.StencilReadMask = StencilReadMask;
299 D.StencilWriteMask = StencilWriteMask;
300 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
301 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
302 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
303 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
304 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
305 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
306 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
307 D.BackFace.StencilFunc = BackFace.StencilFunc;
308 return D;
309 }
310};
311
312//------------------------------------------------------------------------------------------------
313struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
314{
315 CD3DX12_BLEND_DESC() = default;
316 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
317 D3D12_BLEND_DESC( o )
318 {}
319 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
320 {
321 AlphaToCoverageEnable = FALSE;
322 IndependentBlendEnable = FALSE;
323 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
324 {
325 FALSE,FALSE,
326 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
327 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
328 D3D12_LOGIC_OP_NOOP,
329 D3D12_COLOR_WRITE_ENABLE_ALL,
330 };
331 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
332 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
333 }
334};
335
336//------------------------------------------------------------------------------------------------
337struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
338{
339 CD3DX12_RASTERIZER_DESC() = default;
340 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
341 D3D12_RASTERIZER_DESC( o )
342 {}
343 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
344 {
345 FillMode = D3D12_FILL_MODE_SOLID;
346 CullMode = D3D12_CULL_MODE_BACK;
347 FrontCounterClockwise = FALSE;
348 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
349 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
350 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
351 DepthClipEnable = TRUE;
352 MultisampleEnable = FALSE;
353 AntialiasedLineEnable = FALSE;
354 ForcedSampleCount = 0;
355 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
356 }
357 explicit CD3DX12_RASTERIZER_DESC(
358 D3D12_FILL_MODE fillMode,
359 D3D12_CULL_MODE cullMode,
360 BOOL frontCounterClockwise,
361 INT depthBias,
362 FLOAT depthBiasClamp,
363 FLOAT slopeScaledDepthBias,
364 BOOL depthClipEnable,
365 BOOL multisampleEnable,
366 BOOL antialiasedLineEnable,
367 UINT forcedSampleCount,
368 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
369 {
370 FillMode = fillMode;
371 CullMode = cullMode;
372 FrontCounterClockwise = frontCounterClockwise;
373 DepthBias = depthBias;
374 DepthBiasClamp = depthBiasClamp;
375 SlopeScaledDepthBias = slopeScaledDepthBias;
376 DepthClipEnable = depthClipEnable;
377 MultisampleEnable = multisampleEnable;
378 AntialiasedLineEnable = antialiasedLineEnable;
379 ForcedSampleCount = forcedSampleCount;
380 ConservativeRaster = conservativeRaster;
381 }
382};
383
384//------------------------------------------------------------------------------------------------
385struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
386{
387 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
388 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
389 D3D12_RESOURCE_ALLOCATION_INFO( o )
390 {}
391 CD3DX12_RESOURCE_ALLOCATION_INFO(
392 UINT64 size,
393 UINT64 alignment ) noexcept
394 {
395 SizeInBytes = size;
396 Alignment = alignment;
397 }
398};
399
400//------------------------------------------------------------------------------------------------
401struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
402{
403 CD3DX12_HEAP_PROPERTIES() = default;
404 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
405 D3D12_HEAP_PROPERTIES(o)
406 {}
407 CD3DX12_HEAP_PROPERTIES(
408 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
409 D3D12_MEMORY_POOL memoryPoolPreference,
410 UINT creationNodeMask = 1,
411 UINT nodeMask = 1 ) noexcept
412 {
413 Type = D3D12_HEAP_TYPE_CUSTOM;
414 CPUPageProperty = cpuPageProperty;
415 MemoryPoolPreference = memoryPoolPreference;
416 CreationNodeMask = creationNodeMask;
417 VisibleNodeMask = nodeMask;
418 }
419 explicit CD3DX12_HEAP_PROPERTIES(
420 D3D12_HEAP_TYPE type,
421 UINT creationNodeMask = 1,
422 UINT nodeMask = 1 ) noexcept
423 {
424 Type = type;
425 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
426 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
427 CreationNodeMask = creationNodeMask;
428 VisibleNodeMask = nodeMask;
429 }
430 bool IsCPUAccessible() const noexcept
431 {
432 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM &&
433 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
434 }
435};
436inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
437{
438 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
439 l.MemoryPoolPreference == r.MemoryPoolPreference &&
440 l.CreationNodeMask == r.CreationNodeMask &&
441 l.VisibleNodeMask == r.VisibleNodeMask;
442}
443inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
444{ return !( l == r ); }
445
446//------------------------------------------------------------------------------------------------
447struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
448{
449 CD3DX12_HEAP_DESC() = default;
450 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
451 D3D12_HEAP_DESC(o)
452 {}
453 CD3DX12_HEAP_DESC(
454 UINT64 size,
455 D3D12_HEAP_PROPERTIES properties,
456 UINT64 alignment = 0,
457 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
458 {
459 SizeInBytes = size;
460 Properties = properties;
461 Alignment = alignment;
462 Flags = flags;
463 }
464 CD3DX12_HEAP_DESC(
465 UINT64 size,
466 D3D12_HEAP_TYPE type,
467 UINT64 alignment = 0,
468 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
469 {
470 SizeInBytes = size;
471 Properties = CD3DX12_HEAP_PROPERTIES( type );
472 Alignment = alignment;
473 Flags = flags;
474 }
475 CD3DX12_HEAP_DESC(
476 UINT64 size,
477 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
478 D3D12_MEMORY_POOL memoryPoolPreference,
479 UINT64 alignment = 0,
480 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
481 {
482 SizeInBytes = size;
483 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
484 Alignment = alignment;
485 Flags = flags;
486 }
487 CD3DX12_HEAP_DESC(
488 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
489 D3D12_HEAP_PROPERTIES properties,
490 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
491 {
492 SizeInBytes = resAllocInfo.SizeInBytes;
493 Properties = properties;
494 Alignment = resAllocInfo.Alignment;
495 Flags = flags;
496 }
497 CD3DX12_HEAP_DESC(
498 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
499 D3D12_HEAP_TYPE type,
500 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
501 {
502 SizeInBytes = resAllocInfo.SizeInBytes;
503 Properties = CD3DX12_HEAP_PROPERTIES( type );
504 Alignment = resAllocInfo.Alignment;
505 Flags = flags;
506 }
507 CD3DX12_HEAP_DESC(
508 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
509 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
510 D3D12_MEMORY_POOL memoryPoolPreference,
511 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
512 {
513 SizeInBytes = resAllocInfo.SizeInBytes;
514 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
515 Alignment = resAllocInfo.Alignment;
516 Flags = flags;
517 }
518 bool IsCPUAccessible() const noexcept
519 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
520};
521inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
522{
523 return l.SizeInBytes == r.SizeInBytes &&
524 l.Properties == r.Properties &&
525 l.Alignment == r.Alignment &&
526 l.Flags == r.Flags;
527}
528inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
529{ return !( l == r ); }
530
531//------------------------------------------------------------------------------------------------
532struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
533{
534 CD3DX12_CLEAR_VALUE() = default;
535 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
536 D3D12_CLEAR_VALUE(o)
537 {}
538 CD3DX12_CLEAR_VALUE(
539 DXGI_FORMAT format,
540 const FLOAT color[4] ) noexcept
541 {
542 Format = format;
543 memcpy( Color, color, sizeof( Color ) );
544 }
545 CD3DX12_CLEAR_VALUE(
546 DXGI_FORMAT format,
547 FLOAT depth,
548 UINT8 stencil ) noexcept
549 {
550 Format = format;
551 memset( &Color, 0, sizeof( Color ) );
552 /* Use memcpy to preserve NAN values */
553 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
554 DepthStencil.Stencil = stencil;
555 }
556};
557
558//------------------------------------------------------------------------------------------------
559struct CD3DX12_RANGE : public D3D12_RANGE
560{
561 CD3DX12_RANGE() = default;
562 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
563 D3D12_RANGE(o)
564 {}
565 CD3DX12_RANGE(
566 SIZE_T begin,
567 SIZE_T end ) noexcept
568 {
569 Begin = begin;
570 End = end;
571 }
572};
573
574//------------------------------------------------------------------------------------------------
575struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
576{
577 CD3DX12_RANGE_UINT64() = default;
578 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
579 D3D12_RANGE_UINT64(o)
580 {}
581 CD3DX12_RANGE_UINT64(
582 UINT64 begin,
583 UINT64 end ) noexcept
584 {
585 Begin = begin;
586 End = end;
587 }
588};
589
590//------------------------------------------------------------------------------------------------
591struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
592{
593 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
594 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
595 D3D12_SUBRESOURCE_RANGE_UINT64(o)
596 {}
597 CD3DX12_SUBRESOURCE_RANGE_UINT64(
598 UINT subresource,
599 const D3D12_RANGE_UINT64& range ) noexcept
600 {
601 Subresource = subresource;
602 Range = range;
603 }
604 CD3DX12_SUBRESOURCE_RANGE_UINT64(
605 UINT subresource,
606 UINT64 begin,
607 UINT64 end ) noexcept
608 {
609 Subresource = subresource;
610 Range.Begin = begin;
611 Range.End = end;
612 }
613};
614
615//------------------------------------------------------------------------------------------------
616struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
617{
618 CD3DX12_SHADER_BYTECODE() = default;
619 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
620 D3D12_SHADER_BYTECODE(o)
621 {}
622 CD3DX12_SHADER_BYTECODE(
623 _In_ ID3DBlob* pShaderBlob ) noexcept
624 {
625 pShaderBytecode = pShaderBlob->GetBufferPointer();
626 BytecodeLength = pShaderBlob->GetBufferSize();
627 }
628 CD3DX12_SHADER_BYTECODE(
629 const void* _pShaderBytecode,
630 SIZE_T bytecodeLength ) noexcept
631 {
632 pShaderBytecode = _pShaderBytecode;
633 BytecodeLength = bytecodeLength;
634 }
635};
636
637//------------------------------------------------------------------------------------------------
638struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
639{
640 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
641 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
642 D3D12_TILED_RESOURCE_COORDINATE(o)
643 {}
644 CD3DX12_TILED_RESOURCE_COORDINATE(
645 UINT x,
646 UINT y,
647 UINT z,
648 UINT subresource ) noexcept
649 {
650 X = x;
651 Y = y;
652 Z = z;
653 Subresource = subresource;
654 }
655};
656
657//------------------------------------------------------------------------------------------------
658struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
659{
660 CD3DX12_TILE_REGION_SIZE() = default;
661 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
662 D3D12_TILE_REGION_SIZE(o)
663 {}
664 CD3DX12_TILE_REGION_SIZE(
665 UINT numTiles,
666 BOOL useBox,
667 UINT width,
668 UINT16 height,
669 UINT16 depth ) noexcept
670 {
671 NumTiles = numTiles;
672 UseBox = useBox;
673 Width = width;
674 Height = height;
675 Depth = depth;
676 }
677};
678
679//------------------------------------------------------------------------------------------------
680struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
681{
682 CD3DX12_SUBRESOURCE_TILING() = default;
683 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
684 D3D12_SUBRESOURCE_TILING(o)
685 {}
686 CD3DX12_SUBRESOURCE_TILING(
687 UINT widthInTiles,
688 UINT16 heightInTiles,
689 UINT16 depthInTiles,
690 UINT startTileIndexInOverallResource ) noexcept
691 {
692 WidthInTiles = widthInTiles;
693 HeightInTiles = heightInTiles;
694 DepthInTiles = depthInTiles;
695 StartTileIndexInOverallResource = startTileIndexInOverallResource;
696 }
697};
698
699//------------------------------------------------------------------------------------------------
700struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
701{
702 CD3DX12_TILE_SHAPE() = default;
703 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
704 D3D12_TILE_SHAPE(o)
705 {}
706 CD3DX12_TILE_SHAPE(
707 UINT widthInTexels,
708 UINT heightInTexels,
709 UINT depthInTexels ) noexcept
710 {
711 WidthInTexels = widthInTexels;
712 HeightInTexels = heightInTexels;
713 DepthInTexels = depthInTexels;
714 }
715};
716
717//------------------------------------------------------------------------------------------------
718struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
719{
720 CD3DX12_RESOURCE_BARRIER() = default;
721 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
722 D3D12_RESOURCE_BARRIER(o)
723 {}
724 static inline CD3DX12_RESOURCE_BARRIER Transition(
725 _In_ ID3D12Resource* pResource,
726 D3D12_RESOURCE_STATES stateBefore,
727 D3D12_RESOURCE_STATES stateAfter,
728 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
729 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
730 {
731 CD3DX12_RESOURCE_BARRIER result = {};
732 D3D12_RESOURCE_BARRIER &barrier = result;
733 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
734 result.Flags = flags;
735 barrier.Transition.pResource = pResource;
736 barrier.Transition.StateBefore = stateBefore;
737 barrier.Transition.StateAfter = stateAfter;
738 barrier.Transition.Subresource = subresource;
739 return result;
740 }
741 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
742 _In_ ID3D12Resource* pResourceBefore,
743 _In_ ID3D12Resource* pResourceAfter) noexcept
744 {
745 CD3DX12_RESOURCE_BARRIER result = {};
746 D3D12_RESOURCE_BARRIER &barrier = result;
747 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
748 barrier.Aliasing.pResourceBefore = pResourceBefore;
749 barrier.Aliasing.pResourceAfter = pResourceAfter;
750 return result;
751 }
752 static inline CD3DX12_RESOURCE_BARRIER UAV(
753 _In_ ID3D12Resource* pResource) noexcept
754 {
755 CD3DX12_RESOURCE_BARRIER result = {};
756 D3D12_RESOURCE_BARRIER &barrier = result;
757 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
758 barrier.UAV.pResource = pResource;
759 return result;
760 }
761};
762
763//------------------------------------------------------------------------------------------------
764struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
765{
766 CD3DX12_PACKED_MIP_INFO() = default;
767 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
768 D3D12_PACKED_MIP_INFO(o)
769 {}
770 CD3DX12_PACKED_MIP_INFO(
771 UINT8 numStandardMips,
772 UINT8 numPackedMips,
773 UINT numTilesForPackedMips,
774 UINT startTileIndexInOverallResource ) noexcept
775 {
776 NumStandardMips = numStandardMips;
777 NumPackedMips = numPackedMips;
778 NumTilesForPackedMips = numTilesForPackedMips;
779 StartTileIndexInOverallResource = startTileIndexInOverallResource;
780 }
781};
782
783//------------------------------------------------------------------------------------------------
784struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
785{
786 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
787 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
788 D3D12_SUBRESOURCE_FOOTPRINT(o)
789 {}
790 CD3DX12_SUBRESOURCE_FOOTPRINT(
791 DXGI_FORMAT format,
792 UINT width,
793 UINT height,
794 UINT depth,
795 UINT rowPitch ) noexcept
796 {
797 Format = format;
798 Width = width;
799 Height = height;
800 Depth = depth;
801 RowPitch = rowPitch;
802 }
803 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
804 const D3D12_RESOURCE_DESC& resDesc,
805 UINT rowPitch ) noexcept
806 {
807 Format = resDesc.Format;
808 Width = UINT( resDesc.Width );
809 Height = resDesc.Height;
810 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1);
811 RowPitch = rowPitch;
812 }
813};
814
815//------------------------------------------------------------------------------------------------
816struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
817{
818 CD3DX12_TEXTURE_COPY_LOCATION() = default;
819 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
820 D3D12_TEXTURE_COPY_LOCATION(o)
821 {}
822 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
823 {
824 pResource = pRes;
825 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
826 PlacedFootprint = {};
827 }
828 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
829 {
830 pResource = pRes;
831 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
832 PlacedFootprint = Footprint;
833 }
834 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
835 {
836 pResource = pRes;
837 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
838 PlacedFootprint = {};
839 SubresourceIndex = Sub;
840 }
841};
842
843//------------------------------------------------------------------------------------------------
844struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
845{
846 CD3DX12_DESCRIPTOR_RANGE() = default;
847 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
848 D3D12_DESCRIPTOR_RANGE(o)
849 {}
850 CD3DX12_DESCRIPTOR_RANGE(
851 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
852 UINT numDescriptors,
853 UINT baseShaderRegister,
854 UINT registerSpace = 0,
855 UINT offsetInDescriptorsFromTableStart =
856 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
857 {
858 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
859 }
860
861 inline void Init(
862 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
863 UINT numDescriptors,
864 UINT baseShaderRegister,
865 UINT registerSpace = 0,
866 UINT offsetInDescriptorsFromTableStart =
867 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
868 {
869 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
870 }
871
872 static inline void Init(
873 _Out_ D3D12_DESCRIPTOR_RANGE &range,
874 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
875 UINT numDescriptors,
876 UINT baseShaderRegister,
877 UINT registerSpace = 0,
878 UINT offsetInDescriptorsFromTableStart =
879 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
880 {
881 range.RangeType = rangeType;
882 range.NumDescriptors = numDescriptors;
883 range.BaseShaderRegister = baseShaderRegister;
884 range.RegisterSpace = registerSpace;
885 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
886 }
887};
888
889//------------------------------------------------------------------------------------------------
890struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
891{
892 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
893 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
894 D3D12_ROOT_DESCRIPTOR_TABLE(o)
895 {}
896 CD3DX12_ROOT_DESCRIPTOR_TABLE(
897 UINT numDescriptorRanges,
898 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
899 {
900 Init(numDescriptorRanges, _pDescriptorRanges);
901 }
902
903 inline void Init(
904 UINT numDescriptorRanges,
905 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
906 {
907 Init(*this, numDescriptorRanges, _pDescriptorRanges);
908 }
909
910 static inline void Init(
911 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
912 UINT numDescriptorRanges,
913 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
914 {
915 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
916 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
917 }
918};
919
920//------------------------------------------------------------------------------------------------
921struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
922{
923 CD3DX12_ROOT_CONSTANTS() = default;
924 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
925 D3D12_ROOT_CONSTANTS(o)
926 {}
927 CD3DX12_ROOT_CONSTANTS(
928 UINT num32BitValues,
929 UINT shaderRegister,
930 UINT registerSpace = 0) noexcept
931 {
932 Init(num32BitValues, shaderRegister, registerSpace);
933 }
934
935 inline void Init(
936 UINT num32BitValues,
937 UINT shaderRegister,
938 UINT registerSpace = 0) noexcept
939 {
940 Init(*this, num32BitValues, shaderRegister, registerSpace);
941 }
942
943 static inline void Init(
944 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
945 UINT num32BitValues,
946 UINT shaderRegister,
947 UINT registerSpace = 0) noexcept
948 {
949 rootConstants.Num32BitValues = num32BitValues;
950 rootConstants.ShaderRegister = shaderRegister;
951 rootConstants.RegisterSpace = registerSpace;
952 }
953};
954
955//------------------------------------------------------------------------------------------------
956struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
957{
958 CD3DX12_ROOT_DESCRIPTOR() = default;
959 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
960 D3D12_ROOT_DESCRIPTOR(o)
961 {}
962 CD3DX12_ROOT_DESCRIPTOR(
963 UINT shaderRegister,
964 UINT registerSpace = 0) noexcept
965 {
966 Init(shaderRegister, registerSpace);
967 }
968
969 inline void Init(
970 UINT shaderRegister,
971 UINT registerSpace = 0) noexcept
972 {
973 Init(*this, shaderRegister, registerSpace);
974 }
975
976 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
977 {
978 table.ShaderRegister = shaderRegister;
979 table.RegisterSpace = registerSpace;
980 }
981};
982
983//------------------------------------------------------------------------------------------------
984struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
985{
986 CD3DX12_ROOT_PARAMETER() = default;
987 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
988 D3D12_ROOT_PARAMETER(o)
989 {}
990
991 static inline void InitAsDescriptorTable(
992 _Out_ D3D12_ROOT_PARAMETER &rootParam,
993 UINT numDescriptorRanges,
994 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
995 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
996 {
997 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
998 rootParam.ShaderVisibility = visibility;
999 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1000 }
1001
1002 static inline void InitAsConstants(
1003 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1004 UINT num32BitValues,
1005 UINT shaderRegister,
1006 UINT registerSpace = 0,
1007 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1008 {
1009 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1010 rootParam.ShaderVisibility = visibility;
1011 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1012 }
1013
1014 static inline void InitAsConstantBufferView(
1015 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1016 UINT shaderRegister,
1017 UINT registerSpace = 0,
1018 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1019 {
1020 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1021 rootParam.ShaderVisibility = visibility;
1022 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1023 }
1024
1025 static inline void InitAsShaderResourceView(
1026 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1027 UINT shaderRegister,
1028 UINT registerSpace = 0,
1029 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1030 {
1031 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1032 rootParam.ShaderVisibility = visibility;
1033 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1034 }
1035
1036 static inline void InitAsUnorderedAccessView(
1037 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1038 UINT shaderRegister,
1039 UINT registerSpace = 0,
1040 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1041 {
1042 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1043 rootParam.ShaderVisibility = visibility;
1044 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1045 }
1046
1047 inline void InitAsDescriptorTable(
1048 UINT numDescriptorRanges,
1049 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
1050 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1051 {
1052 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1053 }
1054
1055 inline void InitAsConstants(
1056 UINT num32BitValues,
1057 UINT shaderRegister,
1058 UINT registerSpace = 0,
1059 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1060 {
1061 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1062 }
1063
1064 inline void InitAsConstantBufferView(
1065 UINT shaderRegister,
1066 UINT registerSpace = 0,
1067 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1068 {
1069 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
1070 }
1071
1072 inline void InitAsShaderResourceView(
1073 UINT shaderRegister,
1074 UINT registerSpace = 0,
1075 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1076 {
1077 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
1078 }
1079
1080 inline void InitAsUnorderedAccessView(
1081 UINT shaderRegister,
1082 UINT registerSpace = 0,
1083 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1084 {
1085 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
1086 }
1087};
1088
1089//------------------------------------------------------------------------------------------------
1090struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
1091{
1092 CD3DX12_STATIC_SAMPLER_DESC() = default;
1093 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
1094 D3D12_STATIC_SAMPLER_DESC(o)
1095 {}
1096 CD3DX12_STATIC_SAMPLER_DESC(
1097 UINT shaderRegister,
1098 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1099 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1100 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1101 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1102 FLOAT mipLODBias = 0,
1103 UINT maxAnisotropy = 16,
1104 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1105 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1106 FLOAT minLOD = 0.f,
1107 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1108 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1109 UINT registerSpace = 0) noexcept
1110 {
1111 Init(
1112 shaderRegister,
1113 filter,
1114 addressU,
1115 addressV,
1116 addressW,
1117 mipLODBias,
1118 maxAnisotropy,
1119 comparisonFunc,
1120 borderColor,
1121 minLOD,
1122 maxLOD,
1123 shaderVisibility,
1124 registerSpace);
1125 }
1126
1127 static inline void Init(
1128 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
1129 UINT shaderRegister,
1130 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1131 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1132 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1133 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1134 FLOAT mipLODBias = 0,
1135 UINT maxAnisotropy = 16,
1136 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1137 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1138 FLOAT minLOD = 0.f,
1139 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1140 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1141 UINT registerSpace = 0) noexcept
1142 {
1143 samplerDesc.ShaderRegister = shaderRegister;
1144 samplerDesc.Filter = filter;
1145 samplerDesc.AddressU = addressU;
1146 samplerDesc.AddressV = addressV;
1147 samplerDesc.AddressW = addressW;
1148 samplerDesc.MipLODBias = mipLODBias;
1149 samplerDesc.MaxAnisotropy = maxAnisotropy;
1150 samplerDesc.ComparisonFunc = comparisonFunc;
1151 samplerDesc.BorderColor = borderColor;
1152 samplerDesc.MinLOD = minLOD;
1153 samplerDesc.MaxLOD = maxLOD;
1154 samplerDesc.ShaderVisibility = shaderVisibility;
1155 samplerDesc.RegisterSpace = registerSpace;
1156 }
1157 inline void Init(
1158 UINT shaderRegister,
1159 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1160 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1161 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1162 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1163 FLOAT mipLODBias = 0,
1164 UINT maxAnisotropy = 16,
1165 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1166 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1167 FLOAT minLOD = 0.f,
1168 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1169 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1170 UINT registerSpace = 0) noexcept
1171 {
1172 Init(
1173 *this,
1174 shaderRegister,
1175 filter,
1176 addressU,
1177 addressV,
1178 addressW,
1179 mipLODBias,
1180 maxAnisotropy,
1181 comparisonFunc,
1182 borderColor,
1183 minLOD,
1184 maxLOD,
1185 shaderVisibility,
1186 registerSpace);
1187 }
1188
1189};
1190
1191//------------------------------------------------------------------------------------------------
1192struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
1193{
1194 CD3DX12_ROOT_SIGNATURE_DESC() = default;
1195 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
1196 D3D12_ROOT_SIGNATURE_DESC(o)
1197 {}
1198 CD3DX12_ROOT_SIGNATURE_DESC(
1199 UINT numParameters,
1200 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1201 UINT numStaticSamplers = 0,
1202 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1203 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1204 {
1205 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1206 }
1207 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1208 {
1209 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1210 }
1211
1212 inline void Init(
1213 UINT numParameters,
1214 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1215 UINT numStaticSamplers = 0,
1216 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1217 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1218 {
1219 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1220 }
1221
1222 static inline void Init(
1223 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
1224 UINT numParameters,
1225 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1226 UINT numStaticSamplers = 0,
1227 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1228 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1229 {
1230 desc.NumParameters = numParameters;
1231 desc.pParameters = _pParameters;
1232 desc.NumStaticSamplers = numStaticSamplers;
1233 desc.pStaticSamplers = _pStaticSamplers;
1234 desc.Flags = flags;
1235 }
1236};
1237
1238//------------------------------------------------------------------------------------------------
1239struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
1240{
1241 CD3DX12_DESCRIPTOR_RANGE1() = default;
1242 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
1243 D3D12_DESCRIPTOR_RANGE1(o)
1244 {}
1245 CD3DX12_DESCRIPTOR_RANGE1(
1246 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1247 UINT numDescriptors,
1248 UINT baseShaderRegister,
1249 UINT registerSpace = 0,
1250 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1251 UINT offsetInDescriptorsFromTableStart =
1252 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1253 {
1254 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1255 }
1256
1257 inline void Init(
1258 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1259 UINT numDescriptors,
1260 UINT baseShaderRegister,
1261 UINT registerSpace = 0,
1262 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1263 UINT offsetInDescriptorsFromTableStart =
1264 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1265 {
1266 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1267 }
1268
1269 static inline void Init(
1270 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
1271 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1272 UINT numDescriptors,
1273 UINT baseShaderRegister,
1274 UINT registerSpace = 0,
1275 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1276 UINT offsetInDescriptorsFromTableStart =
1277 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1278 {
1279 range.RangeType = rangeType;
1280 range.NumDescriptors = numDescriptors;
1281 range.BaseShaderRegister = baseShaderRegister;
1282 range.RegisterSpace = registerSpace;
1283 range.Flags = flags;
1284 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
1285 }
1286};
1287
1288//------------------------------------------------------------------------------------------------
1289struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
1290{
1291 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
1292 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
1293 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
1294 {}
1295 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
1296 UINT numDescriptorRanges,
1297 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1298 {
1299 Init(numDescriptorRanges, _pDescriptorRanges);
1300 }
1301
1302 inline void Init(
1303 UINT numDescriptorRanges,
1304 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1305 {
1306 Init(*this, numDescriptorRanges, _pDescriptorRanges);
1307 }
1308
1309 static inline void Init(
1310 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
1311 UINT numDescriptorRanges,
1312 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1313 {
1314 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
1315 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
1316 }
1317};
1318
1319//------------------------------------------------------------------------------------------------
1320struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
1321{
1322 CD3DX12_ROOT_DESCRIPTOR1() = default;
1323 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
1324 D3D12_ROOT_DESCRIPTOR1(o)
1325 {}
1326 CD3DX12_ROOT_DESCRIPTOR1(
1327 UINT shaderRegister,
1328 UINT registerSpace = 0,
1329 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1330 {
1331 Init(shaderRegister, registerSpace, flags);
1332 }
1333
1334 inline void Init(
1335 UINT shaderRegister,
1336 UINT registerSpace = 0,
1337 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1338 {
1339 Init(*this, shaderRegister, registerSpace, flags);
1340 }
1341
1342 static inline void Init(
1343 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
1344 UINT shaderRegister,
1345 UINT registerSpace = 0,
1346 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1347 {
1348 table.ShaderRegister = shaderRegister;
1349 table.RegisterSpace = registerSpace;
1350 table.Flags = flags;
1351 }
1352};
1353
1354//------------------------------------------------------------------------------------------------
1355struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
1356{
1357 CD3DX12_ROOT_PARAMETER1() = default;
1358 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
1359 D3D12_ROOT_PARAMETER1(o)
1360 {}
1361
1362 static inline void InitAsDescriptorTable(
1363 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1364 UINT numDescriptorRanges,
1365 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1366 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1367 {
1368 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
1369 rootParam.ShaderVisibility = visibility;
1370 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1371 }
1372
1373 static inline void InitAsConstants(
1374 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1375 UINT num32BitValues,
1376 UINT shaderRegister,
1377 UINT registerSpace = 0,
1378 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1379 {
1380 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1381 rootParam.ShaderVisibility = visibility;
1382 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1383 }
1384
1385 static inline void InitAsConstantBufferView(
1386 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1387 UINT shaderRegister,
1388 UINT registerSpace = 0,
1389 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1390 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1391 {
1392 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1393 rootParam.ShaderVisibility = visibility;
1394 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1395 }
1396
1397 static inline void InitAsShaderResourceView(
1398 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1399 UINT shaderRegister,
1400 UINT registerSpace = 0,
1401 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1402 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1403 {
1404 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1405 rootParam.ShaderVisibility = visibility;
1406 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1407 }
1408
1409 static inline void InitAsUnorderedAccessView(
1410 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1411 UINT shaderRegister,
1412 UINT registerSpace = 0,
1413 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1414 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1415 {
1416 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1417 rootParam.ShaderVisibility = visibility;
1418 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1419 }
1420
1421 inline void InitAsDescriptorTable(
1422 UINT numDescriptorRanges,
1423 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1424 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1425 {
1426 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1427 }
1428
1429 inline void InitAsConstants(
1430 UINT num32BitValues,
1431 UINT shaderRegister,
1432 UINT registerSpace = 0,
1433 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1434 {
1435 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1436 }
1437
1438 inline void InitAsConstantBufferView(
1439 UINT shaderRegister,
1440 UINT registerSpace = 0,
1441 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1442 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1443 {
1444 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
1445 }
1446
1447 inline void InitAsShaderResourceView(
1448 UINT shaderRegister,
1449 UINT registerSpace = 0,
1450 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1451 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1452 {
1453 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
1454 }
1455
1456 inline void InitAsUnorderedAccessView(
1457 UINT shaderRegister,
1458 UINT registerSpace = 0,
1459 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1460 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1461 {
1462 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
1463 }
1464};
1465
1466//------------------------------------------------------------------------------------------------
1467struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
1468{
1469 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
1470 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
1471 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
1472 {}
1473 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
1474 {
1475 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1476 Desc_1_0 = o;
1477 }
1478 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
1479 {
1480 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1481 Desc_1_1 = o;
1482 }
1483 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1484 UINT numParameters,
1485 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1486 UINT numStaticSamplers = 0,
1487 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1488 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1489 {
1490 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1491 }
1492 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1493 UINT numParameters,
1494 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1495 UINT numStaticSamplers = 0,
1496 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1497 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1498 {
1499 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1500 }
1501 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1502 {
1503 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1504 }
1505
1506 inline void Init_1_0(
1507 UINT numParameters,
1508 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1509 UINT numStaticSamplers = 0,
1510 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1511 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1512 {
1513 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1514 }
1515
1516 static inline void Init_1_0(
1517 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1518 UINT numParameters,
1519 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1520 UINT numStaticSamplers = 0,
1521 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1522 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1523 {
1524 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1525 desc.Desc_1_0.NumParameters = numParameters;
1526 desc.Desc_1_0.pParameters = _pParameters;
1527 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
1528 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
1529 desc.Desc_1_0.Flags = flags;
1530 }
1531
1532 inline void Init_1_1(
1533 UINT numParameters,
1534 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1535 UINT numStaticSamplers = 0,
1536 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1537 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1538 {
1539 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1540 }
1541
1542 static inline void Init_1_1(
1543 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1544 UINT numParameters,
1545 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1546 UINT numStaticSamplers = 0,
1547 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1548 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1549 {
1550 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1551 desc.Desc_1_1.NumParameters = numParameters;
1552 desc.Desc_1_1.pParameters = _pParameters;
1553 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
1554 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
1555 desc.Desc_1_1.Flags = flags;
1556 }
1557};
1558
1559//------------------------------------------------------------------------------------------------
1560struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
1561{
1562 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
1563 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
1564 D3D12_CPU_DESCRIPTOR_HANDLE(o)
1565 {}
1566 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1567 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1568 {
1569 InitOffsetted(other, offsetScaledByIncrementSize);
1570 }
1571 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1572 {
1573 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1574 }
1575 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1576 {
1577 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1578 return *this;
1579 }
1580 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1581 {
1582 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1583 return *this;
1584 }
1585 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1586 {
1587 return (ptr == other.ptr);
1588 }
1589 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1590 {
1591 return (ptr != other.ptr);
1592 }
1593 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
1594 {
1595 ptr = other.ptr;
1596 return *this;
1597 }
1598
1599 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1600 {
1601 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1602 }
1603
1604 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1605 {
1606 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1607 }
1608
1609 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1610 {
1611 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1612 }
1613
1614 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1615 {
1616 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1617 }
1618};
1619
1620//------------------------------------------------------------------------------------------------
1621struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
1622{
1623 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
1624 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
1625 D3D12_GPU_DESCRIPTOR_HANDLE(o)
1626 {}
1627 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1628 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1629 {
1630 InitOffsetted(other, offsetScaledByIncrementSize);
1631 }
1632 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1633 {
1634 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1635 }
1636 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1637 {
1638 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1639 return *this;
1640 }
1641 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1642 {
1643 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1644 return *this;
1645 }
1646 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1647 {
1648 return (ptr == other.ptr);
1649 }
1650 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1651 {
1652 return (ptr != other.ptr);
1653 }
1654 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
1655 {
1656 ptr = other.ptr;
1657 return *this;
1658 }
1659
1660 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1661 {
1662 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1663 }
1664
1665 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1666 {
1667 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1668 }
1669
1670 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1671 {
1672 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1673 }
1674
1675 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1676 {
1677 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1678 }
1679};
1680
1681//------------------------------------------------------------------------------------------------
1682inline constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1683{
1684 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1685}
1686
1687//------------------------------------------------------------------------------------------------
1688template <typename T, typename U, typename V>
1689inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
1690{
1691 MipSlice = static_cast<T>(Subresource % MipLevels);
1692 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
1693 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
1694}
1695
1696//------------------------------------------------------------------------------------------------
1697inline UINT8 D3D12GetFormatPlaneCount(
1698 _In_ ID3D12Device* pDevice,
1699 DXGI_FORMAT Format
1700 ) noexcept
1701{
1702 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1703 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1704 {
1705 return 0;
1706 }
1707 return formatInfo.PlaneCount;
1708}
1709
1710//------------------------------------------------------------------------------------------------
1711struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1712{
1713 CD3DX12_RESOURCE_DESC() = default;
1714 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1715 D3D12_RESOURCE_DESC( o )
1716 {}
1717 CD3DX12_RESOURCE_DESC(
1718 D3D12_RESOURCE_DIMENSION dimension,
1719 UINT64 alignment,
1720 UINT64 width,
1721 UINT height,
1722 UINT16 depthOrArraySize,
1723 UINT16 mipLevels,
1724 DXGI_FORMAT format,
1725 UINT sampleCount,
1726 UINT sampleQuality,
1727 D3D12_TEXTURE_LAYOUT layout,
1728 D3D12_RESOURCE_FLAGS flags ) noexcept
1729 {
1730 Dimension = dimension;
1731 Alignment = alignment;
1732 Width = width;
1733 Height = height;
1734 DepthOrArraySize = depthOrArraySize;
1735 MipLevels = mipLevels;
1736 Format = format;
1737 SampleDesc.Count = sampleCount;
1738 SampleDesc.Quality = sampleQuality;
1739 Layout = layout;
1740 Flags = flags;
1741 }
1742 static inline CD3DX12_RESOURCE_DESC Buffer(
1743 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1744 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1745 {
1746 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1747 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1748 }
1749 static inline CD3DX12_RESOURCE_DESC Buffer(
1750 UINT64 width,
1751 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1752 UINT64 alignment = 0 ) noexcept
1753 {
1754 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1755 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1756 }
1757 static inline CD3DX12_RESOURCE_DESC Tex1D(
1758 DXGI_FORMAT format,
1759 UINT64 width,
1760 UINT16 arraySize = 1,
1761 UINT16 mipLevels = 0,
1762 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1763 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1764 UINT64 alignment = 0 ) noexcept
1765 {
1766 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1767 mipLevels, format, 1, 0, layout, flags );
1768 }
1769 static inline CD3DX12_RESOURCE_DESC Tex2D(
1770 DXGI_FORMAT format,
1771 UINT64 width,
1772 UINT height,
1773 UINT16 arraySize = 1,
1774 UINT16 mipLevels = 0,
1775 UINT sampleCount = 1,
1776 UINT sampleQuality = 0,
1777 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1778 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1779 UINT64 alignment = 0 ) noexcept
1780 {
1781 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1782 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1783 }
1784 static inline CD3DX12_RESOURCE_DESC Tex3D(
1785 DXGI_FORMAT format,
1786 UINT64 width,
1787 UINT height,
1788 UINT16 depth,
1789 UINT16 mipLevels = 0,
1790 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1791 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1792 UINT64 alignment = 0 ) noexcept
1793 {
1794 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1795 mipLevels, format, 1, 0, layout, flags );
1796 }
1797 inline UINT16 Depth() const noexcept
1798 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1799 inline UINT16 ArraySize() const noexcept
1800 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1801 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1802 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1803 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1804 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1805 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1806 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1807};
1808inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1809{
1810 return l.Dimension == r.Dimension &&
1811 l.Alignment == r.Alignment &&
1812 l.Width == r.Width &&
1813 l.Height == r.Height &&
1814 l.DepthOrArraySize == r.DepthOrArraySize &&
1815 l.MipLevels == r.MipLevels &&
1816 l.Format == r.Format &&
1817 l.SampleDesc.Count == r.SampleDesc.Count &&
1818 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1819 l.Layout == r.Layout &&
1820 l.Flags == r.Flags;
1821}
1822inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1823{ return !( l == r ); }
1824
1825//------------------------------------------------------------------------------------------------
1826struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1827{
1828 CD3DX12_RESOURCE_DESC1() = default;
1829 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1830 D3D12_RESOURCE_DESC1( o )
1831 {}
1832 CD3DX12_RESOURCE_DESC1(
1833 D3D12_RESOURCE_DIMENSION dimension,
1834 UINT64 alignment,
1835 UINT64 width,
1836 UINT height,
1837 UINT16 depthOrArraySize,
1838 UINT16 mipLevels,
1839 DXGI_FORMAT format,
1840 UINT sampleCount,
1841 UINT sampleQuality,
1842 D3D12_TEXTURE_LAYOUT layout,
1843 D3D12_RESOURCE_FLAGS flags,
1844 UINT samplerFeedbackMipRegionWidth = 0,
1845 UINT samplerFeedbackMipRegionHeight = 0,
1846 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1847 {
1848 Dimension = dimension;
1849 Alignment = alignment;
1850 Width = width;
1851 Height = height;
1852 DepthOrArraySize = depthOrArraySize;
1853 MipLevels = mipLevels;
1854 Format = format;
1855 SampleDesc.Count = sampleCount;
1856 SampleDesc.Quality = sampleQuality;
1857 Layout = layout;
1858 Flags = flags;
1859 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1860 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1861 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1862 }
1863 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1864 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1865 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1866 {
1867 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1868 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1869 }
1870 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1871 UINT64 width,
1872 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1873 UINT64 alignment = 0 ) noexcept
1874 {
1875 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1876 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1877 }
1878 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1879 DXGI_FORMAT format,
1880 UINT64 width,
1881 UINT16 arraySize = 1,
1882 UINT16 mipLevels = 0,
1883 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1884 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1885 UINT64 alignment = 0 ) noexcept
1886 {
1887 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1888 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1889 }
1890 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1891 DXGI_FORMAT format,
1892 UINT64 width,
1893 UINT height,
1894 UINT16 arraySize = 1,
1895 UINT16 mipLevels = 0,
1896 UINT sampleCount = 1,
1897 UINT sampleQuality = 0,
1898 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1899 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1900 UINT64 alignment = 0,
1901 UINT samplerFeedbackMipRegionWidth = 0,
1902 UINT samplerFeedbackMipRegionHeight = 0,
1903 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1904 {
1905 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1906 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1907 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1908 }
1909 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1910 DXGI_FORMAT format,
1911 UINT64 width,
1912 UINT height,
1913 UINT16 depth,
1914 UINT16 mipLevels = 0,
1915 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1916 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1917 UINT64 alignment = 0 ) noexcept
1918 {
1919 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1920 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1921 }
1922 inline UINT16 Depth() const noexcept
1923 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1924 inline UINT16 ArraySize() const noexcept
1925 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1926 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1927 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1928 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1929 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1930 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1931 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1932};
1933inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1934{
1935 return l.Dimension == r.Dimension &&
1936 l.Alignment == r.Alignment &&
1937 l.Width == r.Width &&
1938 l.Height == r.Height &&
1939 l.DepthOrArraySize == r.DepthOrArraySize &&
1940 l.MipLevels == r.MipLevels &&
1941 l.Format == r.Format &&
1942 l.SampleDesc.Count == r.SampleDesc.Count &&
1943 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1944 l.Layout == r.Layout &&
1945 l.Flags == r.Flags &&
1946 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1947 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1948 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1949}
1950inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1951{ return !( l == r ); }
1952
1953//------------------------------------------------------------------------------------------------
1954struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
1955{
1956 CD3DX12_VIEW_INSTANCING_DESC() = default;
1957 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
1958 D3D12_VIEW_INSTANCING_DESC( o )
1959 {}
1960 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
1961 {
1962 ViewInstanceCount = 0;
1963 pViewInstanceLocations = nullptr;
1964 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
1965 }
1966 explicit CD3DX12_VIEW_INSTANCING_DESC(
1967 UINT InViewInstanceCount,
1968 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
1969 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
1970 {
1971 ViewInstanceCount = InViewInstanceCount;
1972 pViewInstanceLocations = InViewInstanceLocations;
1973 Flags = InFlags;
1974 }
1975};
1976
1977//------------------------------------------------------------------------------------------------
1978// Row-by-row memcpy
1979inline void MemcpySubresource(
1980 _In_ const D3D12_MEMCPY_DEST* pDest,
1981 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
1982 SIZE_T RowSizeInBytes,
1983 UINT NumRows,
1984 UINT NumSlices) noexcept
1985{
1986 for (UINT z = 0; z < NumSlices; ++z)
1987 {
1988 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
1989 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
1990 for (UINT y = 0; y < NumRows; ++y)
1991 {
1992 memcpy(pDestSlice + pDest->RowPitch * y,
1993 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
1994 RowSizeInBytes);
1995 }
1996 }
1997}
1998
1999//------------------------------------------------------------------------------------------------
2000// Row-by-row memcpy
2001inline void MemcpySubresource(
2002 _In_ const D3D12_MEMCPY_DEST* pDest,
2003 _In_ const void* pResourceData,
2004 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
2005 SIZE_T RowSizeInBytes,
2006 UINT NumRows,
2007 UINT NumSlices) noexcept
2008{
2009 for (UINT z = 0; z < NumSlices; ++z)
2010 {
2011 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
2012 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
2013 for (UINT y = 0; y < NumRows; ++y)
2014 {
2015 memcpy(pDestSlice + pDest->RowPitch * y,
2016 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
2017 RowSizeInBytes);
2018 }
2019 }
2020}
2021
2022//------------------------------------------------------------------------------------------------
2023// Returns required size of a buffer to be used for data upload
2024inline UINT64 GetRequiredIntermediateSize(
2025 _In_ ID3D12Resource* pDestinationResource,
2026 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2027 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
2028{
2029 auto Desc = pDestinationResource->GetDesc();
2030 UINT64 RequiredSize = 0;
2031
2032 ID3D12Device* pDevice = nullptr;
2033 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2034 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
2035 pDevice->Release();
2036
2037 return RequiredSize;
2038}
2039
2040//------------------------------------------------------------------------------------------------
2041// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2042inline UINT64 UpdateSubresources(
2043 _In_ ID3D12GraphicsCommandList* pCmdList,
2044 _In_ ID3D12Resource* pDestinationResource,
2045 _In_ ID3D12Resource* pIntermediate,
2046 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2047 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2048 UINT64 RequiredSize,
2049 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2050 _In_reads_(NumSubresources) const UINT* pNumRows,
2051 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2052 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2053{
2054 // Minor validation
2055 auto IntermediateDesc = pIntermediate->GetDesc();
2056 auto DestinationDesc = pDestinationResource->GetDesc();
2057 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2058 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2059 RequiredSize > SIZE_T(-1) ||
2060 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2061 (FirstSubresource != 0 || NumSubresources != 1)))
2062 {
2063 return 0;
2064 }
2065
2066 BYTE* pData;
2067 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2068 if (FAILED(hr))
2069 {
2070 return 0;
2071 }
2072
2073 for (UINT i = 0; i < NumSubresources; ++i)
2074 {
2075 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2076 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2077 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2078 }
2079 pIntermediate->Unmap(0, nullptr);
2080
2081 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2082 {
2083 pCmdList->CopyBufferRegion(
2084 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2085 }
2086 else
2087 {
2088 for (UINT i = 0; i < NumSubresources; ++i)
2089 {
2090 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2091 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2092 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2093 }
2094 }
2095 return RequiredSize;
2096}
2097
2098//------------------------------------------------------------------------------------------------
2099// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2100inline UINT64 UpdateSubresources(
2101 _In_ ID3D12GraphicsCommandList* pCmdList,
2102 _In_ ID3D12Resource* pDestinationResource,
2103 _In_ ID3D12Resource* pIntermediate,
2104 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2105 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2106 UINT64 RequiredSize,
2107 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2108 _In_reads_(NumSubresources) const UINT* pNumRows,
2109 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2110 _In_ const void* pResourceData,
2111 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2112{
2113 // Minor validation
2114 auto IntermediateDesc = pIntermediate->GetDesc();
2115 auto DestinationDesc = pDestinationResource->GetDesc();
2116 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2117 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2118 RequiredSize > SIZE_T(-1) ||
2119 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2120 (FirstSubresource != 0 || NumSubresources != 1)))
2121 {
2122 return 0;
2123 }
2124
2125 BYTE* pData;
2126 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2127 if (FAILED(hr))
2128 {
2129 return 0;
2130 }
2131
2132 for (UINT i = 0; i < NumSubresources; ++i)
2133 {
2134 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2135 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2136 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2137 }
2138 pIntermediate->Unmap(0, nullptr);
2139
2140 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2141 {
2142 pCmdList->CopyBufferRegion(
2143 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2144 }
2145 else
2146 {
2147 for (UINT i = 0; i < NumSubresources; ++i)
2148 {
2149 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2150 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2151 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2152 }
2153 }
2154 return RequiredSize;
2155}
2156
2157//------------------------------------------------------------------------------------------------
2158// Heap-allocating UpdateSubresources implementation
2159inline UINT64 UpdateSubresources(
2160 _In_ ID3D12GraphicsCommandList* pCmdList,
2161 _In_ ID3D12Resource* pDestinationResource,
2162 _In_ ID3D12Resource* pIntermediate,
2163 UINT64 IntermediateOffset,
2164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2166 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2167{
2168 UINT64 RequiredSize = 0;
2169 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2170 if (MemToAlloc > SIZE_MAX)
2171 {
2172 return 0;
2173 }
2174 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2175 if (pMem == nullptr)
2176 {
2177 return 0;
2178 }
2179 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2180 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2181 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2182
2183 auto Desc = pDestinationResource->GetDesc();
2184 ID3D12Device* pDevice = nullptr;
2185 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2186 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2187 pDevice->Release();
2188
2189 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
2190 HeapFree(GetProcessHeap(), 0, pMem);
2191 return Result;
2192}
2193
2194//------------------------------------------------------------------------------------------------
2195// Heap-allocating UpdateSubresources implementation
2196inline UINT64 UpdateSubresources(
2197 _In_ ID3D12GraphicsCommandList* pCmdList,
2198 _In_ ID3D12Resource* pDestinationResource,
2199 _In_ ID3D12Resource* pIntermediate,
2200 UINT64 IntermediateOffset,
2201 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2202 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2203 _In_ const void* pResourceData,
2204 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2205{
2206 UINT64 RequiredSize = 0;
2207 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2208 if (MemToAlloc > SIZE_MAX)
2209 {
2210 return 0;
2211 }
2212 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2213 if (pMem == nullptr)
2214 {
2215 return 0;
2216 }
2217 auto pLayouts = reinterpret_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2218 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2219 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2220
2221 auto Desc = pDestinationResource->GetDesc();
2222 ID3D12Device* pDevice = nullptr;
2223 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2224 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2225 pDevice->Release();
2226
2227 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
2228 HeapFree(GetProcessHeap(), 0, pMem);
2229 return Result;
2230}
2231
2232//------------------------------------------------------------------------------------------------
2233// Stack-allocating UpdateSubresources implementation
2234template <UINT MaxSubresources>
2235inline UINT64 UpdateSubresources(
2236 _In_ ID3D12GraphicsCommandList* pCmdList,
2237 _In_ ID3D12Resource* pDestinationResource,
2238 _In_ ID3D12Resource* pIntermediate,
2239 UINT64 IntermediateOffset,
2240 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2241 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2242 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2243{
2244 UINT64 RequiredSize = 0;
2245 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2246 UINT NumRows[MaxSubresources];
2247 UINT64 RowSizesInBytes[MaxSubresources];
2248
2249 auto Desc = pDestinationResource->GetDesc();
2250 ID3D12Device* pDevice = nullptr;
2251 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2252 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2253 pDevice->Release();
2254
2255 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
2256}
2257
2258//------------------------------------------------------------------------------------------------
2259// Stack-allocating UpdateSubresources implementation
2260template <UINT MaxSubresources>
2261inline UINT64 UpdateSubresources(
2262 _In_ ID3D12GraphicsCommandList* pCmdList,
2263 _In_ ID3D12Resource* pDestinationResource,
2264 _In_ ID3D12Resource* pIntermediate,
2265 UINT64 IntermediateOffset,
2266 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2267 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2268 _In_ const void* pResourceData,
2269 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2270{
2271 UINT64 RequiredSize = 0;
2272 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2273 UINT NumRows[MaxSubresources];
2274 UINT64 RowSizesInBytes[MaxSubresources];
2275
2276 auto Desc = pDestinationResource->GetDesc();
2277 ID3D12Device* pDevice = nullptr;
2278 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2279 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2280 pDevice->Release();
2281
2282 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
2283}
2284
2285//------------------------------------------------------------------------------------------------
2286inline constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
2287{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
2288
2289//------------------------------------------------------------------------------------------------
2290template <typename t_CommandListType>
2291inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
2292{
2293 // This cast is useful for passing strongly typed command list pointers into
2294 // ExecuteCommandLists.
2295 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
2296 // respect the const-ness of their arguments.
2297 return reinterpret_cast<ID3D12CommandList * const *>(pp);
2298}
2299
2300//------------------------------------------------------------------------------------------------
2301// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
2302// To help enable root signature 1.1 features when they are available and not require maintaining
2303// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
2304// 1.1 is not supported.
2305inline HRESULT D3DX12SerializeVersionedRootSignature(
2306 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
2307 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
2308 _Outptr_ ID3DBlob** ppBlob,
2309 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
2310{
2311 if (ppErrorBlob != nullptr)
2312 {
2313 *ppErrorBlob = nullptr;
2314 }
2315
2316 switch (MaxVersion)
2317 {
2318 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2319 switch (pRootSignatureDesc->Version)
2320 {
2321 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2322 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2323
2324 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2325 {
2326 HRESULT hr = S_OK;
2327 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
2328
2329 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
2330 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
2331 if (ParametersSize > 0 && pParameters == nullptr)
2332 {
2333 hr = E_OUTOFMEMORY;
2334 }
2335 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
2336
2337 if (SUCCEEDED(hr))
2338 {
2339 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2340 {
2341 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
2342 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
2343 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
2344
2345 switch (desc_1_1.pParameters[n].ParameterType)
2346 {
2347 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
2348 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
2349 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
2350 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
2351 break;
2352
2353 case D3D12_ROOT_PARAMETER_TYPE_CBV:
2354 case D3D12_ROOT_PARAMETER_TYPE_SRV:
2355 case D3D12_ROOT_PARAMETER_TYPE_UAV:
2356 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
2357 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
2358 break;
2359
2360 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
2361 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
2362
2363 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
2364 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
2365 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
2366 {
2367 hr = E_OUTOFMEMORY;
2368 }
2369 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
2370
2371 if (SUCCEEDED(hr))
2372 {
2373 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
2374 {
2375 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
2376 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
2377 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
2378 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
2379 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
2380 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
2381 }
2382 }
2383
2384 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
2385 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
2386 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
2387 }
2388 }
2389 }
2390
2391 if (SUCCEEDED(hr))
2392 {
2393 CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, desc_1_1.pStaticSamplers, desc_1_1.Flags);
2394 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2395 }
2396
2397 if (pParameters)
2398 {
2399 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2400 {
2401 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
2402 {
2403 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
2404 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
2405 }
2406 }
2407 HeapFree(GetProcessHeap(), 0, pParameters);
2408 }
2409 return hr;
2410 }
2411 }
2412 break;
2413
2414 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2415 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
2416 }
2417
2418 return E_INVALIDARG;
2419}
2420
2421//------------------------------------------------------------------------------------------------
2422struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2423{
2424 CD3DX12_RT_FORMAT_ARRAY() = default;
2425 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2426 : D3D12_RT_FORMAT_ARRAY(o)
2427 {}
2428 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2429 {
2430 NumRenderTargets = NumFormats;
2431 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2432 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2433 }
2434};
2435
2436//------------------------------------------------------------------------------------------------
2437// Pipeline State Stream Helpers
2438//------------------------------------------------------------------------------------------------
2439
2440//------------------------------------------------------------------------------------------------
2441// Stream Subobjects, i.e. elements of a stream
2442
2443struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
2444struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
2445
2446#pragma warning(push)
2447#pragma warning(disable : 4324)
2448template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
2449class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
2450{
2451private:
2452 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE _Type;
2453 InnerStructType _Inner;
2454public:
2455 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : _Type(Type), _Inner(DefaultArg()) {}
2456 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : _Type(Type), _Inner(i) {}
2457 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { _Type = Type; _Inner = i; return *this; }
2458 operator InnerStructType const&() const noexcept { return _Inner; }
2459 operator InnerStructType&() noexcept { return _Inner; }
2460 InnerStructType* operator&() noexcept { return &_Inner; }
2461 InnerStructType const* operator&() const noexcept { return &_Inner; }
2462};
2463#pragma warning(pop)
2464typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
2465typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
2466typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
2467typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
2468typedef 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;
2469typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
2470typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
2471typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
2472typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
2473typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
2474typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
2475typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
2476typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
2477typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
2478typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
2479typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
2480typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
2481typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
2482typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
2483typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
2484typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
2485typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
2486typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
2487typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
2488typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
2489
2490//------------------------------------------------------------------------------------------------
2491// Stream Parser Helpers
2492
2493struct ID3DX12PipelineParserCallbacks
2494{
2495 // Subobject Callbacks
2496 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
2497 virtual void NodeMaskCb(UINT) {}
2498 virtual void RootSignatureCb(ID3D12RootSignature*) {}
2499 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
2500 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
2501 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
2502 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
2503 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
2504 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
2505 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
2506 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
2507 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
2508 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
2509 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
2510 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
2511 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
2512 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
2513 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
2514 virtual void DSVFormatCb(DXGI_FORMAT) {}
2515 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
2516 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
2517 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
2518 virtual void SampleMaskCb(UINT) {}
2519 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
2520 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
2521
2522 // Error Callbacks
2523 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
2524 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
2525 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
2526
2527 virtual ~ID3DX12PipelineParserCallbacks() = default;
2528};
2529
2530struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
2531{
2532 ID3D12RootSignature* pRootSignature;
2533 D3D12_SHADER_BYTECODE AS;
2534 D3D12_SHADER_BYTECODE MS;
2535 D3D12_SHADER_BYTECODE PS;
2536 D3D12_BLEND_DESC BlendState;
2537 UINT SampleMask;
2538 D3D12_RASTERIZER_DESC RasterizerState;
2539 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2540 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2541 UINT NumRenderTargets;
2542 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
2543 DXGI_FORMAT DSVFormat;
2544 DXGI_SAMPLE_DESC SampleDesc;
2545 UINT NodeMask;
2546 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2547 D3D12_PIPELINE_STATE_FLAGS Flags;
2548};
2549
2550// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
2551// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
2552// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2553struct CD3DX12_PIPELINE_STATE_STREAM2
2554{
2555 CD3DX12_PIPELINE_STATE_STREAM2() = default;
2556 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2557 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2558 : Flags(Desc.Flags)
2559 , NodeMask(Desc.NodeMask)
2560 , pRootSignature(Desc.pRootSignature)
2561 , InputLayout(Desc.InputLayout)
2562 , IBStripCutValue(Desc.IBStripCutValue)
2563 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2564 , VS(Desc.VS)
2565 , GS(Desc.GS)
2566 , StreamOutput(Desc.StreamOutput)
2567 , HS(Desc.HS)
2568 , DS(Desc.DS)
2569 , PS(Desc.PS)
2570 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2571 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2572 , DSVFormat(Desc.DSVFormat)
2573 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2574 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2575 , SampleDesc(Desc.SampleDesc)
2576 , SampleMask(Desc.SampleMask)
2577 , CachedPSO(Desc.CachedPSO)
2578 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2579 {}
2580 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2581 : Flags(Desc.Flags)
2582 , NodeMask(Desc.NodeMask)
2583 , pRootSignature(Desc.pRootSignature)
2584 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2585 , PS(Desc.PS)
2586 , AS(Desc.AS)
2587 , MS(Desc.MS)
2588 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2589 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2590 , DSVFormat(Desc.DSVFormat)
2591 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2592 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2593 , SampleDesc(Desc.SampleDesc)
2594 , SampleMask(Desc.SampleMask)
2595 , CachedPSO(Desc.CachedPSO)
2596 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2597 {}
2598 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2599 : Flags(Desc.Flags)
2600 , NodeMask(Desc.NodeMask)
2601 , pRootSignature(Desc.pRootSignature)
2602 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2603 , CachedPSO(Desc.CachedPSO)
2604 {
2605 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2606 }
2607 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2608 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2609 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2610 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2611 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2612 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2613 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2614 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2615 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2616 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2617 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2618 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2619 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2620 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2621 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2622 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2623 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2624 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2625 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2626 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2627 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2628 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2629 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2630 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2631 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2632 {
2633 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2634 D.Flags = this->Flags;
2635 D.NodeMask = this->NodeMask;
2636 D.pRootSignature = this->pRootSignature;
2637 D.InputLayout = this->InputLayout;
2638 D.IBStripCutValue = this->IBStripCutValue;
2639 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2640 D.VS = this->VS;
2641 D.GS = this->GS;
2642 D.StreamOutput = this->StreamOutput;
2643 D.HS = this->HS;
2644 D.DS = this->DS;
2645 D.PS = this->PS;
2646 D.BlendState = this->BlendState;
2647 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2648 D.DSVFormat = this->DSVFormat;
2649 D.RasterizerState = this->RasterizerState;
2650 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2651 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2652 D.SampleDesc = this->SampleDesc;
2653 D.SampleMask = this->SampleMask;
2654 D.CachedPSO = this->CachedPSO;
2655 return D;
2656 }
2657 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2658 {
2659 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2660 D.Flags = this->Flags;
2661 D.NodeMask = this->NodeMask;
2662 D.pRootSignature = this->pRootSignature;
2663 D.CS = this->CS;
2664 D.CachedPSO = this->CachedPSO;
2665 return D;
2666 }
2667};
2668
2669// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
2670// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2671struct CD3DX12_PIPELINE_STATE_STREAM1
2672{
2673 CD3DX12_PIPELINE_STATE_STREAM1() = default;
2674 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2675 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2676 : Flags(Desc.Flags)
2677 , NodeMask(Desc.NodeMask)
2678 , pRootSignature(Desc.pRootSignature)
2679 , InputLayout(Desc.InputLayout)
2680 , IBStripCutValue(Desc.IBStripCutValue)
2681 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2682 , VS(Desc.VS)
2683 , GS(Desc.GS)
2684 , StreamOutput(Desc.StreamOutput)
2685 , HS(Desc.HS)
2686 , DS(Desc.DS)
2687 , PS(Desc.PS)
2688 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2689 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2690 , DSVFormat(Desc.DSVFormat)
2691 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2692 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2693 , SampleDesc(Desc.SampleDesc)
2694 , SampleMask(Desc.SampleMask)
2695 , CachedPSO(Desc.CachedPSO)
2696 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2697 {}
2698 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2699 : Flags(Desc.Flags)
2700 , NodeMask(Desc.NodeMask)
2701 , pRootSignature(Desc.pRootSignature)
2702 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2703 , PS(Desc.PS)
2704 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2705 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2706 , DSVFormat(Desc.DSVFormat)
2707 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2708 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2709 , SampleDesc(Desc.SampleDesc)
2710 , SampleMask(Desc.SampleMask)
2711 , CachedPSO(Desc.CachedPSO)
2712 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2713 {}
2714 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2715 : Flags(Desc.Flags)
2716 , NodeMask(Desc.NodeMask)
2717 , pRootSignature(Desc.pRootSignature)
2718 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2719 , CachedPSO(Desc.CachedPSO)
2720 {
2721 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2722 }
2723 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2724 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2725 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2726 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2727 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2728 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2729 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2730 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2731 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2732 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2733 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2734 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2735 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2736 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2737 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2738 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2739 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2740 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2741 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2742 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2743 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2744 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2745 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2746 {
2747 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2748 D.Flags = this->Flags;
2749 D.NodeMask = this->NodeMask;
2750 D.pRootSignature = this->pRootSignature;
2751 D.InputLayout = this->InputLayout;
2752 D.IBStripCutValue = this->IBStripCutValue;
2753 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2754 D.VS = this->VS;
2755 D.GS = this->GS;
2756 D.StreamOutput = this->StreamOutput;
2757 D.HS = this->HS;
2758 D.DS = this->DS;
2759 D.PS = this->PS;
2760 D.BlendState = this->BlendState;
2761 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2762 D.DSVFormat = this->DSVFormat;
2763 D.RasterizerState = this->RasterizerState;
2764 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2765 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2766 D.SampleDesc = this->SampleDesc;
2767 D.SampleMask = this->SampleMask;
2768 D.CachedPSO = this->CachedPSO;
2769 return D;
2770 }
2771 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2772 {
2773 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2774 D.Flags = this->Flags;
2775 D.NodeMask = this->NodeMask;
2776 D.pRootSignature = this->pRootSignature;
2777 D.CS = this->CS;
2778 D.CachedPSO = this->CachedPSO;
2779 return D;
2780 }
2781};
2782
2783
2784struct CD3DX12_PIPELINE_MESH_STATE_STREAM
2785{
2786 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
2787 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2788 : Flags(Desc.Flags)
2789 , NodeMask(Desc.NodeMask)
2790 , pRootSignature(Desc.pRootSignature)
2791 , PS(Desc.PS)
2792 , AS(Desc.AS)
2793 , MS(Desc.MS)
2794 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2795 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2796 , DSVFormat(Desc.DSVFormat)
2797 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2798 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2799 , SampleDesc(Desc.SampleDesc)
2800 , SampleMask(Desc.SampleMask)
2801 , CachedPSO(Desc.CachedPSO)
2802 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2803 {}
2804 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2805 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2806 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2807 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2808 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2809 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2810 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2811 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2812 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2813 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2814 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2815 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2816 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2817 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2818 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2819 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
2820 {
2821 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
2822 D.Flags = this->Flags;
2823 D.NodeMask = this->NodeMask;
2824 D.pRootSignature = this->pRootSignature;
2825 D.PS = this->PS;
2826 D.AS = this->AS;
2827 D.MS = this->MS;
2828 D.BlendState = this->BlendState;
2829 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2830 D.DSVFormat = this->DSVFormat;
2831 D.RasterizerState = this->RasterizerState;
2832 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2833 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2834 D.SampleDesc = this->SampleDesc;
2835 D.SampleMask = this->SampleMask;
2836 D.CachedPSO = this->CachedPSO;
2837 return D;
2838 }
2839};
2840
2841// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
2842// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
2843struct CD3DX12_PIPELINE_STATE_STREAM
2844{
2845 CD3DX12_PIPELINE_STATE_STREAM() = default;
2846 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2847 : Flags(Desc.Flags)
2848 , NodeMask(Desc.NodeMask)
2849 , pRootSignature(Desc.pRootSignature)
2850 , InputLayout(Desc.InputLayout)
2851 , IBStripCutValue(Desc.IBStripCutValue)
2852 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2853 , VS(Desc.VS)
2854 , GS(Desc.GS)
2855 , StreamOutput(Desc.StreamOutput)
2856 , HS(Desc.HS)
2857 , DS(Desc.DS)
2858 , PS(Desc.PS)
2859 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2860 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2861 , DSVFormat(Desc.DSVFormat)
2862 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2863 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2864 , SampleDesc(Desc.SampleDesc)
2865 , SampleMask(Desc.SampleMask)
2866 , CachedPSO(Desc.CachedPSO)
2867 {}
2868 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2869 : Flags(Desc.Flags)
2870 , NodeMask(Desc.NodeMask)
2871 , pRootSignature(Desc.pRootSignature)
2872 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2873 , CachedPSO(Desc.CachedPSO)
2874 {}
2875 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2876 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2877 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2878 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2879 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2880 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2881 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2882 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2883 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2884 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2885 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2886 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2887 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2888 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2889 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2890 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2891 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2892 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2893 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2894 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2895 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2896 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2897 {
2898 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2899 D.Flags = this->Flags;
2900 D.NodeMask = this->NodeMask;
2901 D.pRootSignature = this->pRootSignature;
2902 D.InputLayout = this->InputLayout;
2903 D.IBStripCutValue = this->IBStripCutValue;
2904 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2905 D.VS = this->VS;
2906 D.GS = this->GS;
2907 D.StreamOutput = this->StreamOutput;
2908 D.HS = this->HS;
2909 D.DS = this->DS;
2910 D.PS = this->PS;
2911 D.BlendState = this->BlendState;
2912 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2913 D.DSVFormat = this->DSVFormat;
2914 D.RasterizerState = this->RasterizerState;
2915 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2916 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2917 D.SampleDesc = this->SampleDesc;
2918 D.SampleMask = this->SampleMask;
2919 D.CachedPSO = this->CachedPSO;
2920 return D;
2921 }
2922 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2923 {
2924 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2925 D.Flags = this->Flags;
2926 D.NodeMask = this->NodeMask;
2927 D.pRootSignature = this->pRootSignature;
2928 D.CS = this->CS;
2929 D.CachedPSO = this->CachedPSO;
2930 return D;
2931 }
2932};
2933
2934struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2935{
2936 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
2937 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
2938 : SeenDSS(false)
2939 {
2940 // Adjust defaults to account for absent members.
2941 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
2942
2943 // Depth disabled if no DSV format specified.
2944 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
2945 }
2946
2947 // ID3DX12PipelineParserCallbacks
2948 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
2949 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
2950 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
2951 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
2952 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
2953 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
2954 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
2955 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
2956 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
2957 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
2958 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
2959 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
2960 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
2961 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
2962 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
2963 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
2964 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
2965 {
2966 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2967 SeenDSS = true;
2968 }
2969 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
2970 {
2971 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2972 SeenDSS = true;
2973 }
2974 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
2975 {
2976 PipelineStream.DSVFormat = DSVFormat;
2977 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
2978 {
2979 // Re-enable depth for the default state.
2980 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
2981 }
2982 }
2983 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
2984 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
2985 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
2986 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
2987 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
2988 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
2989
2990private:
2991 bool SeenDSS;
2992};
2993
2994
2995struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2996{
2997 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
2998 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
2999 : SeenDSS(false)
3000 {
3001 // Adjust defaults to account for absent members.
3002 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
3003
3004 // Depth disabled if no DSV format specified.
3005 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
3006 }
3007
3008 // ID3DX12PipelineParserCallbacks
3009 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
3010 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
3011 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
3012 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
3013 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
3014 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
3015 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
3016 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
3017 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
3018 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
3019 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
3020 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
3021 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
3022 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
3023 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
3024 {
3025 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3026 SeenDSS = true;
3027 }
3028 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
3029 {
3030 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3031 SeenDSS = true;
3032 }
3033 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
3034 {
3035 PipelineStream.DSVFormat = DSVFormat;
3036 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
3037 {
3038 // Re-enable depth for the default state.
3039 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
3040 }
3041 }
3042 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
3043 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
3044 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
3045 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
3046 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
3047 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
3048
3049private:
3050 bool SeenDSS;
3051};
3052
3053inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
3054{
3055 switch (SubobjectType)
3056 {
3057 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3058 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
3059 default:
3060 return SubobjectType;
3061 }
3062}
3063
3064inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
3065{
3066 if (pCallbacks == nullptr)
3067 {
3068 return E_INVALIDARG;
3069 }
3070
3071 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
3072 {
3073 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
3074 return E_INVALIDARG;
3075 }
3076
3077 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
3078 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
3079 {
3080 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
3081 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
3082 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
3083 {
3084 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3085 return E_INVALIDARG;
3086 }
3087 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
3088 {
3089 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
3090 return E_INVALIDARG; // disallow subobject duplicates in a stream
3091 }
3092 SubobjectSeen[SubobjectType] = true;
3093 switch (SubobjectType)
3094 {
3095 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
3096 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
3097 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
3098 break;
3099 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
3100 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
3101 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
3102 break;
3103 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
3104 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
3105 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
3106 break;
3107 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
3108 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
3109 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
3110 break;
3111 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
3112 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
3113 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
3114 break;
3115 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
3116 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
3117 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
3118 break;
3119 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
3120 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
3121 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
3122 break;
3123 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
3124 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
3125 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
3126 break;
3127 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
3128 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
3129 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
3130 break;
3131 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
3132 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
3133 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
3134 break;
3135 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
3136 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
3137 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
3138 break;
3139 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
3140 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
3141 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
3142 break;
3143 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
3144 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
3145 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
3146 break;
3147 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
3148 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
3149 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
3150 break;
3151 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3152 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
3153 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
3154 break;
3155 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
3156 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
3157 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
3158 break;
3159 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
3160 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
3161 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
3162 break;
3163 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
3164 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
3165 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
3166 break;
3167 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
3168 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
3169 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
3170 break;
3171 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
3172 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
3173 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
3174 break;
3175 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
3176 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
3177 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
3178 break;
3179 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
3180 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
3181 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
3182 break;
3183 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
3184 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
3185 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
3186 break;
3187 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
3188 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
3189 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
3190 break;
3191 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
3192 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
3193 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
3194 break;
3195 default:
3196 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3197 return E_INVALIDARG;
3198 }
3199 }
3200
3201 return S_OK;
3202}
3203
3204//------------------------------------------------------------------------------------------------
3205inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
3206{
3207 if (a.Format != b.Format) return false;
3208 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
3209 || a.Format == DXGI_FORMAT_D16_UNORM
3210 || a.Format == DXGI_FORMAT_D32_FLOAT
3211 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
3212 {
3213 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
3214 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
3215 } else {
3216 return (a.Color[0] == b.Color[0]) &&
3217 (a.Color[1] == b.Color[1]) &&
3218 (a.Color[2] == b.Color[2]) &&
3219 (a.Color[3] == b.Color[3]);
3220 }
3221}
3222inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
3223{
3224 return a.ClearValue == b.ClearValue;
3225}
3226inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
3227{
3228 if (a.pSrcResource != b.pSrcResource) return false;
3229 if (a.pDstResource != b.pDstResource) return false;
3230 if (a.SubresourceCount != b.SubresourceCount) return false;
3231 if (a.Format != b.Format) return false;
3232 if (a.ResolveMode != b.ResolveMode) return false;
3233 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
3234 return true;
3235}
3236inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
3237{
3238 if (a.Type != b.Type) return false;
3239 if (a.Type == D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR && !(a.Clear == b.Clear)) return false;
3240 return true;
3241}
3242inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS &a, const D3D12_RENDER_PASS_ENDING_ACCESS &b) noexcept
3243{
3244 if (a.Type != b.Type) return false;
3245 if (a.Type == D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE && !(a.Resolve == b.Resolve)) return false;
3246 return true;
3247}
3248inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
3249{
3250 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3251 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
3252 if (!(a.EndingAccess == b.EndingAccess)) return false;
3253 return true;
3254}
3255inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
3256{
3257 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3258 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
3259 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
3260 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
3261 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
3262 return true;
3263}
3264
3265
3266#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
3267
3268//================================================================================================
3269// D3DX12 State Object Creation Helpers
3270//
3271// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
3272// Uses STL
3273//
3274// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see it's public methods).
3275// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
3276// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
3277// etc.). The subobject helpers each have methods specific to the subobject for configuring it's
3278// contents.
3279//
3280//================================================================================================
3281#include <list>
3282#include <vector>
3283#include <string>
3284#include <memory>
3285#ifndef D3DX12_USE_ATL
3286#include <wrl/client.h>
3287#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
3288#define D3DX12_COM_PTR_GET(x) x.Get()
3289#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
3290#else
3291#include <atlbase.h>
3292#define D3DX12_COM_PTR ATL::CComPtr
3293#define D3DX12_COM_PTR_GET(x) x.p
3294#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
3295#endif
3296
3297//------------------------------------------------------------------------------------------------
3298class CD3DX12_STATE_OBJECT_DESC
3299{
3300public:
3301 CD3DX12_STATE_OBJECT_DESC() noexcept
3302 {
3303 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3304 }
3305 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
3306 {
3307 Init(Type);
3308 }
3309 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
3310 operator const D3D12_STATE_OBJECT_DESC&()
3311 {
3312 // Do final preparation work
3313 m_RepointedAssociations.clear();
3314 m_SubobjectArray.clear();
3315 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
3316 // Flatten subobjects into an array (each flattened subobject still has a
3317 // member that's a pointer to it's desc that's not flattened)
3318 for (auto Iter = m_SubobjectList.begin();
3319 Iter != m_SubobjectList.end(); Iter++)
3320 {
3321 m_SubobjectArray.push_back(*Iter);
3322 // Store new location in array so we can redirect pointers contained in subobjects
3323 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
3324 }
3325 // For subobjects with pointer fields, create a new copy of those subobject definitions
3326 // with fixed pointers
3327 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
3328 {
3329 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
3330 {
3331 auto pOriginalSubobjectAssociation =
3332 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
3333 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
3334 auto pWrapper =
3335 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
3336 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
3337 m_RepointedAssociations.push_back(Repointed);
3338 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
3339 }
3340 }
3341 // Below: using ugly way to get pointer in case .data() is not defined
3342 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
3343 return m_Desc;
3344 }
3345 operator const D3D12_STATE_OBJECT_DESC*()
3346 {
3347 // Cast calls the above final preparation work
3348 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
3349 }
3350
3351 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
3352 // whose lifetime is owned by this class.
3353 // e.g.
3354 //
3355 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3356 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
3357 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
3358 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
3359 // // data/engine driven
3360 // etc.
3361 //
3362 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
3363 // variables instead, passing the state object desc that should point to it into the helper
3364 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
3365 // In this alternative scenario, the user must keep the subobject alive as long as the state
3366 // object it is associated with is alive, else it's pointer references will be stale.
3367 // e.g.
3368 //
3369 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
3370 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
3371 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
3372 // // - meaning all exports in the libraries
3373 // // are exported
3374 // etc.
3375
3376 template<typename T>
3377 T* CreateSubobject()
3378 {
3379 T* pSubobject = new T(*this);
3380 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
3381 return pSubobject;
3382 }
3383
3384private:
3385 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
3386 {
3387 SUBOBJECT_WRAPPER Subobject;
3388 Subobject.pSubobjectArrayLocation = nullptr;
3389 Subobject.Type = Type;
3390 Subobject.pDesc = pDesc;
3391 m_SubobjectList.push_back(Subobject);
3392 m_Desc.NumSubobjects++;
3393 return &m_SubobjectList.back();
3394 }
3395 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
3396 {
3397 SetStateObjectType(Type);
3398 m_Desc.pSubobjects = nullptr;
3399 m_Desc.NumSubobjects = 0;
3400 m_SubobjectList.clear();
3401 m_SubobjectArray.clear();
3402 m_RepointedAssociations.clear();
3403 }
3404 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
3405 {
3406 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
3407 // for repointing pointers in subobjects
3408 } SUBOBJECT_WRAPPER;
3409 D3D12_STATE_OBJECT_DESC m_Desc;
3410 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
3411 // these can be edited live
3412 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
3413
3414 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
3415 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
3416 // repointed to flattened array
3417
3418 class StringContainer
3419 {
3420 public:
3421 LPCWSTR LocalCopy(LPCWSTR string, bool bSingleString = false)
3422 {
3423 if (string)
3424 {
3425 if (bSingleString)
3426 {
3427 m_Strings.clear();
3428 m_Strings.push_back(string);
3429 }
3430 else
3431 {
3432 m_Strings.push_back(string);
3433 }
3434 return m_Strings.back().c_str();
3435 }
3436 else
3437 {
3438 return nullptr;
3439 }
3440 }
3441 void clear() noexcept { m_Strings.clear(); }
3442 private:
3443 std::list<std::wstring> m_Strings;
3444 };
3445
3446 class SUBOBJECT_HELPER_BASE
3447 {
3448 public:
3449 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
3450 virtual ~SUBOBJECT_HELPER_BASE() = default;
3451 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
3452 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3453 {
3454 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
3455 }
3456 protected:
3457 virtual void* Data() noexcept = 0;
3458 void Init() noexcept { m_pSubobject = nullptr; }
3459 D3D12_STATE_SUBOBJECT* m_pSubobject;
3460 };
3461
3462#if(__cplusplus >= 201103L)
3463 std::list<std::unique_ptr<const SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
3464#else
3465 class OWNED_HELPER
3466 {
3467 public:
3468 OWNED_HELPER(const SUBOBJECT_HELPER_BASE* pHelper) noexcept { m_pHelper = pHelper; }
3469 ~OWNED_HELPER() { delete m_pHelper; }
3470 const SUBOBJECT_HELPER_BASE* m_pHelper;
3471 };
3472
3473 std::list<OWNED_HELPER> m_OwnedSubobjectHelpers;
3474#endif
3475
3476 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
3477 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
3478 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
3479 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3480 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
3481 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
3482 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
3483 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
3484 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
3485 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
3486 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
3487 friend class CD3DX12_NODE_MASK_SUBOBJECT;
3488};
3489
3490//------------------------------------------------------------------------------------------------
3491class CD3DX12_DXIL_LIBRARY_SUBOBJECT
3492 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3493{
3494public:
3495 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
3496 {
3497 Init();
3498 }
3499 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3500 {
3501 Init();
3502 AddToStateObject(ContainingStateObject);
3503 }
3504 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
3505 {
3506 static const D3D12_SHADER_BYTECODE Default = {};
3507 m_Desc.DXILLibrary = pCode ? *pCode : Default;
3508 }
3509 void DefineExport(
3510 LPCWSTR Name,
3511 LPCWSTR ExportToRename = nullptr,
3512 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3513 {
3514 D3D12_EXPORT_DESC Export;
3515 Export.Name = m_Strings.LocalCopy(Name);
3516 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3517 Export.Flags = Flags;
3518 m_Exports.push_back(Export);
3519 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3520 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3521 }
3522 template<size_t N>
3523 void DefineExports(LPCWSTR(&Exports)[N])
3524 {
3525 for (UINT i = 0; i < N; i++)
3526 {
3527 DefineExport(Exports[i]);
3528 }
3529 }
3530 void DefineExports(const LPCWSTR* Exports, UINT N)
3531 {
3532 for (UINT i = 0; i < N; i++)
3533 {
3534 DefineExport(Exports[i]);
3535 }
3536 }
3537 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3538 {
3539 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
3540 }
3541 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3542 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
3543private:
3544 void Init() noexcept
3545 {
3546 SUBOBJECT_HELPER_BASE::Init();
3547 m_Desc = {};
3548 m_Strings.clear();
3549 m_Exports.clear();
3550 }
3551 void* Data() noexcept override { return &m_Desc; }
3552 D3D12_DXIL_LIBRARY_DESC m_Desc;
3553 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3554 std::vector<D3D12_EXPORT_DESC> m_Exports;
3555};
3556
3557//------------------------------------------------------------------------------------------------
3558class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
3559 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3560{
3561public:
3562 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
3563 {
3564 Init();
3565 }
3566 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3567 {
3568 Init();
3569 AddToStateObject(ContainingStateObject);
3570 }
3571 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
3572 {
3573 m_Desc.pExistingCollection = pExistingCollection;
3574 m_CollectionRef = pExistingCollection;
3575 }
3576 void DefineExport(
3577 LPCWSTR Name,
3578 LPCWSTR ExportToRename = nullptr,
3579 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3580 {
3581 D3D12_EXPORT_DESC Export;
3582 Export.Name = m_Strings.LocalCopy(Name);
3583 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3584 Export.Flags = Flags;
3585 m_Exports.push_back(Export);
3586 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3587 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3588 }
3589 template<size_t N>
3590 void DefineExports(LPCWSTR(&Exports)[N])
3591 {
3592 for (UINT i = 0; i < N; i++)
3593 {
3594 DefineExport(Exports[i]);
3595 }
3596 }
3597 void DefineExports(const LPCWSTR* Exports, UINT N)
3598 {
3599 for (UINT i = 0; i < N; i++)
3600 {
3601 DefineExport(Exports[i]);
3602 }
3603 }
3604 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3605 {
3606 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
3607 }
3608 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3609 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
3610private:
3611 void Init() noexcept
3612 {
3613 SUBOBJECT_HELPER_BASE::Init();
3614 m_Desc = {};
3615 m_CollectionRef = nullptr;
3616 m_Strings.clear();
3617 m_Exports.clear();
3618 }
3619 void* Data() noexcept override { return &m_Desc; }
3620 D3D12_EXISTING_COLLECTION_DESC m_Desc;
3621 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
3622 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3623 std::vector<D3D12_EXPORT_DESC> m_Exports;
3624};
3625
3626//------------------------------------------------------------------------------------------------
3627class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
3628 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3629{
3630public:
3631 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
3632 {
3633 Init();
3634 }
3635 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3636 {
3637 Init();
3638 AddToStateObject(ContainingStateObject);
3639 }
3640 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
3641 {
3642 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
3643 }
3644 void AddExport(LPCWSTR Export)
3645 {
3646 m_Desc.NumExports++;
3647 m_Exports.push_back(m_Strings.LocalCopy(Export));
3648 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3649 }
3650 template<size_t N>
3651 void AddExports(LPCWSTR (&Exports)[N])
3652 {
3653 for (UINT i = 0; i < N; i++)
3654 {
3655 AddExport(Exports[i]);
3656 }
3657 }
3658 void AddExports(const LPCWSTR* Exports, UINT N)
3659 {
3660 for (UINT i = 0; i < N; i++)
3661 {
3662 AddExport(Exports[i]);
3663 }
3664 }
3665 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3666 {
3667 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3668 }
3669 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3670 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3671private:
3672 void Init() noexcept
3673 {
3674 SUBOBJECT_HELPER_BASE::Init();
3675 m_Desc = {};
3676 m_Strings.clear();
3677 m_Exports.clear();
3678 }
3679 void* Data() noexcept override { return &m_Desc; }
3680 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3681 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3682 std::vector<LPCWSTR> m_Exports;
3683};
3684
3685//------------------------------------------------------------------------------------------------
3686class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
3687 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3688{
3689public:
3690 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
3691 {
3692 Init();
3693 }
3694 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3695 {
3696 Init();
3697 AddToStateObject(ContainingStateObject);
3698 }
3699 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
3700 {
3701 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
3702 }
3703 void AddExport(LPCWSTR Export)
3704 {
3705 m_Desc.NumExports++;
3706 m_Exports.push_back(m_Strings.LocalCopy(Export));
3707 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3708 }
3709 template<size_t N>
3710 void AddExports(LPCWSTR (&Exports)[N])
3711 {
3712 for (UINT i = 0; i < N; i++)
3713 {
3714 AddExport(Exports[i]);
3715 }
3716 }
3717 void AddExports(const LPCWSTR* Exports, UINT N)
3718 {
3719 for (UINT i = 0; i < N; i++)
3720 {
3721 AddExport(Exports[i]);
3722 }
3723 }
3724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3725 {
3726 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3727 }
3728 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3729 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3730private:
3731 void Init() noexcept
3732 {
3733 SUBOBJECT_HELPER_BASE::Init();
3734 m_Desc = {};
3735 m_Strings.clear();
3736 m_SubobjectName.clear();
3737 m_Exports.clear();
3738 }
3739 void* Data() noexcept override { return &m_Desc; }
3740 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3741 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3742 CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
3743 std::vector<LPCWSTR> m_Exports;
3744};
3745
3746//------------------------------------------------------------------------------------------------
3747class CD3DX12_HIT_GROUP_SUBOBJECT
3748 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3749{
3750public:
3751 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
3752 {
3753 Init();
3754 }
3755 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3756 {
3757 Init();
3758 AddToStateObject(ContainingStateObject);
3759 }
3760 void SetHitGroupExport(LPCWSTR exportName)
3761 {
3762 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
3763 }
3764 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
3765 void SetAnyHitShaderImport(LPCWSTR importName)
3766 {
3767 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
3768 }
3769 void SetClosestHitShaderImport(LPCWSTR importName)
3770 {
3771 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
3772 }
3773 void SetIntersectionShaderImport(LPCWSTR importName)
3774 {
3775 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
3776 }
3777 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3778 {
3779 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
3780 }
3781 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3782 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
3783private:
3784 void Init() noexcept
3785 {
3786 SUBOBJECT_HELPER_BASE::Init();
3787 m_Desc = {};
3788 for (UINT i = 0; i < m_NumStrings; i++)
3789 {
3790 m_Strings[i].clear();
3791 }
3792 }
3793 void* Data() noexcept override { return &m_Desc; }
3794 D3D12_HIT_GROUP_DESC m_Desc;
3795 static const UINT m_NumStrings = 4;
3796 CD3DX12_STATE_OBJECT_DESC::StringContainer
3797 m_Strings[m_NumStrings]; // one string for every entrypoint name
3798};
3799
3800//------------------------------------------------------------------------------------------------
3801class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
3802 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3803{
3804public:
3805 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
3806 {
3807 Init();
3808 }
3809 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3810 {
3811 Init();
3812 AddToStateObject(ContainingStateObject);
3813 }
3814 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
3815 {
3816 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
3817 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
3818 }
3819 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3820 {
3821 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
3822 }
3823 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3824 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
3825private:
3826 void Init() noexcept
3827 {
3828 SUBOBJECT_HELPER_BASE::Init();
3829 m_Desc = {};
3830 }
3831 void* Data() noexcept override { return &m_Desc; }
3832 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
3833};
3834
3835//------------------------------------------------------------------------------------------------
3836class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
3837 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3838{
3839public:
3840 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
3841 {
3842 Init();
3843 }
3844 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3845 {
3846 Init();
3847 AddToStateObject(ContainingStateObject);
3848 }
3849 void Config(UINT MaxTraceRecursionDepth) noexcept
3850 {
3851 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3852 }
3853 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3854 {
3855 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
3856 }
3857 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3858 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
3859private:
3860 void Init() noexcept
3861 {
3862 SUBOBJECT_HELPER_BASE::Init();
3863 m_Desc = {};
3864 }
3865 void* Data() noexcept override { return &m_Desc; }
3866 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
3867};
3868
3869//------------------------------------------------------------------------------------------------
3870class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
3871 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3872{
3873public:
3874 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
3875 {
3876 Init();
3877 }
3878 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3879 {
3880 Init();
3881 AddToStateObject(ContainingStateObject);
3882 }
3883 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
3884 {
3885 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3886 m_Desc.Flags = Flags;
3887 }
3888 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3889 {
3890 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
3891 }
3892 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3893 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
3894private:
3895 void Init() noexcept
3896 {
3897 SUBOBJECT_HELPER_BASE::Init();
3898 m_Desc = {};
3899 }
3900 void* Data() noexcept override { return &m_Desc; }
3901 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
3902};
3903
3904//------------------------------------------------------------------------------------------------
3905class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
3906 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3907{
3908public:
3909 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3910 {
3911 Init();
3912 }
3913 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3914 {
3915 Init();
3916 AddToStateObject(ContainingStateObject);
3917 }
3918 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3919 {
3920 m_pRootSig = pRootSig;
3921 }
3922 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3923 {
3924 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
3925 }
3926 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3927 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3928private:
3929 void Init() noexcept
3930 {
3931 SUBOBJECT_HELPER_BASE::Init();
3932 m_pRootSig = nullptr;
3933 }
3934 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3935 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3936};
3937
3938//------------------------------------------------------------------------------------------------
3939class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
3940 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3941{
3942public:
3943 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3944 {
3945 Init();
3946 }
3947 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3948 {
3949 Init();
3950 AddToStateObject(ContainingStateObject);
3951 }
3952 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3953 {
3954 m_pRootSig = pRootSig;
3955 }
3956 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3957 {
3958 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
3959 }
3960 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3961 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3962private:
3963 void Init() noexcept
3964 {
3965 SUBOBJECT_HELPER_BASE::Init();
3966 m_pRootSig = nullptr;
3967 }
3968 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3969 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3970};
3971
3972//------------------------------------------------------------------------------------------------
3973class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
3974 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3975{
3976public:
3977 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
3978 {
3979 Init();
3980 }
3981 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3982 {
3983 Init();
3984 AddToStateObject(ContainingStateObject);
3985 }
3986 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
3987 {
3988 m_Desc.Flags = Flags;
3989 }
3990 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3991 {
3992 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
3993 }
3994 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3995 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
3996private:
3997 void Init() noexcept
3998 {
3999 SUBOBJECT_HELPER_BASE::Init();
4000 m_Desc = {};
4001 }
4002 void* Data() noexcept override { return &m_Desc; }
4003 D3D12_STATE_OBJECT_CONFIG m_Desc;
4004};
4005
4006//------------------------------------------------------------------------------------------------
4007class CD3DX12_NODE_MASK_SUBOBJECT
4008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
4009{
4010public:
4011 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
4012 {
4013 Init();
4014 }
4015 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
4016 {
4017 Init();
4018 AddToStateObject(ContainingStateObject);
4019 }
4020 void SetNodeMask(UINT NodeMask) noexcept
4021 {
4022 m_Desc.NodeMask = NodeMask;
4023 }
4024 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
4025 {
4026 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
4027 }
4028 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
4029 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
4030private:
4031 void Init() noexcept
4032 {
4033 SUBOBJECT_HELPER_BASE::Init();
4034 m_Desc = {};
4035 }
4036 void* Data() noexcept override { return &m_Desc; }
4037 D3D12_NODE_MASK m_Desc;
4038};
4039
4040#undef D3DX12_COM_PTR
4041#undef D3DX12_COM_PTR_GET
4042#undef D3DX12_COM_PTR_ADDRESSOF
4043#endif // #ifndef D3DX12_NO_STATE_OBJECT_HELPERS
4044
4045#endif // defined( __cplusplus )
4046
4047#endif //__D3DX12_H__
4048
4049
diff --git a/contrib/DirectX-Headers/include/directx/dxcore.h b/contrib/DirectX-Headers/include/directx/dxcore.h
new file mode 100644
index 0000000..4244eaa
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore.h
@@ -0,0 +1,41 @@
1/************************************************************
2* *
3* Copyright (c) Microsoft Corporation. *
4* Licensed under the MIT license. *
5* *
6************************************************************/
7
8#ifndef _DXCOREEXTMODULE_H_
9#define _DXCOREEXTMODULE_H_
10
11#include <winapifamily.h>
12#include "dxcore_interface.h"
13
14#pragma region Application Family or OneCore Family
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
16
17#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
18
19STDAPI
20DXCoreCreateAdapterFactory(
21 REFIID riid,
22 _COM_Outptr_ void** ppvFactory
23);
24
25template <class T>
26HRESULT
27DXCoreCreateAdapterFactory(
28 _COM_Outptr_ T** ppvFactory
29)
30{
31 return DXCoreCreateAdapterFactory(IID_PPV_ARGS(ppvFactory));
32}
33
34#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
35
36#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
37#pragma endregion
38
39#endif // _DXCOREEXTMODULE_H_
40
41
diff --git a/contrib/DirectX-Headers/include/directx/dxcore_interface.h b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
new file mode 100644
index 0000000..b487fe1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
@@ -0,0 +1,316 @@
1//
2// DXCore Interface
3// Copyright (C) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6
7#ifndef __dxcore_interface_h__
8#define __dxcore_interface_h__
9
10#ifndef COM_NO_WINDOWS_H
11#include "windows.h"
12#include "ole2.h"
13#endif /*COM_NO_WINDOWS_H*/
14
15#include <stdint.h>
16
17#ifdef __cplusplus
18
19#define _FACDXCORE 0x880
20#define MAKE_DXCORE_HRESULT( code ) MAKE_HRESULT( 1, _FACDXCORE, code )
21
22enum class DXCoreAdapterProperty : uint32_t
23{
24 InstanceLuid = 0,
25 DriverVersion = 1,
26 DriverDescription = 2,
27 HardwareID = 3, // Use HardwareIDParts instead, if available.
28 KmdModelVersion = 4,
29 ComputePreemptionGranularity = 5,
30 GraphicsPreemptionGranularity = 6,
31 DedicatedAdapterMemory = 7,
32 DedicatedSystemMemory = 8,
33 SharedSystemMemory = 9,
34 AcgCompatible = 10,
35 IsHardware = 11,
36 IsIntegrated = 12,
37 IsDetachable = 13,
38 HardwareIDParts = 14
39};
40
41enum class DXCoreAdapterState : uint32_t
42{
43 IsDriverUpdateInProgress = 0,
44 AdapterMemoryBudget = 1
45};
46
47enum class DXCoreSegmentGroup : uint32_t
48{
49 Local = 0,
50 NonLocal = 1
51};
52
53enum class DXCoreNotificationType : uint32_t
54{
55 AdapterListStale = 0,
56 AdapterNoLongerValid = 1,
57 AdapterBudgetChange = 2,
58 AdapterHardwareContentProtectionTeardown = 3
59};
60
61enum class DXCoreAdapterPreference : uint32_t
62{
63 Hardware = 0,
64 MinimumPower = 1,
65 HighPerformance = 2
66};
67
68struct DXCoreHardwareID
69{
70 uint32_t vendorID;
71 uint32_t deviceID;
72 uint32_t subSysID;
73 uint32_t revision;
74};
75
76struct DXCoreHardwareIDParts
77{
78 uint32_t vendorID;
79 uint32_t deviceID;
80 uint32_t subSystemID;
81 uint32_t subVendorID;
82 uint32_t revisionID;
83};
84
85struct DXCoreAdapterMemoryBudgetNodeSegmentGroup
86{
87 uint32_t nodeIndex;
88 DXCoreSegmentGroup segmentGroup;
89};
90
91struct DXCoreAdapterMemoryBudget
92{
93 uint64_t budget;
94 uint64_t currentUsage;
95 uint64_t availableForReservation;
96 uint64_t currentReservation;
97};
98
99typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
100 DXCoreNotificationType notificationType,
101 _In_ IUnknown *object,
102 _In_opt_ void *context);
103
104static_assert(sizeof(bool) == 1, "bool assumed as one byte");
105
106DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
107DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
108DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
109DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
110DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
111DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
112
113/* interface IDXCoreAdapter */
114MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
115IDXCoreAdapter : public IUnknown
116{
117public:
118 virtual bool STDMETHODCALLTYPE IsValid() = 0;
119
120 virtual bool STDMETHODCALLTYPE IsAttributeSupported(
121 REFGUID attributeGUID) = 0;
122
123 virtual bool STDMETHODCALLTYPE IsPropertySupported(
124 DXCoreAdapterProperty property) = 0;
125
126 virtual HRESULT STDMETHODCALLTYPE GetProperty(
127 DXCoreAdapterProperty property,
128 size_t bufferSize,
129 _Out_writes_bytes_(bufferSize) void *propertyData) = 0;
130
131 template <class T>
132 HRESULT GetProperty(
133 DXCoreAdapterProperty property,
134 _Out_writes_bytes_(sizeof(T)) T *propertyData)
135 {
136 return GetProperty(property,
137 sizeof(T),
138 (void*)propertyData);
139 }
140
141 virtual HRESULT STDMETHODCALLTYPE GetPropertySize(
142 DXCoreAdapterProperty property,
143 _Out_ size_t *bufferSize) = 0;
144
145 virtual bool STDMETHODCALLTYPE IsQueryStateSupported(
146 DXCoreAdapterState property) = 0;
147
148 virtual HRESULT STDMETHODCALLTYPE QueryState(
149 DXCoreAdapterState state,
150 size_t inputStateDetailsSize,
151 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
152 size_t outputBufferSize,
153 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
154
155 template <class T1, class T2>
156 HRESULT QueryState(
157 DXCoreAdapterState state,
158 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputStateDetails,
159 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
160 {
161 return QueryState(state,
162 sizeof(T1),
163 (const void*)inputStateDetails,
164 sizeof(T2),
165 (void*)outputBuffer);
166 }
167
168 template <class T>
169 HRESULT QueryState(
170 DXCoreAdapterState state,
171 _Out_writes_bytes_(sizeof(T)) T *outputBuffer)
172 {
173 return QueryState(state,
174 0,
175 nullptr,
176 sizeof(T),
177 (void*)outputBuffer);
178 }
179
180 virtual bool STDMETHODCALLTYPE IsSetStateSupported(
181 DXCoreAdapterState property) = 0;
182
183 virtual HRESULT STDMETHODCALLTYPE SetState(
184 DXCoreAdapterState state,
185 size_t inputStateDetailsSize,
186 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
187 size_t inputDataSize,
188 _In_reads_bytes_(inputDataSize) const void *inputData) = 0;
189
190 template <class T1, class T2>
191 HRESULT SetState(
192 DXCoreAdapterState state,
193 const T1 *inputStateDetails,
194 const T2 *inputData)
195 {
196 return SetState(state,
197 sizeof(T1),
198 (const void*)inputStateDetails,
199 sizeof(T2),
200 (const void*)inputData);
201 }
202
203 virtual HRESULT STDMETHODCALLTYPE GetFactory(
204 REFIID riid,
205 _COM_Outptr_ void** ppvFactory
206 ) = 0;
207
208 template <class T>
209 HRESULT GetFactory(
210 _COM_Outptr_ T** ppvFactory
211 )
212 {
213 return GetFactory(IID_PPV_ARGS(ppvFactory));
214 }
215};
216
217/* interface IDXCoreAdapterList */
218MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
219IDXCoreAdapterList : public IUnknown
220{
221public:
222 virtual HRESULT STDMETHODCALLTYPE GetAdapter(
223 uint32_t index,
224 REFIID riid,
225 _COM_Outptr_ void **ppvAdapter) = 0;
226
227 template<class T>
228 HRESULT STDMETHODCALLTYPE GetAdapter(
229 uint32_t index,
230 _COM_Outptr_ T **ppvAdapter)
231 {
232 return GetAdapter(index,
233 IID_PPV_ARGS(ppvAdapter));
234 }
235
236 virtual uint32_t STDMETHODCALLTYPE GetAdapterCount() = 0;
237
238 virtual bool STDMETHODCALLTYPE IsStale() = 0;
239
240 virtual HRESULT STDMETHODCALLTYPE GetFactory(
241 REFIID riid,
242 _COM_Outptr_ void** ppvFactory
243 ) = 0;
244
245 template <class T>
246 HRESULT GetFactory(
247 _COM_Outptr_ T** ppvFactory
248 )
249 {
250 return GetFactory(IID_PPV_ARGS(ppvFactory));
251 }
252
253 virtual HRESULT STDMETHODCALLTYPE Sort(
254 uint32_t numPreferences,
255 _In_reads_(numPreferences) const DXCoreAdapterPreference* preferences) = 0;
256
257 virtual bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(
258 DXCoreAdapterPreference preference) = 0;
259};
260
261/* interface IDXCoreAdapterFactory */
262MIDL_INTERFACE("78ee5945-c36e-4b13-a669-005dd11c0f06")
263IDXCoreAdapterFactory : public IUnknown
264{
265public:
266
267 virtual HRESULT STDMETHODCALLTYPE CreateAdapterList(
268 uint32_t numAttributes,
269 _In_reads_(numAttributes) const GUID *filterAttributes,
270 REFIID riid,
271 _COM_Outptr_ void **ppvAdapterList) = 0;
272
273 template<class T>
274 HRESULT STDMETHODCALLTYPE CreateAdapterList(
275 uint32_t numAttributes,
276 _In_reads_(numAttributes) const GUID *filterAttributes,
277 _COM_Outptr_ T **ppvAdapterList)
278 {
279 return CreateAdapterList(numAttributes,
280 filterAttributes,
281 IID_PPV_ARGS(ppvAdapterList));
282 }
283
284 virtual HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
285 const LUID &adapterLUID,
286 REFIID riid,
287 _COM_Outptr_ void **ppvAdapter) = 0;
288
289 template<class T>
290 HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
291 const LUID &adapterLUID,
292 _COM_Outptr_ T **ppvAdapter)
293 {
294 return GetAdapterByLuid(adapterLUID,
295 IID_PPV_ARGS(ppvAdapter));
296 }
297
298 virtual bool STDMETHODCALLTYPE IsNotificationTypeSupported(
299 DXCoreNotificationType notificationType) = 0;
300
301 virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
302 _In_ IUnknown *dxCoreObject,
303 DXCoreNotificationType notificationType,
304 _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
305 _In_opt_ void *callbackContext,
306 _Out_ uint32_t *eventCookie) = 0;
307
308 virtual HRESULT STDMETHODCALLTYPE UnregisterEventNotification(
309 uint32_t eventCookie) = 0;
310};
311
312#endif // __cplusplus
313
314#endif // __dxcore_interface_h__
315
316
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.h b/contrib/DirectX-Headers/include/directx/dxgicommon.h
new file mode 100644
index 0000000..f83aa01
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.h
@@ -0,0 +1,57 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgicommon_h__
7#define __dxgicommon_h__
8
9
10typedef struct DXGI_RATIONAL
11{
12 UINT Numerator;
13 UINT Denominator;
14} DXGI_RATIONAL;
15
16// The following values are used with DXGI_SAMPLE_DESC::Quality:
17#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
18#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
19
20typedef struct DXGI_SAMPLE_DESC
21{
22 UINT Count;
23 UINT Quality;
24} DXGI_SAMPLE_DESC;
25
26typedef enum DXGI_COLOR_SPACE_TYPE
27{
28 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
29 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
30 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
31 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
32 DXGI_COLOR_SPACE_RESERVED = 4,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
39 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
40 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
42 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
45 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
46 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
47 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
48 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
49 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
51 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
52 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
53 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
54} DXGI_COLOR_SPACE_TYPE;
55
56#endif // __dxgicommon_h__
57
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.idl b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
new file mode 100644
index 0000000..ab73230
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
@@ -0,0 +1,52 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef struct DXGI_RATIONAL
8{
9 UINT Numerator;
10 UINT Denominator;
11} DXGI_RATIONAL;
12
13// The following values are used with DXGI_SAMPLE_DESC::Quality:
14#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
15#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
16
17typedef struct DXGI_SAMPLE_DESC
18{
19 UINT Count;
20 UINT Quality;
21} DXGI_SAMPLE_DESC;
22
23typedef enum DXGI_COLOR_SPACE_TYPE
24{
25 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
26 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
27 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
28 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
29 DXGI_COLOR_SPACE_RESERVED = 4,
30 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
31 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
32 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
33 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
34 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
35 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
36 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
37 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
39 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
40 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
42 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
44 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
45 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
46 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
47 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
48 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
49 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
50 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
51} DXGI_COLOR_SPACE_TYPE;
52
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.h b/contrib/DirectX-Headers/include/directx/dxgiformat.h
new file mode 100644
index 0000000..52aae1b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.h
@@ -0,0 +1,142 @@
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
139 DXGI_FORMAT_FORCE_UINT = 0xffffffff
140} DXGI_FORMAT;
141
142#endif // __dxgiformat_h__
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.idl b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
new file mode 100644
index 0000000..d9576ef
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
@@ -0,0 +1,137 @@
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
135 DXGI_FORMAT_FORCE_UINT = 0xffffffff
136} DXGI_FORMAT;
137
diff --git a/contrib/DirectX-Headers/include/dxguids/dxguids.h b/contrib/DirectX-Headers/include/dxguids/dxguids.h
new file mode 100644
index 0000000..4ee66ff
--- /dev/null
+++ b/contrib/DirectX-Headers/include/dxguids/dxguids.h
@@ -0,0 +1,126 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#ifndef __cplusplus
7#error "This header requires C++"
8#endif
9
10constexpr inline bool ConstexprIsEqualGUID(REFGUID a, REFGUID b)
11{
12 return a.Data1 == b.Data1 &&
13 a.Data2 == b.Data2 &&
14 a.Data3 == b.Data3 &&
15 a.Data4[0] == b.Data4[0] &&
16 a.Data4[1] == b.Data4[1] &&
17 a.Data4[2] == b.Data4[2] &&
18 a.Data4[3] == b.Data4[3] &&
19 a.Data4[4] == b.Data4[4] &&
20 a.Data4[5] == b.Data4[5] &&
21 a.Data4[6] == b.Data4[6] &&
22 a.Data4[7] == b.Data4[7];
23}
24
25// Each COM interface (e.g. ID3D12Device) has a unique interface ID (IID) associated with it. With MSVC, the IID is defined
26// along with the interface declaration using compiler intrinsics (__declspec(uuid(...)); the IID can then be retrieved
27// using __uuidof. These intrinsics are not supported with all toolchains, so these helpers redefine IID values that can be
28// used with the various adapter COM helpers (ComPtr, IID_PPV_ARGS, etc.) for Linux. IIDs are stable and cannot change, but as
29// a precaution we statically assert the values are as expected when compiling for Windows.
30#ifdef _WIN32
31// winadapter.h isn't included when building for Windows, so the base function template needs to be declared.
32template <typename T> GUID uuidof() = delete;
33#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
34template <> constexpr GUID uuidof<InterfaceName>() \
35{ \
36 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
37} \
38static_assert(ConstexprIsEqualGUID(uuidof<InterfaceName>(), __uuidof(InterfaceName)), "GUID definition mismatch: "#InterfaceName);
39#else
40#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
41template <> constexpr GUID uuidof<InterfaceName>() \
42{ \
43 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
44}
45#endif
46
47// Direct3D
48WINADAPTER_IID(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8);
49WINADAPTER_IID(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57);
50WINADAPTER_IID(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14);
51WINADAPTER_IID(ID3D12RootSignatureDeserializer, 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46);
52WINADAPTER_IID(ID3D12VersionedRootSignatureDeserializer, 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0);
53WINADAPTER_IID(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6);
54WINADAPTER_IID(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3);
55WINADAPTER_IID(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad);
56WINADAPTER_IID(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24);
57WINADAPTER_IID(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76);
58WINADAPTER_IID(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a);
59WINADAPTER_IID(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45);
60WINADAPTER_IID(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51);
61WINADAPTER_IID(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4);
62WINADAPTER_IID(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1);
63WINADAPTER_IID(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5);
64WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55);
65WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
66WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
67WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
68WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
69WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
70WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
71WINADAPTER_IID(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e);
72WINADAPTER_IID(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28);
73WINADAPTER_IID(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98);
74WINADAPTER_IID(ID3D12ProtectedSession, 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B);
75WINADAPTER_IID(ID3D12ProtectedResourceSession, 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D);
76WINADAPTER_IID(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5);
77WINADAPTER_IID(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8);
78WINADAPTER_IID(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f);
79WINADAPTER_IID(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13);
80WINADAPTER_IID(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d);
81WINADAPTER_IID(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60);
82WINADAPTER_IID(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d);
83WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings, 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63);
84WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings1, 0xDBD5AE51, 0x3317, 0x4F0A, 0xAD, 0xF9, 0x1D, 0x7C, 0xED, 0xCA, 0xAE, 0x0B);
85WINADAPTER_IID(ID3D12DeviceRemovedExtendedData, 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71);
86WINADAPTER_IID(ID3D12DeviceRemovedExtendedData1, 0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06);
87WINADAPTER_IID(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc);
88WINADAPTER_IID(ID3D12ProtectedResourceSession1, 0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09);
89WINADAPTER_IID(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b);
90WINADAPTER_IID(ID3D12Device8, 0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3);
91WINADAPTER_IID(ID3D12Resource1, 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19);
92WINADAPTER_IID(ID3D12Resource2, 0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95);
93WINADAPTER_IID(ID3D12Heap1, 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D);
94WINADAPTER_IID(ID3D12GraphicsCommandList3, 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D);
95WINADAPTER_IID(ID3D12MetaCommand, 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70);
96WINADAPTER_IID(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74);
97WINADAPTER_IID(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8);
98WINADAPTER_IID(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c);
99WINADAPTER_IID(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5);
100WINADAPTER_IID(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7);
101WINADAPTER_IID(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea);
102WINADAPTER_IID(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80);
103
104#ifdef __d3d12sdklayers_h__
105WINADAPTER_IID(ID3D12Debug, 0x344488b7, 0x6846, 0x474b, 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0);
106WINADAPTER_IID(ID3D12Debug1, 0xaffaa4ca, 0x63fe, 0x4d8e, 0xb8, 0xad, 0x15, 0x90, 0x00, 0xaf, 0x43, 0x04);
107WINADAPTER_IID(ID3D12Debug2, 0x93a665c4, 0xa3b2, 0x4e5d, 0xb6, 0x92, 0xa2, 0x6a, 0xe1, 0x4e, 0x33, 0x74);
108WINADAPTER_IID(ID3D12Debug3, 0x5cf4e58f, 0xf671, 0x4ff1, 0xa5, 0x42, 0x36, 0x86, 0xe3, 0xd1, 0x53, 0xd1);
109WINADAPTER_IID(ID3D12Debug4, 0x014b816e, 0x9ec5, 0x4a2f, 0xa8, 0x45, 0xff, 0xbe, 0x44, 0x1c, 0xe1, 0x3a);
110WINADAPTER_IID(ID3D12DebugDevice1, 0xa9b71770, 0xd099, 0x4a65, 0xa6, 0x98, 0x3d, 0xee, 0x10, 0x02, 0x0f, 0x88);
111WINADAPTER_IID(ID3D12DebugDevice, 0x3febd6dd, 0x4973, 0x4787, 0x81, 0x94, 0xe4, 0x5f, 0x9e, 0x28, 0x92, 0x3e);
112WINADAPTER_IID(ID3D12DebugDevice2, 0x60eccbc1, 0x378d, 0x4df1, 0x89, 0x4c, 0xf8, 0xac, 0x5c, 0xe4, 0xd7, 0xdd);
113WINADAPTER_IID(ID3D12DebugCommandQueue, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3a);
114WINADAPTER_IID(ID3D12DebugCommandList1, 0x102ca951, 0x311b, 0x4b01, 0xb1, 0x1f, 0xec, 0xb8, 0x3e, 0x06, 0x1b, 0x37);
115WINADAPTER_IID(ID3D12DebugCommandList, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3f);
116WINADAPTER_IID(ID3D12DebugCommandList2, 0xaeb575cf, 0x4e06, 0x48be, 0xba, 0x3b, 0xc4, 0x50, 0xfc, 0x96, 0x65, 0x2e);
117WINADAPTER_IID(ID3D12SharingContract, 0x0adf7d52, 0x929c, 0x4e61, 0xad, 0xdb, 0xff, 0xed, 0x30, 0xde, 0x66, 0xef);
118WINADAPTER_IID(ID3D12InfoQueue, 0x0742a90b, 0xc387, 0x483f, 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58);
119#endif
120
121// DXCore
122#ifdef __dxcore_interface_h__
123WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
124WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
125WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
126#endif
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpc.h b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
new file mode 100644
index 0000000..5b5f2e8
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once
6#define __RPCNDR_H_VERSION__ \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
new file mode 100644
index 0000000..064c4c2
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include. Unconditionally light up all APIs.
5#pragma once
6#define WINAPI_FAMILY_PARTITION(Partitions) 1 \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
new file mode 100644
index 0000000..43e7d0b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy d3dx12.h include
5#pragma once
6#include "../wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
new file mode 100644
index 0000000..fb2bebc
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy DML TF runtime includes
5#pragma once
6#include "wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/winadapter.h b/contrib/DirectX-Headers/include/wsl/winadapter.h
new file mode 100644
index 0000000..8400f4a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/winadapter.h
@@ -0,0 +1,340 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6// These #defines prevent the idl-generated headers from trying to include
7// Windows.h from the SDK rather than this one.
8#define RPC_NO_WINDOWS_H
9#define COM_NO_WINDOWS_H
10
11// Allcaps type definitions
12#include <stddef.h>
13#include <stdint.h>
14#include <string.h>
15#include <limits.h>
16
17// Note: using fixed-width here to match Windows widths
18// Specifically this is different for 'long' vs 'LONG'
19typedef uint8_t UINT8;
20typedef int8_t INT8;
21typedef uint16_t UINT16;
22typedef int16_t INT16;
23typedef uint32_t UINT32, UINT, ULONG, DWORD, BOOL;
24typedef int32_t INT32, INT, LONG;
25typedef uint64_t UINT64, ULONG_PTR;
26typedef int64_t INT64, LONG_PTR;
27typedef void VOID, *HANDLE, *RPC_IF_HANDLE, *LPVOID;
28typedef const void *LPCVOID;
29typedef size_t SIZE_T;
30typedef float FLOAT;
31typedef double DOUBLE;
32typedef unsigned char BYTE;
33typedef int HWND;
34
35// Note: WCHAR is not the same between Windows and Linux, to enable
36// string manipulation APIs to work with resulting strings.
37// APIs to D3D/DXCore will work on Linux wchars, but beware with
38// interactions directly with the Windows kernel.
39typedef char CHAR, *PSTR, *LPSTR, TCHAR, *PTSTR;
40typedef const char *LPCSTR, *PCSTR, *LPCTSTR, *PCTSTR;
41typedef wchar_t WCHAR, *PWSTR, *LPWSTR, *PWCHAR;
42typedef const wchar_t *LPCWSTR, *PCWSTR;
43
44#undef LONG_MAX
45#define LONG_MAX INT_MAX
46#undef ULONG_MAX
47#define ULONG_MAX UINT_MAX
48
49// Misc defines
50#define interface struct
51#define MIDL_INTERFACE(x) interface
52#define __analysis_assume(x)
53#define TRUE 1u
54#define FALSE 0u
55#define DECLARE_INTERFACE(iface) interface iface
56#define PURE = 0
57#define THIS_
58#define DECLSPEC_UUID(x)
59#define DECLSPEC_NOVTABLE
60#define DECLSPEC_SELECTANY
61#define EXTERN_C extern "C"
62
63typedef struct _GUID {
64 uint32_t Data1;
65 uint16_t Data2;
66 uint16_t Data3;
67 uint8_t Data4[ 8 ];
68} GUID;
69
70#ifdef __cplusplus
71#ifdef INITGUID
72#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
73#else
74#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name
75#endif
76
77template <typename T> GUID uuidof() = delete;
78template <typename T> GUID uuidof(T*) { return uuidof<T>(); }
79template <typename T> GUID uuidof(T**) { return uuidof<T>(); }
80template <typename T> GUID uuidof(T&) { return uuidof<T>(); }
81#define __uuidof(x) uuidof(x)
82#else
83#ifdef INITGUID
84#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
85#else
86#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern const GUID name
87#endif
88#endif
89
90typedef GUID IID;
91typedef GUID UUID;
92typedef GUID CLSID;
93#ifdef __cplusplus
94#define REFGUID const GUID &
95#define REFIID const IID &
96#define REFCLSID const IID &
97
98__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
99{
100 return (
101 ((uint32_t *)&rguid1)[0] == ((uint32_t *)&rguid2)[0] &&
102 ((uint32_t *)&rguid1)[1] == ((uint32_t *)&rguid2)[1] &&
103 ((uint32_t *)&rguid1)[2] == ((uint32_t *)&rguid2)[2] &&
104 ((uint32_t *)&rguid1)[3] == ((uint32_t *)&rguid2)[3]);
105}
106#else
107#define REFGUID const GUID *
108#define REFIID const IID *
109#define REFCLSID const IID *
110#endif
111
112// SAL annotations
113#define _In_
114#define _In_z_
115#define _In_opt_
116#define _In_opt_z_
117#define _In_reads_(x)
118#define _In_reads_opt_(x)
119#define _In_reads_bytes_(x)
120#define _In_reads_bytes_opt_(x)
121#define _In_range_(x, y)
122#define _In_bytecount_(x)
123#define _Out_
124#define _Out_opt_
125#define _Outptr_
126#define _Outptr_opt_result_z_
127#define _Outptr_opt_result_bytebuffer_(x)
128#define _COM_Outptr_
129#define _COM_Outptr_result_maybenull_
130#define _COM_Outptr_opt_
131#define _COM_Outptr_opt_result_maybenull_
132#define _Out_writes_(x)
133#define _Out_writes_z_(x)
134#define _Out_writes_opt_(x)
135#define _Out_writes_all_(x)
136#define _Out_writes_all_opt_(x)
137#define _Out_writes_to_opt_(x, y)
138#define _Out_writes_bytes_(x)
139#define _Out_writes_bytes_all_(x)
140#define _Out_writes_bytes_all_opt_(x)
141#define _Out_writes_bytes_opt_(x)
142#define _Inout_
143#define _Inout_opt_
144#define _Inout_updates_(x)
145#define _Inout_updates_bytes_(x)
146#define _Field_size_(x)
147#define _Field_size_opt_(x)
148#define _Field_size_bytes_(x)
149#define _Field_size_full_(x)
150#define _Field_size_bytes_full_(x)
151#define _Field_size_bytes_full_opt_(x)
152#define _Field_size_bytes_part_(x, y)
153#define _Field_range_(x, y)
154#define _Field_z_
155#define _Check_return_
156#define _IRQL_requires_(x)
157#define _IRQL_requires_min_(x)
158#define _IRQL_requires_max_(x)
159#define _At_(x, y)
160#define _Always_(x)
161#define _Return_type_success_(x)
162#define _Translates_Win32_to_HRESULT_(x)
163#define _Maybenull_
164#define _Outptr_result_maybenull_
165#define _Outptr_result_nullonfailure_
166#define _Analysis_assume_(x)
167#define _Success_(x)
168#define _In_count_(x)
169#define _In_opt_count_(x)
170#define _Use_decl_annotations_
171
172// Calling conventions
173#define __cdecl
174#define __stdcall
175#define STDMETHODCALLTYPE
176#define STDAPICALLTYPE
177#define STDAPI extern "C" HRESULT STDAPICALLTYPE
178#define WINAPI
179#define STDMETHOD(name) virtual HRESULT name
180#define STDMETHOD_(type,name) virtual type name
181#define IFACEMETHOD(method) /*__override*/ STDMETHOD(method)
182#define IFACEMETHOD_(type, method) /*__override*/ STDMETHOD_(type, method)
183
184// Error codes
185typedef LONG HRESULT;
186#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
187#define FAILED(hr) (((HRESULT)(hr)) < 0)
188#define S_OK ((HRESULT)0L)
189#define S_FALSE ((HRESULT)1L)
190#define E_NOTIMPL ((HRESULT)0x80000001L)
191#define E_OUTOFMEMORY ((HRESULT)0x80000002L)
192#define E_INVALIDARG ((HRESULT)0x80000003L)
193#define E_NOINTERFACE ((HRESULT)0x80000004L)
194#define E_POINTER ((HRESULT)0x80000005L)
195#define E_HANDLE ((HRESULT)0x80000006L)
196#define E_ABORT ((HRESULT)0x80000007L)
197#define E_FAIL ((HRESULT)0x80000008L)
198#define E_ACCESSDENIED ((HRESULT)0x80000009L)
199#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
200#define DXGI_ERROR_DEVICE_HUNG ((HRESULT)0x887A0006L)
201#define DXGI_ERROR_DEVICE_REMOVED ((HRESULT)0x887A0005L)
202#define DXGI_ERROR_DEVICE_RESET ((HRESULT)0x887A0007L)
203#define DXGI_ERROR_DRIVER_INTERNAL_ERROR ((HRESULT)0x887A0020L)
204#define DXGI_ERROR_INVALID_CALL ((HRESULT)0x887A0001L)
205
206typedef struct _LUID
207{
208 ULONG LowPart;
209 LONG HighPart;
210} LUID;
211
212struct RECT
213{
214 int left;
215 int top;
216 int right;
217 int bottom;
218};
219
220typedef union _LARGE_INTEGER {
221 struct {
222 uint32_t LowPart;
223 uint32_t HighPart;
224 } u;
225 int64_t QuadPart;
226} LARGE_INTEGER;
227
228typedef union _ULARGE_INTEGER {
229 struct {
230 uint32_t LowPart;
231 uint32_t HighPart;
232 } u;
233 uint64_t QuadPart;
234} ULARGE_INTEGER;
235
236struct SECURITY_ATTRIBUTES;
237struct STATSTG;
238
239#ifdef __cplusplus
240// ENUM_FLAG_OPERATORS
241// Define operator overloads to enable bit operations on enum values that are
242// used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
243// operators on YOUR_TYPE.
244extern "C++" {
245 template <size_t S>
246 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
247
248 template <>
249 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1>
250 {
251 typedef int8_t type;
252 };
253
254 template <>
255 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2>
256 {
257 typedef int16_t type;
258 };
259
260 template <>
261 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4>
262 {
263 typedef int32_t type;
264 };
265
266 template <>
267 struct _ENUM_FLAG_INTEGER_FOR_SIZE<8>
268 {
269 typedef int64_t type;
270 };
271
272 // used as an approximation of std::underlying_type<T>
273 template <class T>
274 struct _ENUM_FLAG_SIZED_INTEGER
275 {
276 typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
277 };
278
279}
280#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
281extern "C++" { \
282inline constexpr ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
283inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
284inline constexpr ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
285inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
286inline constexpr ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); } \
287inline constexpr ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
288inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
289}
290#endif
291
292// D3DX12 uses these
293#include <stdlib.h>
294#define HeapAlloc(heap, flags, size) malloc(size)
295#define HeapFree(heap, flags, ptr) free(ptr)
296
297#ifdef __cplusplus
298// IUnknown
299
300interface DECLSPEC_UUID("00000000-0000-0000-C000-000000000046") DECLSPEC_NOVTABLE IUnknown
301{
302 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;
303 virtual ULONG STDMETHODCALLTYPE AddRef() = 0;
304 virtual ULONG STDMETHODCALLTYPE Release() = 0;
305
306 template <class Q> HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) {
307 return QueryInterface(uuidof<Q>(), (void **)pp);
308 }
309};
310
311template <> constexpr GUID uuidof<IUnknown>()
312{
313 return { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
314}
315
316extern "C++"
317{
318 template<typename T> void** IID_PPV_ARGS_Helper(T** pp)
319 {
320 static_cast<IUnknown*>(*pp);
321 return reinterpret_cast<void**>(pp);
322 }
323}
324
325#define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), IID_PPV_ARGS_Helper(ppType)
326#endif
327
328#if defined(lint)
329// Note: lint -e530 says don't complain about uninitialized variables for
330// this variable. Error 527 has to do with unreachable code.
331// -restore restores checking to the -save state
332#define UNREFERENCED_PARAMETER(P) \
333 /*lint -save -e527 -e530 */ \
334 { \
335 (P) = (P); \
336 } \
337 /*lint -restore */
338#else
339#define UNREFERENCED_PARAMETER(P) (P)
340#endif
diff --git a/contrib/DirectX-Headers/include/wsl/wrladapter.h b/contrib/DirectX-Headers/include/wsl/wrladapter.h
new file mode 100644
index 0000000..883ecab
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/wrladapter.h
@@ -0,0 +1,801 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "winadapter.h"
7
8// defined by winadapter.h and needed by some windows headers, but conflicts
9// with some libc++ implementation headers
10#ifdef __in
11#undef __in
12#endif
13#ifdef __out
14#undef __out
15#endif
16
17#include <type_traits>
18#include <atomic>
19#include <memory>
20#include <climits>
21#include <cassert>
22
23namespace Microsoft
24{
25namespace WRL
26{
27 namespace Details
28 {
29 struct BoolStruct { int Member; };
30 typedef int BoolStruct::* BoolType;
31
32 template <typename T> // T should be the ComPtr<T> or a derived type of it, not just the interface
33 class ComPtrRefBase
34 {
35 public:
36 typedef typename T::InterfaceType InterfaceType;
37
38 operator IUnknown**() const throw()
39 {
40 static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast: InterfaceType does not derive from IUnknown");
41 return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
42 }
43
44 protected:
45 T* ptr_;
46 };
47
48 template <typename T>
49 class ComPtrRef : public Details::ComPtrRefBase<T> // T should be the ComPtr<T> or a derived type of it, not just the interface
50 {
51 using Super = Details::ComPtrRefBase<T>;
52 using InterfaceType = typename Super::InterfaceType;
53 public:
54 ComPtrRef(_In_opt_ T* ptr) throw()
55 {
56 this->ptr_ = ptr;
57 }
58
59 // Conversion operators
60 operator void**() const throw()
61 {
62 return reinterpret_cast<void**>(this->ptr_->ReleaseAndGetAddressOf());
63 }
64
65 // This is our operator ComPtr<U> (or the latest derived class from ComPtr (e.g. WeakRef))
66 operator T*() throw()
67 {
68 *this->ptr_ = nullptr;
69 return this->ptr_;
70 }
71
72 // We define operator InterfaceType**() here instead of on ComPtrRefBase<T>, since
73 // if InterfaceType is IUnknown or IInspectable, having it on the base will collide.
74 operator InterfaceType**() throw()
75 {
76 return this->ptr_->ReleaseAndGetAddressOf();
77 }
78
79 // This is used for IID_PPV_ARGS in order to do __uuidof(**(ppType)).
80 // It does not need to clear ptr_ at this point, it is done at IID_PPV_ARGS_Helper(ComPtrRef&) later in this file.
81 InterfaceType* operator *() throw()
82 {
83 return this->ptr_->Get();
84 }
85
86 // Explicit functions
87 InterfaceType* const * GetAddressOf() const throw()
88 {
89 return this->ptr_->GetAddressOf();
90 }
91
92 InterfaceType** ReleaseAndGetAddressOf() throw()
93 {
94 return this->ptr_->ReleaseAndGetAddressOf();
95 }
96 };
97 }
98
99 template <typename T>
100 class ComPtr
101 {
102 public:
103 typedef T InterfaceType;
104
105 protected:
106 InterfaceType *ptr_;
107 template<class U> friend class ComPtr;
108
109 void InternalAddRef() const throw()
110 {
111 if (ptr_ != nullptr)
112 {
113 ptr_->AddRef();
114 }
115 }
116
117 unsigned long InternalRelease() throw()
118 {
119 unsigned long ref = 0;
120 T* temp = ptr_;
121
122 if (temp != nullptr)
123 {
124 ptr_ = nullptr;
125 ref = temp->Release();
126 }
127
128 return ref;
129 }
130
131 public:
132 ComPtr() throw() : ptr_(nullptr)
133 {
134 }
135
136 ComPtr(decltype(nullptr)) throw() : ptr_(nullptr)
137 {
138 }
139
140 template<class U>
141 ComPtr(_In_opt_ U *other) throw() : ptr_(other)
142 {
143 InternalAddRef();
144 }
145
146 ComPtr(const ComPtr& other) throw() : ptr_(other.ptr_)
147 {
148 InternalAddRef();
149 }
150
151 // copy constructor that allows to instantiate class when U* is convertible to T*
152 template<class U>
153 ComPtr(const ComPtr<U> &other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
154 ptr_(other.ptr_)
155 {
156 InternalAddRef();
157 }
158
159 ComPtr(_Inout_ ComPtr &&other) throw() : ptr_(nullptr)
160 {
161 if (this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
162 {
163 Swap(other);
164 }
165 }
166
167 // Move constructor that allows instantiation of a class when U* is convertible to T*
168 template<class U>
169 ComPtr(_Inout_ ComPtr<U>&& other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
170 ptr_(other.ptr_)
171 {
172 other.ptr_ = nullptr;
173 }
174
175 ~ComPtr() throw()
176 {
177 InternalRelease();
178 }
179
180 ComPtr& operator=(decltype(nullptr)) throw()
181 {
182 InternalRelease();
183 return *this;
184 }
185
186 ComPtr& operator=(_In_opt_ T *other) throw()
187 {
188 if (ptr_ != other)
189 {
190 ComPtr(other).Swap(*this);
191 }
192 return *this;
193 }
194
195 template <typename U>
196 ComPtr& operator=(_In_opt_ U *other) throw()
197 {
198 ComPtr(other).Swap(*this);
199 return *this;
200 }
201
202 ComPtr& operator=(const ComPtr &other) throw()
203 {
204 if (ptr_ != other.ptr_)
205 {
206 ComPtr(other).Swap(*this);
207 }
208 return *this;
209 }
210
211 template<class U>
212 ComPtr& operator=(const ComPtr<U>& other) throw()
213 {
214 ComPtr(other).Swap(*this);
215 return *this;
216 }
217
218 ComPtr& operator=(_Inout_ ComPtr &&other) throw()
219 {
220 ComPtr(static_cast<ComPtr&&>(other)).Swap(*this);
221 return *this;
222 }
223
224 template<class U>
225 ComPtr& operator=(_Inout_ ComPtr<U>&& other) throw()
226 {
227 ComPtr(static_cast<ComPtr<U>&&>(other)).Swap(*this);
228 return *this;
229 }
230
231 void Swap(_Inout_ ComPtr&& r) throw()
232 {
233 T* tmp = ptr_;
234 ptr_ = r.ptr_;
235 r.ptr_ = tmp;
236 }
237
238 void Swap(_Inout_ ComPtr& r) throw()
239 {
240 T* tmp = ptr_;
241 ptr_ = r.ptr_;
242 r.ptr_ = tmp;
243 }
244
245 operator Details::BoolType() const throw()
246 {
247 return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
248 }
249
250 T* Get() const throw()
251 {
252 return ptr_;
253 }
254
255 InterfaceType* operator->() const throw()
256 {
257 return ptr_;
258 }
259
260 Details::ComPtrRef<ComPtr<T>> operator&() throw()
261 {
262 return Details::ComPtrRef<ComPtr<T>>(this);
263 }
264
265 const Details::ComPtrRef<const ComPtr<T>> operator&() const throw()
266 {
267 return Details::ComPtrRef<const ComPtr<T>>(this);
268 }
269
270 T* const* GetAddressOf() const throw()
271 {
272 return &ptr_;
273 }
274
275 T** GetAddressOf() throw()
276 {
277 return &ptr_;
278 }
279
280 T** ReleaseAndGetAddressOf() throw()
281 {
282 InternalRelease();
283 return &ptr_;
284 }
285
286 T* Detach() throw()
287 {
288 T* ptr = ptr_;
289 ptr_ = nullptr;
290 return ptr;
291 }
292
293 void Attach(_In_opt_ InterfaceType* other) throw()
294 {
295 if (ptr_ != nullptr)
296 {
297 auto ref = ptr_->Release();
298 // DBG_UNREFERENCED_LOCAL_VARIABLE(ref);
299 // Attaching to the same object only works if duplicate references are being coalesced. Otherwise
300 // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference.
301 assert(ref != 0 || ptr_ != other);
302 }
303
304 ptr_ = other;
305 }
306
307 unsigned long Reset()
308 {
309 return InternalRelease();
310 }
311
312 // Previously, unsafe behavior could be triggered when 'this' is ComPtr<IInspectable> or ComPtr<IUnknown> and CopyTo is used to copy to another type U.
313 // The user will use operator& to convert the destination into a ComPtrRef, which can then implicit cast to IInspectable** and IUnknown**.
314 // If this overload of CopyTo is not present, it will implicitly cast to IInspectable or IUnknown and match CopyTo(InterfaceType**) instead.
315 // A valid polymoprhic downcast requires run-time type checking via QueryInterface, so CopyTo(InterfaceType**) will break type safety.
316 // This overload matches ComPtrRef before the implicit cast takes place, preventing the unsafe downcast.
317 template <typename U>
318 HRESULT CopyTo(Details::ComPtrRef<ComPtr<U>> ptr, typename std::enable_if<
319 (std::is_same<T, IUnknown>::value)
320 && !std::is_same<U*, T*>::value, void *>::type * = 0) const throw()
321 {
322 return ptr_->QueryInterface(uuidof<U>(), ptr);
323 }
324
325 HRESULT CopyTo(_Outptr_result_maybenull_ InterfaceType** ptr) const throw()
326 {
327 InternalAddRef();
328 *ptr = ptr_;
329 return S_OK;
330 }
331
332 HRESULT CopyTo(REFIID riid, _Outptr_result_nullonfailure_ void** ptr) const throw()
333 {
334 return ptr_->QueryInterface(riid, ptr);
335 }
336
337 template<typename U>
338 HRESULT CopyTo(_Outptr_result_nullonfailure_ U** ptr) const throw()
339 {
340 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(ptr));
341 }
342
343 // query for U interface
344 template<typename U>
345 HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
346 {
347 return ptr_->QueryInterface(uuidof<U>(), p);
348 }
349
350 // query for U interface
351 template<typename U>
352 HRESULT As(_Out_ ComPtr<U>* p) const throw()
353 {
354 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
355 }
356
357 // query for riid interface and return as IUnknown
358 HRESULT AsIID(REFIID riid, _Out_ ComPtr<IUnknown>* p) const throw()
359 {
360 return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
361 }
362
363 }; // ComPtr
364
365
366 namespace Details
367 {
368 // Empty struct used as default template parameter
369 class Nil
370 {
371 };
372
373 // Empty struct used for validating template parameter types in Implements
374 struct ImplementsBase
375 {
376 };
377
378 class RuntimeClassBase
379 {
380 protected:
381 template<typename T>
382 static HRESULT AsIID(_In_ T* implements, REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject) noexcept
383 {
384 *ppvObject = nullptr;
385 bool isRefDelegated = false;
386 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
387 if (InlineIsEqualGUID(riid, uuidof<IUnknown>()))
388 {
389 *ppvObject = implements->CastToUnknown();
390 static_cast<IUnknown*>(*ppvObject)->AddRef();
391 return S_OK;
392 }
393
394 HRESULT hr = implements->CanCastTo(riid, ppvObject, &isRefDelegated);
395 if (SUCCEEDED(hr) && !isRefDelegated)
396 {
397 static_cast<IUnknown*>(*ppvObject)->AddRef();
398 }
399
400#ifdef _MSC_VER
401#pragma warning(push)
402#pragma warning(disable: 6102) // '*ppvObject' is used but may not be initialized
403#endif
404 _Analysis_assume_(SUCCEEDED(hr) || (*ppvObject == nullptr));
405#ifdef _MSC_VER
406#pragma warning(pop)
407#endif
408 return hr;
409 }
410
411 public:
412 HRESULT RuntimeClassInitialize() noexcept
413 {
414 return S_OK;
415 }
416 };
417
418 // Interface traits provides casting and filling iids methods helpers
419 template<typename I0>
420 struct InterfaceTraits
421 {
422 typedef I0 Base;
423
424 template<typename T>
425 static Base* CastToBase(_In_ T* ptr) noexcept
426 {
427 return static_cast<Base*>(ptr);
428 }
429
430 template<typename T>
431 static IUnknown* CastToUnknown(_In_ T* ptr) noexcept
432 {
433 return static_cast<IUnknown*>(static_cast<Base*>(ptr));
434 }
435
436 template <typename T>
437 _Success_(return == true)
438 static bool CanCastTo(_In_ T* ptr, REFIID riid, _Outptr_ void **ppv) noexcept
439 {
440 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
441 if (InlineIsEqualGUID(riid, uuidof<Base>()))
442 {
443 *ppv = static_cast<Base*>(ptr);
444 return true;
445 }
446
447 return false;
448 }
449 };
450
451 // Specialization for Nil parameter
452 template<>
453 struct InterfaceTraits<Nil>
454 {
455 typedef Nil Base;
456
457 template <typename T>
458 _Success_(return == true)
459 static bool CanCastTo(_In_ T*, REFIID, _Outptr_ void **) noexcept
460 {
461 return false;
462 }
463 };
464
465 // ChainInterfaces - template allows specifying a derived COM interface along with its class hierarchy to allow QI for the base interfaces
466 template <typename I0, typename I1, typename I2 = Nil, typename I3 = Nil,
467 typename I4 = Nil, typename I5 = Nil, typename I6 = Nil,
468 typename I7 = Nil, typename I8 = Nil, typename I9 = Nil>
469 struct ChainInterfaces : I0
470 {
471 protected:
472 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) throw()
473 {
474 typename InterfaceTraits<I0>::Base* ptr = InterfaceTraits<I0>::CastToBase(this);
475
476 return (InterfaceTraits<I0>::CanCastTo(this, riid, ppv) ||
477 InterfaceTraits<I1>::CanCastTo(ptr, riid, ppv) ||
478 InterfaceTraits<I2>::CanCastTo(ptr, riid, ppv) ||
479 InterfaceTraits<I3>::CanCastTo(ptr, riid, ppv) ||
480 InterfaceTraits<I4>::CanCastTo(ptr, riid, ppv) ||
481 InterfaceTraits<I5>::CanCastTo(ptr, riid, ppv) ||
482 InterfaceTraits<I6>::CanCastTo(ptr, riid, ppv) ||
483 InterfaceTraits<I7>::CanCastTo(ptr, riid, ppv) ||
484 InterfaceTraits<I8>::CanCastTo(ptr, riid, ppv) ||
485 InterfaceTraits<I9>::CanCastTo(ptr, riid, ppv)) ? S_OK : E_NOINTERFACE;
486 }
487
488 IUnknown* CastToUnknown() throw()
489 {
490 return InterfaceTraits<I0>::CastToUnknown(this);
491 }
492 };
493
494 // Helper template used by Implements. This template traverses a list of interfaces and adds them as base class and information
495 // to enable QI.
496 template <typename ...TInterfaces>
497 struct ImplementsHelper;
498
499 template <typename T>
500 struct ImplementsMarker
501 {};
502
503 template <typename I0, bool isImplements>
504 struct MarkImplements;
505
506 template <typename I0>
507 struct MarkImplements<I0, false>
508 {
509 typedef I0 Type;
510 };
511
512 template <typename I0>
513 struct MarkImplements<I0, true>
514 {
515 typedef ImplementsMarker<I0> Type;
516 };
517
518 // AdjustImplements pre-processes the type list for more efficient builds.
519 template <typename ...Bases>
520 struct AdjustImplements;
521
522 template <typename I0, typename ...Bases>
523 struct AdjustImplements<I0, Bases...>
524 {
525 typedef ImplementsHelper<typename MarkImplements<I0, std::is_base_of<ImplementsBase, I0>::value>::Type, Bases...> Type;
526 };
527
528 // Use AdjustImplements to remove instances of "Nil" from the type list.
529 template <typename ...Bases>
530 struct AdjustImplements<Nil, Bases...>
531 {
532 typedef typename AdjustImplements<Bases...>::Type Type;
533 };
534
535 template <>
536 struct AdjustImplements<>
537 {
538 typedef ImplementsHelper<> Type;
539 };
540
541 // Specialization handles unadorned interfaces
542 template <typename I0, typename ...TInterfaces>
543 struct ImplementsHelper<I0, TInterfaces...> :
544 I0,
545 AdjustImplements<TInterfaces...>::Type
546 {
547 template <typename ...> friend struct ImplementsHelper;
548 friend class RuntimeClassBase;
549
550 protected:
551
552 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
553 {
554 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
555 if (InlineIsEqualGUID(riid, uuidof<I0>()))
556 {
557 *ppv = reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
558 return S_OK;
559 }
560 return AdjustImplements<TInterfaces...>::Type::CanCastTo(riid, ppv, pRefDelegated);
561 }
562
563 IUnknown* CastToUnknown() noexcept
564 {
565 return reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
566 }
567 };
568
569
570 // Selector is used to "tag" base interfaces to be used in casting, since a runtime class may indirectly derive from
571 // the same interface or Implements<> template multiple times
572 template <typename base, typename disciminator>
573 struct Selector : public base
574 {
575 };
576
577 // Specialization handles types that derive from ImplementsHelper (e.g. nested Implements).
578 template <typename I0, typename ...TInterfaces>
579 struct ImplementsHelper<ImplementsMarker<I0>, TInterfaces...> :
580 Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>,
581 Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>
582 {
583 template <typename ...> friend struct ImplementsHelper;
584 friend class RuntimeClassBase;
585
586 protected:
587 typedef Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> CurrentType;
588 typedef Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> BaseType;
589
590 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
591 {
592 HRESULT hr = CurrentType::CanCastTo(riid, ppv);
593 if (hr == E_NOINTERFACE)
594 {
595 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
596 }
597 return hr;
598 }
599
600 IUnknown* CastToUnknown() noexcept
601 {
602 // First in list wins.
603 return CurrentType::CastToUnknown();
604 }
605 };
606
607 // terminal case specialization.
608 template <>
609 struct ImplementsHelper<>
610 {
611 template <typename ...> friend struct ImplementsHelper;
612 friend class RuntimeClassBase;
613
614 protected:
615 HRESULT CanCastTo(_In_ REFIID /*riid*/, _Outptr_ void ** /*ppv*/, bool * /*pRefDelegated*/ = nullptr) noexcept
616 {
617 return E_NOINTERFACE;
618 }
619
620 // IUnknown* CastToUnknown() noexcept; // not defined for terminal case.
621 };
622
623 // Specialization handles chaining interfaces
624 template <typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
625 struct ImplementsHelper<ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> :
626 ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>,
627 AdjustImplements<TInterfaces...>::Type
628 {
629 template <typename ...> friend struct ImplementsHelper;
630 friend class RuntimeClassBase;
631
632 protected:
633 typedef typename AdjustImplements<TInterfaces...>::Type BaseType;
634
635 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
636 {
637 HRESULT hr = ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CanCastTo(riid, ppv);
638 if (FAILED(hr))
639 {
640 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
641 }
642
643 return hr;
644 }
645
646 IUnknown* CastToUnknown() noexcept
647 {
648 return ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CastToUnknown();
649 }
650 };
651
652 // Implements - template implementing QI using the information provided through its template parameters
653 // Each template parameter has to be one of the following:
654 // * COM Interface
655 // * A class that implements one or more COM interfaces
656 // * ChainInterfaces template
657 template <typename I0, typename ...TInterfaces>
658 struct Implements :
659 AdjustImplements<I0, TInterfaces...>::Type,
660 ImplementsBase
661 {
662 public:
663 typedef I0 FirstInterface;
664 protected:
665 typedef typename AdjustImplements<I0, TInterfaces...>::Type BaseType;
666 template <typename ...> friend struct ImplementsHelper;
667 friend class RuntimeClassBase;
668
669 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) noexcept
670 {
671 return BaseType::CanCastTo(riid, ppv);
672 }
673
674 IUnknown* CastToUnknown() noexcept
675 {
676 return BaseType::CastToUnknown();
677 }
678 };
679
680 // Used on RuntimeClass to protect it from being constructed with new
681 class DontUseNewUseMake
682 {
683 private:
684 void* operator new(size_t) noexcept
685 {
686 assert(false);
687 return 0;
688 }
689
690 public:
691 void* operator new(size_t, _In_ void* placement) noexcept
692 {
693 return placement;
694 }
695 };
696
697 template <typename ...TInterfaces>
698 class RuntimeClassImpl :
699 public AdjustImplements<TInterfaces...>::Type,
700 public RuntimeClassBase,
701 public DontUseNewUseMake
702 {
703 public:
704 STDMETHOD(QueryInterface)(REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject)
705 {
706 return Super::AsIID(this, riid, ppvObject);
707 }
708
709 STDMETHOD_(ULONG, AddRef)()
710 {
711 return InternalAddRef();
712 }
713
714 STDMETHOD_(ULONG, Release)()
715 {
716 ULONG ref = InternalRelease();
717 if (ref == 0)
718 {
719 delete this;
720 }
721
722 return ref;
723 }
724
725 protected:
726 using Super = RuntimeClassBase;
727 static const LONG c_lProtectDestruction = -(LONG_MAX / 2);
728
729 RuntimeClassImpl() noexcept = default;
730
731 virtual ~RuntimeClassImpl() noexcept
732 {
733 // Set refcount_ to -(LONG_MAX/2) to protect destruction and
734 // also catch mismatched Release in debug builds
735 refcount_ = static_cast<ULONG>(c_lProtectDestruction);
736 }
737
738 ULONG InternalAddRef() noexcept
739 {
740 return ++refcount_;
741 }
742
743 ULONG InternalRelease() noexcept
744 {
745 return --refcount_;
746 }
747
748 unsigned long GetRefCount() const noexcept
749 {
750 return refcount_;
751 }
752
753 std::atomic<ULONG> refcount_{1};
754 };
755 }
756
757 template <typename ...TInterfaces>
758 class Base : public Details::RuntimeClassImpl<TInterfaces...>
759 {
760 Base(const Base&) = delete;
761 Base& operator=(const Base&) = delete;
762
763 protected:
764 HRESULT CustomQueryInterface(REFIID /*riid*/, _Outptr_result_nullonfailure_ void** /*ppvObject*/, _Out_ bool *handled)
765 {
766 *handled = false;
767 return S_OK;
768 }
769
770 public:
771 Base() throw() = default;
772 typedef Base RuntimeClassT;
773 };
774
775 // Creates a Nano-COM object wrapped in a smart pointer.
776 template <typename T, typename ...TArgs>
777 ComPtr<T> Make(TArgs&&... args)
778 {
779 ComPtr<T> object;
780
781 std::unique_ptr<unsigned char[]> buffer(new unsigned char[sizeof(T)]);
782 if (buffer)
783 {
784 T* ptr = new (buffer.get())T(std::forward<TArgs>(args)...);
785 object.Attach(ptr);
786 buffer.release();
787 }
788
789 return object;
790 }
791
792 using Details::ChainInterfaces;
793}
794}
795
796// Overloaded global function to provide to IID_PPV_ARGS that support Details::ComPtrRef
797template<typename T>
798void** IID_PPV_ARGS_Helper(Microsoft::WRL::Details::ComPtrRef<T> pp) throw()
799{
800 return pp;
801} \ No newline at end of file
diff --git a/contrib/DirectX-Headers/meson.build b/contrib/DirectX-Headers/meson.build
new file mode 100644
index 0000000..3174221
--- /dev/null
+++ b/contrib/DirectX-Headers/meson.build
@@ -0,0 +1,35 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4project('DirectX-Headers', 'cpp', version : '1.4.9',
5 default_options : ['cpp_std=c++14'])
6
7inc_dirs = [include_directories('include', is_system : true)]
8install_inc_subdirs = ['']
9
10if host_machine.system() != 'windows'
11 inc_dirs += include_directories('include/wsl/stubs', is_system : true)
12 install_inc_subdirs += ['', 'wsl/stubs', 'directx']
13endif
14
15guids_lib = static_library('DirectX-Guids', 'src/dxguids.cpp', include_directories : inc_dirs, install : true)
16
17dep_dxheaders = declare_dependency(
18 link_with : guids_lib,
19 include_directories : inc_dirs)
20
21if meson.version().version_compare('>=0.54.0')
22 meson.override_dependency('DirectX-Headers', dep_dxheaders)
23endif
24
25if not meson.is_subproject() and get_option('build-test')
26 subdir('test')
27endif
28
29pkg = import('pkgconfig')
30pkg.generate(name : 'DirectX-Headers',
31 description : 'Headers for using D3D12',
32 libraries : [guids_lib],
33 version : meson.project_version(),
34 subdirs : install_inc_subdirs)
35install_subdir('include', install_dir : '')
diff --git a/contrib/DirectX-Headers/meson_options.txt b/contrib/DirectX-Headers/meson_options.txt
new file mode 100644
index 0000000..af5cd47
--- /dev/null
+++ b/contrib/DirectX-Headers/meson_options.txt
@@ -0,0 +1,7 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4option('build-test',
5 type : 'boolean',
6 value : true,
7 description : 'Build the test')
diff --git a/contrib/DirectX-Headers/src/dxguids.cpp b/contrib/DirectX-Headers/src/dxguids.cpp
new file mode 100644
index 0000000..8b6d116
--- /dev/null
+++ b/contrib/DirectX-Headers/src/dxguids.cpp
@@ -0,0 +1,12 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// This file's sole purpose is to initialize the GUIDs declared using the DEFINE_GUID macro.
5#define INITGUID
6
7#ifndef _WIN32
8#include <wsl/winadapter.h>
9#endif
10
11#include <directx/dxcore.h>
12#include <directx/d3d12.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/CMakeLists.txt b/contrib/DirectX-Headers/test/CMakeLists.txt
new file mode 100644
index 0000000..cba8b59
--- /dev/null
+++ b/contrib/DirectX-Headers/test/CMakeLists.txt
@@ -0,0 +1,6 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4project(DirectX-Headers-Test CXX)
5add_executable(DirectX-Headers-Test test.cpp)
6target_link_libraries(DirectX-Headers-Test DirectX-Headers DirectX-Guids d3d12 dxcore) \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/meson.build b/contrib/DirectX-Headers/test/meson.build
new file mode 100644
index 0000000..0e43a91
--- /dev/null
+++ b/contrib/DirectX-Headers/test/meson.build
@@ -0,0 +1,9 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4cpp = meson.get_compiler('cpp')
5d3d12_lib = cpp.find_library('d3d12')
6dxcore_lib = cpp.find_library('dxcore')
7
8headers_test = executable('DirectX-Headers-Test', 'test.cpp',
9 dependencies : [dep_dxheaders, d3d12_lib, dxcore_lib]) \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/test.cpp b/contrib/DirectX-Headers/test/test.cpp
new file mode 100644
index 0000000..8f34d73
--- /dev/null
+++ b/contrib/DirectX-Headers/test/test.cpp
@@ -0,0 +1,32 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#ifndef _WIN32
5#include <wsl/winadapter.h>
6#endif
7
8#include <directx/d3d12.h>
9#include <directx/dxcore.h>
10#include <directx/d3dx12.h>
11#include "dxguids/dxguids.h"
12
13int main()
14{
15 IDXCoreAdapter *adapter = nullptr;
16 ID3D12Device *device = nullptr;
17
18 {
19 IDXCoreAdapterFactory *factory = nullptr;
20 if (FAILED(DXCoreCreateAdapterFactory(&factory)))
21 return -1;
22
23 IDXCoreAdapterList *list = nullptr;
24 if (FAILED(factory->CreateAdapterList(1, &DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, &list)))
25 return -1;
26
27 if (FAILED(list->GetAdapter(0, &adapter)))
28 return -1;
29 }
30
31 return D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device));
32}